综合介绍
Dia 是一个由 Nari Labs 开发的开源文本转语音(TTS)模型,专注于生成超现实的对话音频。它能在一次处理中将文本脚本转化为逼真的多角色对话,支持情感和语调控制,甚至能生成非语言表达,如笑声。Dia 的核心是 16 亿参数的模型,托管在 Hugging Face 上,用户可通过 GitHub 获取代码和预训练模型。它的设计强调开放性和灵活性,允许用户完全控制对话脚本和语音输出。Dia 提供 Gradio 界面,方便用户快速体验生成对话的效果。项目得到 Google TPU Research Cloud 和 Hugging Face ZeroGPU Grant 支持,灵感来源于 SoundStorm 和 Parakeet 等技术。
演示地址:https://huggingface.co/spaces/nari-labs/Dia-1.6B
功能列表
- 超现实对话生成:将文本脚本转为多角色对话音频,支持多说话者标记(如 [S1], [S2])。
- 情感与语调控制:通过音频提示或固定种子调节语音的情感和语调。
- 非语言表达:生成笑声、停顿等非语言声音,增强对话真实感。
- Gradio 交互界面:提供可视化界面,简化对话生成和音频输出操作。
- 开源模型与代码:用户可从 Hugging Face 下载预训练模型或在 GitHub 获取源码。
- 跨设备支持:支持 GPU 运行,未来计划支持 CPU。
- 可重复性设置:通过设置随机种子,确保生成结果一致。
使用帮助
安装流程
要使用 Dia,首先需要克隆 GitHub 仓库并设置环境。以下是详细步骤:
- 克隆仓库:
在终端运行以下命令:git clone https://github.com/nari-labs/dia.git cd dia
- 创建虚拟环境:
使用 Python 创建虚拟环境以隔离依赖:python -m venv .venv source .venv/bin/activate # Windows 用户运行 .venv\Scripts\activate
- 安装依赖:
Dia 使用uv
工具管理依赖。安装uv
并运行:pip install uv uv run app.py
这会自动安装所需库并启动 Gradio 界面。
- 硬件要求:
- GPU:推荐 NVIDIA GPU,支持 CUDA。
- CPU:目前 GPU 优化更好,CPU 支持计划中。
- 内存:至少 16GB RAM,模型加载需要较高内存。
- 验证安装:
运行uv run app.py
后,终端会显示 Gradio 界面的本地 URL(通常为http://127.0.0.1:7860
)。在浏览器打开此 URL,检查界面是否正常加载。
使用 Gradio 界面
Gradio 界面是 Dia 的主要交互方式,适合快速测试和生成对话。操作步骤如下:
- 打开界面:
启动uv run app.py
后,访问终端显示的 URL。界面包含文本输入框、参数设置和音频输出区域。 - 输入对话脚本:
在文本框输入脚本,使用[S1]
、[S2]
等标记区分说话者。例如:[S1] 你好,今天过得怎么样? [S2] 还不错,就是有点忙。(笑)
脚本支持非语言标记,如
(笑)
。 - 设置生成参数:
- 最大音频标记(
--max-tokens
):控制生成音频的长度,默认 3072。 - CFG 比例(
--cfg-scale
):调整生成质量,默认 3.0。 - 温度(
--temperature
):控制随机性,默认 1.3,值越高越随机。 - Top-p(
--top-p
):核采样概率,默认 0.95。
这些参数可在界面调整,初学者可使用默认值。
- 最大音频标记(
- 添加音频提示(可选):
为保持语音一致性,可上传参考音频。点击界面中的“音频提示”选项,选择 WAV 文件。官方文档提到,音频提示功能指南即将发布,目前可参考 Gradio 界面中的示例。 - 生成音频:
点击“生成”按钮,模型会处理脚本并输出音频。生成时间取决于硬件性能,通常几秒到几十秒。生成的音频可在界面预览或下载为 WAV 文件。 - 固定种子:
为确保每次生成的声音一致,可设置随机种子。点击界面“种子”选项,输入整数(如35
)。若不设置,Dia 每次生成的声音可能不同。
命令行使用
除了 Gradio,Dia 还支持命令行操作,适合开发者或批量生成。以下是示例:
- 运行 CLI 脚本:
在虚拟环境中运行:python cli.py "[S1] 你好! [S2] 嗨,很好。" --output output.wav
- 指定模型:
默认使用 Hugging Face 的nari-labs/Dia-1.6B
模型。若使用本地模型,需提供配置文件和检查点:python cli.py --local-paths --config config.yaml --checkpoint checkpoint.pt "[S1] 测试" --output test.wav
- 调整参数:
可通过命令行设置生成参数,例如:python cli.py --text "[S1] 你好" --output out.wav --max-tokens 3072 --cfg-scale 3.0 --temperature 1.3 --top-p 0.95 --seed 35
特色功能操作
- 多角色对话:
Dia 的核心优势是生成多角色对话。脚本中通过[S1]
、[S2]
等标记区分角色,模型会自动为每个角色分配不同声音。建议在脚本中明确角色语气或情感,例如:[S1] (兴奋)我们赢了! [S2] (惊讶)真的吗?太棒了!
- 非语言表达:
在脚本中加入(笑)
、(停顿)
等标记,Dia 会生成对应的声音效果。例如:[S2] 这太好笑了!(笑)
- 语音一致性:
为避免每次生成的声音不同,可固定种子或使用音频提示。固定种子在 Gradio 界面或命令行通过--seed
设置。音频提示需上传高质量 WAV 文件,文件应包含清晰的语音片段。
注意事项
- 模型未针对特定声音微调:生成的声音可能每次不同,需通过种子或音频提示确保一致性。
- 硬件限制:GPU 性能对生成速度影响显著,低配设备可能较慢。
- 伦理指南:Nari Labs 提供使用伦理和法律指南,用户需遵守,避免生成不当内容。
应用场景
- 内容创作
Dia 适合为播客、动画或短视频生成逼真对话。创作者可输入脚本,快速生成角色配音,省去录音成本。例如,动画制作者可为角色生成不同语调的对话,增强作品表现力。 - 教育与培训
Dia 可为语言学习或角色扮演培训生成对话音频。例如,语言教师可创建多角色对话,模拟真实场景,帮助学生练习听力和口语。 - 游戏开发
游戏开发者可使用 Dia 为 NPC 生成动态对话。脚本支持情感标记,能为不同场景生成符合角色性格的语音。 - 研究与开发
AI 研究人员可基于 Dia 的开源代码进行二次开发,探索 TTS 技术。模型支持本地加载,适合实验和优化。
QA
- Dia 支持哪些输入格式?
Dia 接受文本脚本,需使用[S1]
、[S2]
标记区分说话者。支持非语言标记如(笑)
,可选配 WAV 格式的音频提示。 - 如何确保生成的声音一致?
可通过设置固定种子(--seed
)或上传音频提示实现。种子可在 Gradio 界面或命令行设置,音频提示需高质量 WAV 文件。 - Dia 是否支持 CPU 运行?
目前 Dia 优化为 GPU 运行,未来计划支持 CPU。推荐使用 NVIDIA GPU 以获得最佳性能。 - 生成音频需要多长时间?
生成时间取决于硬件和脚本长度。在高性能 GPU 上,短对话生成通常需几秒,长对话可能需几十秒。 - Dia 是否免费?
Dia 是开源项目,代码和模型免费。用户需自行承担运行所需的硬件成本。