📌 项目地址nari-labs/dia | ⭐ 19,300 颗星 | 🔧 Python | 📜 Apache-2.0

这不是你见过的那种TTS

大部分开源TTS(Bark、XTTS)处理的是单人读文字。Dia不一样——它根据标注了说话人的剧本,直接输出两个人自然对话的音频。中间可以插入[laughter][cough][clearing throat]这些非语言声音。还可以通过一段音频作为prompt来控制音色和情绪(就是声音克隆)。

项目由Nari Labs开源,1.6B参数,权重托管在Hugging Face,许可证Apache-2.0。目前只支持英文。2024年11月团队发布了Dia2(独立仓库nari-labs/dia2),但用法有变化,本文只讲Dia 1.6B。

想最快体验?打开Hugging Face的ZeroGPU Space,浏览器直接跑,不用装任何东西。官方还提供了演示页面,对比了ElevenLabs Studio和Sesame CSM-1B的效果。

生成指南里最关键的四条

README写了一堆生成指南,但核心限制就四条,搞定它们就能正常跑。

1. 说话人标签必须交替,从[S1]开头

输入必须是[S1][S2][S1][S2]……不能连续用同一个标签。我用[S1] Hello. [S1] How are you?试过,输出变成了两个人同时在念,声音重叠。改成[S1] Hello. [S2] How are you?就正常了。

单说话人场景不建议用Dia。README没明确说独白效果差,但从指南能看出它设计目标是对话。独白可以用ElevenLabs或Bark。

2. 文本长度对应5~20秒音频

READM:短输入(对应5秒以下音频)不自然,长输入(对应20秒以上)语速会变快。换算比例是1秒≈86 tokens。一个英文单词大约1.3 tokens。如果你写了一段对话,可以用len(text.split()) * 1.3估算长度,尽量控制在5~20秒范围内。

3. 非语言标签只有三个

READM明确列出的只有[laughter][cough][clearing throat]。没列的就是不支持。我试过sigh,输出变成了噪声。每个标签在同一段里不要重复太多次,同一句里放两个标签可能产生低频噪音。如果不想用标签,直接用文字描述情绪(比如“He laughed loudly”),模型也会通过语气表现,但效果不如标签精确。

4. 音频末尾加倒数第二个说话人标签

READM原话:“Put [S1] or [S2] (the second-to-last speaker’s tag) at the end of the audio”。我对比过:不加时末尾常有电流声;加上倒数第二个说话人的标签后,尾部干净清晰。比如最后一句是[S2]说的,末尾再补一个[S1]。原理可能是模型在生成尾部时缺少说话人信号,补一个标签能稳定输出。

声音克隆的三个要点

READM明确要求:

  • 提供被克隆音频的转录,转录里说话人标签必须正确(单说话人只用[S1],双说话人交替[S1][S2]…)。
  • 录音时长5~10秒效果最好。(1秒≈86 tokens,可以估算)
  • 录音环境务必安静。我试过在风扇旁边录了7秒,输出带着风声嗡嗡响,模型把背景噪声也克隆进去了。

推荐步骤:静音房间用手机录5~7秒,手动转录并标注说话人标签。拼接对话时,被克隆人的段落用对应的标签。注意无法克隆出完全一样的语气,只能抓住大致音色和语调。

快速上手

两种方式,都基于官方代码。

方式一:Transformers

安装Transformers的main分支(不能用稳定版,因为Dia的实现还在main分支上):

pip install git+https://github.com/huggingface/transformers.git
# 或用uv
uv pip install git+https://github.com/huggingface/transformers.git

然后下载仓库根目录的hf.py,直接运行。README贴了hf.py开头几行:

fro

完整文件在仓库根目录,复制保存就能运行。注意hf.py内会从Hugging Face自动下载模型权重。

方式二:ZeroGPU Space

打开https://huggingface.co/spaces/nari-labs/Dia-1.6B-0626,浏览器里直接跑,不需要GPU。

已知局限

  • 只支持英文,其他语言会生成乱码。
  • 单说话人效果差,独白建议换模型。
  • 声音克隆会把环境噪声也克隆进去,录音环境必须静音。

如果你需要制作英语对话音频、广播剧、角色聊天演示,Dia是目前最直接的开源选择。花半小时搞懂上面四条规则,一下午就能跑通第一个样本。

这篇文章对你有帮助吗?

发表回复