🚀 Dia - 文本转语音模型
Dia是由Nari Labs创建的一个拥有16亿参数的文本转语音模型。它能够直接从文本转录中生成高度逼真的对话,还可根据音频条件控制输出的情感和语调,甚至能生成笑声、咳嗽声等非语言交流内容。
🚀 快速开始
此操作将打开一个Gradio用户界面供你使用。
git clone https://github.com/nari-labs/dia.git
cd dia && uv run app.py
若你尚未预先安装uv
,可按以下步骤操作:
git clone https://github.com/nari-labs/dia.git
cd dia
python -m venv .venv
source .venv/bin/activate
pip install uv
uv run app.py
请注意,该模型未针对特定语音进行微调,因此每次运行模型时可能会得到不同的语音。你可以通过添加音频提示(相关指南即将推出,目前可在Gradio上尝试第二个示例)或固定随机种子来保持说话者的一致性。
✨ 主要特性
- 对话生成:通过
[S1]
和[S2]
标签生成对话。
- 非语言交流生成:能够生成如
(laughs)
、(coughs)
等非语言交流内容。以下非语言标签会被识别,但可能会产生意外输出:(laughs), (clears throat), (sighs), (gasps), (coughs), (singing), (sings), (mumbles), (beep), (groans), (sniffs), (claps), (screams), (inhales), (exhales), (applause), (burps), (humming), (sneezes), (chuckle), (whistles)
。
- 语音克隆:详情请参考
example/voice_clone.py
。在Hugging Face空间中,你可以上传想要克隆的音频,并在脚本前放置其转录文本。请确保转录文本符合要求的格式,模型将仅输出脚本内容。
💻 使用示例
基础用法
import soundfile as sf
from dia.model import Dia
model = Dia.from_pretrained("nari-labs/Dia-1.6B")
text = "[S1] Dia is an open weights text to dialogue model. [S2] You get full control over scripts and voices. [S1] Wow. Amazing. (laughs) [S2] Try it now on Git hub or Hugging Face."
output = model.generate(text)
sf.write("simple.mp3", output, 44100)
一个pypi包和一个可用的命令行工具即将推出。
🔧 技术细节
硬件与推理速度
Dia仅在GPU(pytorch 2.0+,CUDA 12.6)上进行了测试,CPU支持即将添加。首次运行时会花费较长时间,因为还需要下载Descript Audio Codec。
在企业级GPU上,Dia可以实时生成音频;在较旧的GPU上,推理时间会较慢。例如,在A4000 GPU上,Dia大约每秒可生成40个令牌(86个令牌相当于1秒的音频)。torch.compile
将提高支持的GPU的推理速度。
完整版本的Dia运行大约需要10GB的显存,未来将添加量化版本。
如果你没有可用的硬件,或者想体验更大版本的模型,请加入等待列表。
📄 许可证
本项目采用Apache License 2.0许可协议,详情请参阅LICENSE文件。
⚠️ 重要提示
本项目提供了一个高保真的语音生成模型,仅供研究和教育使用。严禁以下使用方式:
- 身份滥用:未经许可,不得生成与真实个人相似的音频。
- 虚假内容生成:不得使用此模型生成误导性内容(如假新闻)。
- 非法或恶意使用:不得将此模型用于非法或有害的活动。
使用此模型即表示你同意遵守相关法律标准和道德责任。我们不对任何滥用行为负责,并坚决反对任何不道德的使用方式。
📚 详细文档
待办事项 / 未来工作
- 支持Docker。
- 优化推理速度。
- 添加量化以提高内存效率。
贡献
我们是一个由1名全职和1名兼职研究工程师组成的小团队,非常欢迎任何形式的贡献!请加入我们的Discord服务器参与讨论。
致谢