本仓库提供 audio8_tts Preview 版模型、Hugging Face remote code、推理工具和独立的 SFT 外加用于本地的 webui 且实现了流式传输。 训练流程,支持多语言语音生成和零样本音色克隆。
Preview 说明: 当前版本的语言覆盖仍然有限,建议优先在下列 11 种语言中使用。后续版本将 持续补齐多语言和中文方言能力。
!GUI脚本会自动切换到.venv环境下运行,拉取依赖时必须注意。

推荐使用 Python 3.10 或更高版本以及支持 CUDA 的 GPU。
# 0) 建 venv
python -m venv .venv
# 1) 先安推理 + GUI 周边
.\.venv\Scripts\python.exe -m pip install `
"numpy>=1.26,<3" `
"soundfile>=0.12" `
"tqdm>=4.66" `
"gradio>=4.44,<6" `
"imageio-ffmpeg>=0.4.9" `
"psutil>=5.9"
# 2) 在装 transformers 生态,一次性装齐,让 pip torchaudio会把hub拉到兼容版本。
.\.venv\Scripts\python.exe -m pip install `
"torch>=2.5.0,<3" `
"torchaudio>=2.5.0,<3" `
"transformers>=4.57,<5" `
"huggingface_hub>=0.34,<1.0" `
"tokenizers>=0.22,<=0.23" `
"safetensors>=0.4.3"torch 2.5.1
torchaudio 2.5.1
transformers 4.57.6
huggingface_hub 0.36.2
tokenizers 0.22.2
safetensors 0.8.0
numpy 2.2.6
soundfile 0.14.0
tqdm 4.70.1
gradio 6.27.0
imageio-ffmpeg 0.6.0
psutil 5.9
Preview 模型当前表现较好、推荐使用的语言如下:
| Language | 语言 |
|---|---|
| Cantonese | 粤语 |
| Chinese | 中文 |
| Dutch | 荷兰语 |
| English | 英语 |
| French | 法语 |
| German | 德语 |
| Italian | 意大利语 |
| Japanese | 日语 |
| Korean | 韩语 |
| Polish | 波兰语 |
| Spanish | 西班牙语 |
audio8_tts 沿用了 Fish Audio S2 Pro 的 DualAR 架构思路。
| 组件 | 配置 |
|---|---|
| 主模型 | 601,159,424 参数,不包含 codec |
| Slow AR | 24 层、896 维、14 个 attention head、2 个 KV head |
| Fast AR | 4 层、896 维、14 个 attention head、2 个 KV head |
| 声学 token | 10 个 codebook,每个 codebook 包含 4,096 个条目 |
| Codec | 44.1 kHz,每个模型帧 2,048 个采样点,约 21.5 帧/秒 |
| 上下文 | 最多 2,048 个打包后的文本/音频位置 |
Slow AR 每个音频帧生成一个 semantic token;Fast AR 根据 slow hidden state 和当前帧已经生成的 codebook,继续生成该帧的十个 codec codebook。推理时 slow AR 和 fast AR 都使用静态 KV cache。 Checkpoint 内置神经音频 codec,不需要额外下载参考音频编码器或波形解码器。
请从 Hugging Face
下载模型,并将其放入仓库的 model/ 文件夹中。默认本地模型路径为
model/audio8_tts_0_6B_preview/。所有命令也可以通过 --model 接收 Hugging Face 模型 ID。
为获得更好的合成效果,建议单次输入不超过 150 个字。文本过长可能影响生成质量,请根据 需要拆分为较短的片段。
参考文本应当与参考音频中实际说出的内容一致。
python audio8_tts_infer.py \
--text "欢迎使用 audio8_tts。" \
--reference-audio examples/reference.wav \
--reference-text "参考录音对应的准确文本。" \
--output outputs/clone.wavpython audio8_tts_infer.py \
--text "这条语音不使用参考音色。" \
--output outputs/no_reference.wav输入文件每行是一个独立 JSON 对象。相对音频路径相对于 JSONL 文件所在目录解析。
{"id":"sample_001","text":"目标文本","reference_audio":"audio/ref.wav","reference_text":"参考文本"}
{"id":"sample_002","text":"不使用参考音色的文本"}python audio8_tts_infer.py \
--input-jsonl data/prompts.jsonl \
--output-dir outputs/batch \
--batch-size 2批量命令会生成 manifest.jsonl 和 failures.jsonl。除非传入 --overwrite,否则已有 WAV 会
被跳过。采样和 codec codes 保存参数可通过 python audio8_tts_infer.py --help 查看。
onnx_runtime/ 提供独立的 CPU 部署方案:Slow/Fast AR 使用
weight-only INT4,activation 和 KV cache 使用 FP16,codec 使用 FP16。它包含
命令行推理、本地网页与 HTTP 服务、流式 PCM 输出和参考音频音色注册,运行时不依赖
PyTorch 或 Transformers。
在 Apple M2 测试环境中,在线模型 session 约占 1 GiB 内存。注册音色前会先释放 在线 session,再单独加载 codec encoder,从而控制峰值内存。
从 Audio8-TTS-Preview-0.6B-ONNX-INT4 下载模型,并参阅 ONNX Runtime 中文指南。
sglang_omni/ 中的适配器提供兼容 OpenAI API 的推理服务,包含 SGLang
paged attention、动态 batching、Fast AR 固定 KV cache、参考音频编码和 waveform 解码。
它以独立的 audio8_tts 模型插件安装,不会覆盖 SGLang Omni 核心文件。
适配器使用了 SGLang Omni 的内部接口,因此部署时应固定到以下已验证版本,不要直接使用最新
main 分支。
| 依赖 | 已验证版本 |
|---|---|
| SGLang Omni | 68a572348837f7b004857b4b07993c20ade4c017(0.1.0) |
| SGLang | 0.5.8 |
| PyTorch | 2.9.1+cu128 |
| Transformers | 4.57.1 |
| 精度 | BF16 |
Audio8-TTS-Preview-0.1b 将纯注意力的慢速 AR 主干替换为 Falcon-H1 混合结构
(Mamba 2 SSM + 注意力)。适配器会自动从 config.json 检测(slow_backbone: falcon_h1 或存在 mamba_d_ssm 字段)并切换到 eager 混合路径:慢速主干为每个
请求维护一个 FalconHybridMambaAttentionDynamicCache,而快速码本 AR、语义采样
与声码器与 0.6B 路径完全共用,0.6B 路径不受影响。
export MODEL=/models/Audio8-TTS-Preview-0.1b
export CONFIG=./sglang_omni/configs/audio8_tts_0_1b.yaml
export MODEL_NAME=audio8/tts-0.1b
CUDA_VISIBLE_DEVICES=0 \
SGLANG_OMNI_ROOT="${SGLANG_OMNI_ROOT}" \
MODEL="${MODEL}" \
CONFIG="${CONFIG}" \
MODEL_NAME="${MODEL_NAME}" \
./sglang_omni/scripts/run_server.sh由于 Mamba 主干自行维护混合缓存、不占用 SGLang KV 页,适配器会为该模型关闭 CUDA Graph 并限制静态显存比例。慢速主干在 prefill 与增量 decode 上与 Transformers 的 Falcon-H1 实现逐位一致。
单流 warm latency 在单张 NVIDIA H20 上测试,使用 BF16、CUDA Graph、greedy decoding, 并生成 128 帧。输出 WAV 时长为 5.85-5.94 秒,不包含冷启动和编译时间。RTF 越低越好。
| SGLang Omni 适配器 | Warm p50 latency | RTF |
|---|---|---|
| 当前实现 | 0.691 s | 0.116 |
配置、实现细节和验证结果请参阅 SGLang Omni 实现与评测报告。
在 Audio8 TTS 仓库根目录执行以下命令。示例使用 Python 3.12 和
uv。
export SGLANG_OMNI_ROOT=/opt/sglang-omni
export MODEL=/models/Audio8-TTS-Preview-0.6b
git clone https://github.com/sgl-project/sglang-omni.git "${SGLANG_OMNI_ROOT}"
git -C "${SGLANG_OMNI_ROOT}" checkout 68a572348837f7b004857b4b07993c20ade4c017
uv venv .venv-sglang --python 3.12
source .venv-sglang/bin/activate
uv pip install -v -e "${SGLANG_OMNI_ROOT}"
hf download AutoArk-AI/Audio8-TTS-Preview-0.6b --local-dir "${MODEL}"
./sglang_omni/scripts/install_adapter.sh "${SGLANG_OMNI_ROOT}"
python3 ./sglang_omni/scripts/verify_install.py --model-path "${MODEL}"如果 SGLang Omni 已通过 wheel 或 site-packages 安装,可以定位其包目录后安装适配器:
SGLANG_OMNI_PACKAGE="$(python3 -c 'import importlib.util, pathlib; s=importlib.util.find_spec("sglang_omni"); assert s and s.origin; print(pathlib.Path(s.origin).parent)')"
./sglang_omni/scripts/install_adapter.sh "${SGLANG_OMNI_PACKAGE}"CUDA_VISIBLE_DEVICES=0 \
SGLANG_OMNI_ROOT="${SGLANG_OMNI_ROOT}" \
MODEL="${MODEL}" \
AUDIO8_TTS_ENABLE_TORCH_COMPILE=1 \
HOST=0.0.0.0 \
PORT=8010 \
./sglang_omni/scripts/run_server.sh默认的 fa3 attention backend 适用于 H20、H100 等 Hopper GPU。RTX 5090 等消费级
Blackwell GPU 的计算能力为 (12, 0),没有对应的 FA3 kernel image,适配器会自动识别
并为 SGLang Slow AR 路径选择 FlashInfer;此时短序列固定 KV cache 的 Fast head 会使用
PyTorch SDPA。无需额外配置。
在任意 GPU 上显式设置该环境变量仍会覆盖自动检测结果:
AUDIO8_TTS_ATTENTION_BACKEND=flashinfer \
CUDA_VISIBLE_DEVICES=0 \
SGLANG_OMNI_ROOT="${SGLANG_OMNI_ROOT}" \
MODEL="${MODEL}" \
./sglang_omni/scripts/run_server.sh默认配置使用模型名 audio8/tts-0.6b、BF16、单卡、0.2 静态显存比例和最多 32 个并发
请求。主要运行参数包括 MODEL_NAME、AUDIO8_TTS_MEM_FRACTION_STATIC、
AUDIO8_TTS_MAX_RUNNING_REQUESTS、AUDIO8_TTS_CHUNKED_PREFILL_SIZE 和
AUDIO8_TTS_DISABLE_CUDA_GRAPH。开启 Torch compile 后,适配器沿用 SGLang 原生的 batch
策略;只有需要明确限制 compile 上限时才设置 AUDIO8_TTS_TORCH_COMPILE_MAX_BS。
AUDIO8_TTS_ATTENTION_BACKEND 默认为 fa3;在没有 FA3 kernel image 的 GPU(如消费级
Blackwell)上默认为 flashinfer,显式设置可覆盖。如果运行依赖安装在单独的
site-packages 目录中,请设置
SGLANG_OMNI_SITE_PACKAGES。
- 如果
sgl_kernel导入失败,请安装系统中提供libnuma的软件包,例如numactl或libnuma1。 - CUDA toolkit 的
bin目录需要加入PATH。如果deep_gemmJIT 编译时找不到nvcc,还需要将CUDA_PATH指向 CUDA toolkit 根目录。 - Transformers 应保持在支持的 4.x 范围(
>=4.57.0,<5)。Transformers 5.x 可能使该 custom-code 模型生成无效的全零 codes。
无参考音频生成:
curl -sS --fail-with-body \
-H 'Content-Type: application/json' \
-d '{
"model": "audio8/tts-0.6b",
"input": "你好,这是 Audio8 TTS 服务测试。",
"response_format": "wav",
"max_new_tokens": 256,
"temperature": 0.8,
"top_p": 0.95,
"top_k": 50
}' \
http://127.0.0.1:8010/v1/audio/speech \
-o audio8.wav使用一个参考音色生成:
curl -sS --fail-with-body \
-H 'Content-Type: application/json' \
-d '{
"model": "audio8/tts-0.6b",
"input": "这句话使用参考音色生成。",
"response_format": "wav",
"temperature": 0.8,
"top_p": 0.95,
"top_k": 50,
"references": [{
"audio_path": "/data/reference.wav",
"text": "参考录音对应的准确文本。"
}]
}' \
http://127.0.0.1:8010/v1/audio/speech \
-o audio8_clone.wav参考音频路径必须在服务运行环境中可见。当前适配器支持 TP=1 和每个请求一个 reference。
设置 "stream": true 可在生成过程中接收 SSE 音频分块。使用
"response_format": "pcm" 开销最低,每个事件的 audio.data 包含 Base64 编码音频。
流式输出默认每 12 个 codec frames 生成一块,使用 128 帧 decoder context 和 1 帧边界
guard。可通过 AUDIO8_TTS_STREAM_CHUNK_FRAMES、
AUDIO8_TTS_STREAM_CONTEXT_FRAMES 和 AUDIO8_TTS_STREAM_GUARD_FRAMES 调整。
流式输出是服务端可选项:启动服务时设置 AUDIO8_TTS_STREAM_ENABLED=1 才会启用 SSE
流式;默认关闭,请求会在生成完成后一次性返回完整音频(请求中的 "stream": true
此时会被忽略)。默认非流式以获得更高的吞吐和稳定的显存占用。
response_format 为 codes/codec/npy 时始终非流式,直接返回 codec codes。
运行以下 smoke test 可以验证部署:
BASE_URL=http://127.0.0.1:8010 ./sglang_omni/scripts/smoke_test.sh
python3 ./sglang_omni/scripts/stream_smoke_test.py \
--base-url http://127.0.0.1:8010 \
--output /tmp/audio8_stream.wav构建镜像时,请在安装 SGLang Omni 包及其 Python 依赖后追加
sglang_omni/Dockerfile.snippet。
先安装训练依赖:
pip install -r requirements-train.txt目标 audio 必填;reference_audio 和 reference_text 可选,但必须同时出现。
{"id":"utt_001","text":"目标音频文本","audio":"audio/target.wav","reference_audio":"audio/reference.wav","reference_text":"参考音频文本"}
{"id":"utt_002","text":"另一条文本","audio":"audio/another.wav"}python audio8_tts_prepare.py \
--input-jsonl data/train.jsonl \
--output-jsonl prepared_data/train.jsonl \
--batch-size 4生成的 manifest 使用相对路径指向经过校验的 [10, T] NumPy 数组。除非传入
--overwrite,否则已有的有效数组会被复用。
单卡:
TRAIN_JSONL=prepared_data/train.jsonl \
NPROC_PER_NODE=1 \
bash audio8_tts_sft.sh单机八卡:
TRAIN_JSONL=prepared_data/train.jsonl \
NPROC_PER_NODE=8 \
BATCH_SIZE=2 \
GRADIENT_ACCUMULATION_STEPS=8 \
bash audio8_tts_sft.sh多机训练时,在每个节点设置 NNODES、NODE_RANK、MASTER_ADDR 和 MASTER_PORT。常用超参
和输出路径可通过 audio8_tts_sft.sh 中列出的环境变量覆盖,也可以在命令末尾附加 Transformers
参数。
SFT 同时优化 slow semantic/EOS loss 和 fast codebook teacher-forcing loss。只训练其中一个分支时,
可设置 FREEZE_SLOW_AR=true 或 FREEZE_FAST_AR=true。导出目录仍可通过标准 AutoModel 和
AutoProcessor 接口配合 trust_remote_code=True 加载。
Audio8 TTS Preview 仅有 0.6B 参数,是本次对比中规模最小的模型。尽管参数量仅为其他模型的 一小部分,它在以下基准测试中依然达到业界领先 TTS 模型的第一梯队水平。其中,Audio8 TTS Preview 在 Seed-TTS 上取得了最低的英文 WER 和有竞争力的中文 CER,并在 CV3 多语言评测中 保持了具有竞争力的整体表现。
WER/CER 越低越好,SIM 越高越好。Seed-TTS 的相似度统一显示为百分数。
| 模型 | 参数量 | EN WER / SIM | ZH CER / SIM | Hard ZH CER / SIM |
|---|---|---|---|---|
| Audio8 TTS Preview | 0.6B | 1.506 / 63.2 | 0.950 / 73.1 | 11.510 / 68.7 |
| Fish S2 Pro | 4.6B | 1.607 / 64.6 | 1.038 / 73.8 | 10.149 / 70.1 |
| Higgs Audio v2 | 4.7B | 1.524 / 66.4 | 0.806 / 72.1 | 10.622 / 69.3 |
| CosyVoice3-1.5B | 1.5B | 2.22 / 72.0 | 1.12 / 78.1 | 5.83 / 75.8 |
| MOSS-TTS | 8.5B | 1.85 / 73.4 | 1.20 / 78.8 | - |
| VoxCPM2 | 2.3B | 1.84 / 75.3 | 0.97 / 79.5 | 8.13 / 75.3 |
| 模型 | 参数量 | zh | en | hard-zh | hard-en | ja | ko | de | es | fr | it | ru |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Audio8 TTS Preview | 0.6B | 3.205 | 3.128 | 10.535 | 5.997 | 7.205 | 4.223 | 3.447 | 3.641 | 8.790 | 4.790 | - |
| Fish S2 Pro | 4.6B | 3.600 | 3.493 | 10.588 | 7.349 | 5.139 | 4.111 | 3.605 | 2.972 | 8.600 | 4.229 | 4.702 |
| Higgs Audio v2 | 4.7B | 3.378 | 3.404 | 10.424 | 5.754 | 4.742 | 4.260 | 3.300 | 2.929 | 9.425 | 3.555 | 5.423 |
| CosyVoice3-1.5B | 1.5B | 3.91 | 4.99 | 9.77 | 10.55 | 7.57 | 5.69 | 6.43 | 4.47 | 11.8 | 10.5 | 6.64 |
| VoxCPM2 | 2.3B | 3.65 | 5.00 | 8.55 | 8.48 | 5.96 | 5.69 | 4.77 | 3.80 | 9.85 | 4.25 | 5.21 |
参数量直接根据已发布的权重张量统计。MOSS-TTS 包含 8,489,841,664 个参数;VoxCPM2 主模型 包含 2,290,004,544 个参数,单独的 AudioVAE 不计入本次参数量对比。
Fish S2 Pro 因官方评测使用自身 normalizer 而重新评测。Higgs Audio v2 因未公布具体数值而自行 评测。其他基线均采用 VoxCPM 官方仓库汇总的各项目官方值。
不同 normalizer 和评测器下的跨项目数值只能作为参考,不能视为严格同口径排名;评测覆盖也不 会将 Preview 的正式支持范围扩展到前述 11 种语言之外。
- 当前是 Preview 模型,多语言和中文方言覆盖仍然有限。
- 过长、噪声较大或转写不准确的参考音频可能降低稳定性和音色相似度。
- 合成语音可能被用于冒充或传播虚假信息。克隆他人声音前应获得许可,并在适当场景明确标注合成内容。
- 部署前应针对具体业务完成准确性、安全性和合规测试。
本仓库代码和模型权重采用 Apache License 2.0,归属说明见 NOTICE。
感谢 Fish Audio 团队公开 Fish S2 Pro 使用的 DualAR 架构。


