AutoArk

Audio8-TTS:高保真零样本语音合成

Audio8-TTS-0.6B 与 Audio8-TTS-0.1B

2026 年 09 月 10 日

即刻接入API
Audio8-TTS:高保真零样本语音合成

语音生成常常被简化成质量与可及性之间的取舍。大模型能够牢牢保留说话人的身份,读准棘手的文本,并在不同语言之间自然切换;小模型更容易运行,却往往要牺牲的正是这些能力。真正值得追问的工程问题,不是模型能不能做小,而是在缩小的过程中,一套完整的声音生成链路究竟还能保留下来多少。

Audio8-TTS 系列正是为了解开这组矛盾而设计。所有模型共享同一套生成框架,却分别落在质量—效率曲线的不同位置。Audio8-TTS-0.6B 是以质量为先的版本:它面向多语言、零样本 TTS,即使文本改变、甚至语言本身改变,也尽力让参考说话人的声音保持清晰可辨。Audio8-TTS-0.1B 则把同一思路压缩到 170M 参数,并配套 CPU 原生的 ONNX INT8 运行时。它的定位很具体:The smallest zero-shot TTS worth running.

Audio8-TTS-0.6BAudio8-TTS-0.1B
主模型601,159,424 个参数170M 个参数
音频输出44.1 kHz 神经音频编解码器44.1 kHz 神经音频编解码器
语言重点推荐 11 种语言中文、英文优先;其他语言为实验性支持
主干架构Transformer DualARFalcon-H1 混合式 DualAR
主要部署方式GPU 与 SGLang OmniCPU 原生 ONNX Runtime INT8

0.6B 版本承载这次发布的质量主线;170M 版本则提出了一个更尖锐的问题:当生成模型必须挤进更紧的内存和算力预算时,零样本声音条件还能不能真正有用?两个预览版本放在一起,展示的是同一设计在两个规模上的实现,证明小模型是对同一蓝图的忠实实现,而不是一个固定音色的演示品。

同一声音的两个时钟

一句话的生成同时运行在两个时钟上。慢时钟跟随文本:决定一帧在哪里结束、下一帧从哪里开始,并让句子沿着完整的语义弧线保持连贯。快时钟填入每一帧的音色、咬字和频谱细节——正是这些细节,让声音明确属于某个说话人。让同一个序列模型以两种速率同时工作当然可行,但序列会被无谓拉长,结构与保真也会被迫争夺同一套表示。

Audio8-TTS 用受 Fish Audio S2 Pro 启发的 DualAR 架构解耦这两项工作。Slow AR 每个 codec 帧推进一个语义 token;Fast AR 读取 Slow AR 的隐藏状态,以及当前帧中已经生成的码本,然后渲染这一帧的声学代码。随模型提供的神经音频编解码器会编码可选的参考录音,并在链路末端将生成的代码解码为 44.1 kHz 波形。

Audio8-TTS 技术架构:输入条件、DualAR 生成与音频编解码
图 1:目标文本始终存在;参考音频及其文本是可选条件。Slow AR 确定帧级计划,Fast AR 遍历多层 RVQ,最后由编解码器还原波形。

多层 RVQ:一帧不止一个 Token

编解码器通过 10 个残差码本生成每一帧,每个码本都是一张包含 4,096 个条目的表。前几个码本先搭起这一帧的粗略骨架,后续码本再逐层补上残差,让发音、音色和更细的声学层次变得清晰。Fast AR 沿深度方向预测这组码本,因此模型可以把容量投向细节,而不必让语义流独自承担整条波形。

这也解释了两个自回归分支为什么能自然地拼在一起。Slow AR 以每秒约 21.5 帧的速度推进,展开一条可供长程上下文依赖的稳定序列;Fast AR 则在这个背景上完成更短的帧内解码。整条链路仍然端到端自回归,但 token 预算终于顺着语音的结构分配,而不是把每一层细节都压扁到一条序列中。

Audio8-TTS-0.6B

主模型包含 601,159,424 个参数,不计神经音频编解码器。两个分支的宽度都为 896,但深度刻意做了不对称设计:24 层 Slow AR 有足够空间承载跨时间的语音内容,4 层 Fast AR 则专注于每一帧中的十个码本。

组件配置
Slow AR24 层 Transformer,宽度 896,14 个注意力头,2 个 KV 头
Fast AR4 层 Transformer,宽度 896,14 个注意力头,2 个 KV 头
声学表示10 个码本,每个码本 4,096 个条目
神经音频编解码器44.1 kHz,每个模型帧包含 2,048 个采样点
帧率约 21.5 个模型帧/秒
上下文最多 2,048 个打包后的文本/音频位置

在 44.1 kHz 下,2,048 个采样点约对应 46.4 ms。换算到每秒音频,Slow AR 大约做 21.5 次语义决策,Fast AR 再把十层残差信息填入每一次决策。静态 KV Cache 让早先的位置始终可用,模型不必在每个音频帧重新计算整个前缀。

编解码器随模型一同发布,而且承担两项工作:同一个组件既编码参考音色,又解码生成代码。整个推理路径因此只需要管理这一套组件,不必在链路中额外维护一份独立的音频 checkpoint。

170M 分支

Audio8-TTS-0.1B 保留 DualAR 的契约,并替换 Slow AR 的主干。它不再使用纯 Transformer,而是采用 Falcon-H1,将注意力与 Mamba 2 状态空间层结合起来。正是这一处架构调整,让主模型能够缩小到 170M 参数,同时保留语义到声学的交接方式,并继续输出同样的十个码本。

组件配置
主模型170M 参数,不计音频解码器
Slow AR24 层,宽度 512,8 个注意力头,2 个 KV 头,Mamba d_state=64
Fast AR4 层,宽度 512
声学表示10 个码本,每个码本 4,096 个条目
神经音频编解码器44.1 kHz,每个模型帧包含 2,048 个采样点
上下文最多 2,048 个打包后的文本/音频位置

170M 只描述主生成模型。音频解码器是独立组件,约 120M 参数;要真正生成波形,它仍然会计入存储和内存预算。把两个数字分开,是为了让规模比较保持诚实,而不是假装编解码器不占资源。

Falcon-H1 也重塑了运行时状态。每个请求都为 Slow AR 携带自己的 FalconHybridMambaAttentionDynamicCache;语义采样、Fast AR 和音频解码仍与 0.6B 路径共享。在 GPU 服务中,Mamba 状态沿 eager 路径传递,而不是使用普通的 SGLang KV Page。

让训练目标映照架构

这种拆分不只存在于推理图中,也贯穿训练过程。音频先编码成 [10, T] 的码本索引数组,监督微调再在 teacher forcing 下,同时优化 Slow AR 的语义/EOS 目标和 Fast AR 的码本目标。需要只改动生成链路的一侧时,另一侧可以冻结。

数据接口保持得很小。目标音频是必需项;reference_audio 和 reference_text 可以省略,但只要使用,就必须成对提供。推理时,文本与参考音频共同占用一个打包的 2,048 位置上下文。代码仓库建议单次输入控制在约 150 个字符,并在完整语义边界处分割更长的内容。

零样本音色克隆:无需针对说话人微调

只有当模型能够分辨“谁在说话”和“说了什么”,音色克隆才真正有用。Audio8-TTS 不需要为每位新说话人单独微调,而是把一段较短的录音及其准确文本编码起来,再将这对输入作为新文本的条件。

inputs = processor(
    text=["Welcome to Audio8-TTS."],
    reference_audio=["reference.wav"],
    reference_text=["The exact transcript of the reference recording."],
    return_tensors="pt",
)

with torch.inference_mode():
    output = model.generate(
        **inputs,
        max_new_tokens=1024,
        temperature=0.8,
        top_p=0.95,
        top_k=50,
        do_sample=True,
        return_dict_in_generate=True,
    )
    waveforms, lengths = model.decode_audio(output.codes)

参考文本是条件的一部分,而不是事后附在录音旁边的备注。它把说出的内容与参考波形对齐,为模型留下更干净的说话人身份信号。录音干净、文本准确时,通常能获得最稳定的结果;噪声、过长的片段和错误转写,都会降低稳定性与音色相似度。

参考条件并非必需。如果同时省略两个参考字段,同一 checkpoint 就会变成普通的文本转语音模型。

语言在变,声音不变

Audio8-TTS-0.6B 覆盖中文、荷兰语、英语、法语、德语、意大利语、日语、韩语、波兰语、粤语和西班牙语,并在持续扩展更多语言。更难的考验是跨语言合成:中文参考录音可以引导英文语句,英文参考录音也可以引导中文。文本的语言发生变化,声音锚点却始终不动。

0.1B 的边界更为克制。中文和英文是主要语言;德语、西班牙语、法语、意大利语、日语和韩语属于实验性支持。

紧凑规模下的 SOTA-class 表现

在下面的对比中,Audio8-TTS-0.6B 是主模型规模最小的一项。在 Seed-TTS 上,它取得表中最低的英文 WER,中文 CER 也保持竞争力;在 CV3 上,它在公开的多语言评测中仍处于第一梯队。我们用 SOTA-class 描述这一位置,但不宣称它在每个指标或每种语言上都普遍领先。

Seed-TTS

WER/CER 越低越好,SIM 越高越好。表中 SIM 以百分比表示。

模型参数量EN WER / SIMZH CER / SIMHard ZH CER / SIM
Audio8-TTS-0.6B0.6B1.506 / 63.20.950 / 73.111.510 / 68.7
Fish S2 Pro4.6B1.607 / 64.61.038 / 73.810.149 / 70.1
Higgs Audio v24.7B1.524 / 66.40.806 / 72.110.622 / 69.3
CosyVoice3-1.5B1.5B2.22 / 72.01.12 / 78.15.83 / 75.8
MOSS-TTS8.5B1.85 / 73.41.20 / 78.8-
VoxCPM22.3B1.84 / 75.30.97 / 79.58.13 / 75.3

CV3 多语言错误率

以下指标越低越好。

模型参数量ZHENHard-ZHHard-ENJAKODEESFRIT
Audio8-TTS-0.6B0.6B3.2053.12810.5355.9977.2054.2233.4473.6418.7904.790
Fish S2 Pro4.6B3.6003.49310.5887.3495.1394.1113.6052.9728.6004.229
Higgs Audio v24.7B3.3783.40410.4245.7544.7424.2603.3002.9299.4253.555
CosyVoice3-1.5B1.5B3.914.999.7710.557.575.696.434.4711.810.5
VoxCPM22.3B3.655.008.558.485.965.694.773.809.854.25

170M 模型并不是 0.6B 的同质量替代品。它在 Seed-TTS 上的公开结果为:英文 1.662 WER / 56.7 SIM,中文 1.13 CER / 68.2 SIM;在 CV3 上,中文为 3.619,英文为 3.307,部分实验性语言的差距更大。它的价值在于另一件事:在明显更小的部署预算下,仍然让零样本条件保持可用。

所有跨项目数据均来自公开模型卡和技术报告。由于归一化方式、评测器和测试集并不一致,这些数据应被视为参考比较,而不是严格控制变量后的统一排名。

从 Checkpoint 到可运行的服务栈

只有运行时能够承载参数量,参数规模才真正有意义。因此 Audio8-TTS 提供了两条侧重点不同的部署路径:0.6B 追求 GPU 吞吐,170M 则配套自包含的 CPU 运行时。

0.6B 的 GPU 服务

Audio8 仓库提供 SGLang Omni 适配器,支持分页注意力、动态批处理、参考音频编码、波形解码,以及兼容 OpenAI 格式的 /v1/audio/speech 接口。

该适配器基于 SGLang Omni 0.1.0(commit 68a572348837f7b004857b4b07993c20ade4c017)、SGLang 0.5.8、PyTorch 2.9.1+cu128、Transformers 4.57.1 和 BF16 权重完成验证。在单张 NVIDIA H20 上的 warm 单流测试中,生成 128 帧的 p50 延迟为 0.691 s,RTF 为 0.116。测试不包含冷启动和编译时间;这些数字只描述测试配置,不是普适的延迟保证。

ONNX INT8:为端侧系统设计的 170M 路径

独立发布的 Audio8-TTS-0.1B ONNX INT8 不只是量化 checkpoint。它围绕 ONNX Runtime 打包了自回归循环、音频编解码、音色注册和服务接口,模型下载之后,运行时不需要 CUDA、PyTorch 或 Transformers。

组件运行时表示
Slow ARINT8 逐 token 图,显式传递循环状态
Fast ARINT8 逐 token 图
音频编码器与解码器FP16
输出波形FP32、44.1 kHz、单声道

Slow AR 图会在相邻 token 之间显式传递注意力和 Mamba 状态。valid-prefix attention 将计算限制在有效前缀内。Fast AR 也沿用相同的逐 token 边界,生成每帧内部的码本。把循环状态显式暴露出来,比把整个循环封装成一个庞大的静态图更容易在 CPU 上调度、检查和限定内存。

在报告的测试中,常规推理在加载后约占用 0.4 GiB。测试平台:Linux x86_64。 内存占用会随 ONNX Runtime 构建、分配器、线程数和硬件变化。在 8 线程主机上,Slow AR 每个 token 约 19 ms,Fast AR 每帧约 8 ms,一次性的 prefill 成本约为每个提示词 token 19 ms。这些数字适合作为参考点,正式部署仍应在目标 CPU 上重新测量。

把音色注册移出热路径

普通合成只需要 Slow AR、Fast AR 和音频解码器。注册新参考音色时才加载音频编码器,将录音和文本转换成可复用的音色代码;完成后即可卸载编码器,再恢复合成。音色注册因此成为一次性的生命周期操作,而不是每个请求都要支付的常驻成本。

独立的 onnx_runtime_0_1b_int8 实现包含命令行推理、本地 HTTP 服务、流式 PCM、音色注册和兼容 OpenAI 格式的接口。从模型文件到服务边界,部署链路都已经覆盖,而不只是一组导出的计算图。

零样本克隆最适合使用干净的参考录音和准确的文本,并且必须获得说话人授权。合成语音可能被用于冒充或传播误导性信息;在适当场景中披露生成音频,并在投入生产前评估准确性、安全性和法律合规性。

Audio8-TTS

从 SOTA-class 的 0.6B 主模型,到可在 CPU 上运行的 170M 部署路径:让高保真零样本语音合成在不同计算预算下真正落地。