AI个人学习
和实操指南
讯飞绘镜

Dia:生成超现实多人对话的文本转语音模型

综合介绍

Dia 是一个由 Nari Labs 开发的开源文本转语音(TTS)模型,专注于生成超现实的对话音频。它能在一次处理中将文本脚本转化为逼真的多角色对话,支持情感和语调控制,甚至能生成非语言表达,如笑声。Dia 的核心是 16 亿参数的模型,托管在 Hugging Face 上,用户可通过 GitHub 获取代码和预训练模型。它的设计强调开放性和灵活性,允许用户完全控制对话脚本和语音输出。Dia 提供 Gradio 界面,方便用户快速体验生成对话的效果。项目得到 Google TPU Research Cloud 和 Hugging Face ZeroGPU Grant 支持,灵感来源于 SoundStorm 和 Parakeet 等技术。

Dia:生成超现实多人对话的文本转语音模型-1

演示地址:https://huggingface.co/spaces/nari-labs/Dia-1.6B


 

功能列表

  • 超现实对话生成:将文本脚本转为多角色对话音频,支持多说话者标记(如 [S1], [S2])。
  • 情感与语调控制:通过音频提示或固定种子调节语音的情感和语调。
  • 非语言表达:生成笑声、停顿等非语言声音,增强对话真实感。
  • Gradio 交互界面:提供可视化界面,简化对话生成和音频输出操作。
  • 开源模型与代码:用户可从 Hugging Face 下载预训练模型或在 GitHub 获取源码。
  • 跨设备支持:支持 GPU 运行,未来计划支持 CPU。
  • 可重复性设置:通过设置随机种子,确保生成结果一致。

 

使用帮助

安装流程

要使用 Dia,首先需要克隆 GitHub 仓库并设置环境。以下是详细步骤:

  1. 克隆仓库
    在终端运行以下命令:

    git clone https://github.com/nari-labs/dia.git
    cd dia
    
  2. 创建虚拟环境
    使用 Python 创建虚拟环境以隔离依赖:

    python -m venv .venv
    source .venv/bin/activate  # Windows 用户运行 .venv\Scripts\activate
    
  3. 安装依赖
    Dia 使用 uv 工具管理依赖。安装 uv 并运行:

    pip install uv
    uv run app.py
    

    这会自动安装所需库并启动 Gradio 界面。

  4. 硬件要求
    • GPU:推荐 NVIDIA GPU,支持 CUDA。
    • CPU:目前 GPU 优化更好,CPU 支持计划中。
    • 内存:至少 16GB RAM,模型加载需要较高内存。
  5. 验证安装
    运行 uv run app.py 后,终端会显示 Gradio 界面的本地 URL(通常为 http://127.0.0.1:7860)。在浏览器打开此 URL,检查界面是否正常加载。

使用 Gradio 界面

Gradio 界面是 Dia 的主要交互方式,适合快速测试和生成对话。操作步骤如下:

  1. 打开界面
    启动 uv run app.py 后,访问终端显示的 URL。界面包含文本输入框、参数设置和音频输出区域。
  2. 输入对话脚本
    在文本框输入脚本,使用 [S1][S2] 等标记区分说话者。例如:

    [S1] 你好,今天过得怎么样?
    [S2] 还不错,就是有点忙。(笑)
    

    脚本支持非语言标记,如 (笑)

  3. 设置生成参数
    • 最大音频标记--max-tokens):控制生成音频的长度,默认 3072。
    • CFG 比例--cfg-scale):调整生成质量,默认 3.0。
    • 温度--temperature):控制随机性,默认 1.3,值越高越随机。
    • Top-p--top-p):核采样概率,默认 0.95。
      这些参数可在界面调整,初学者可使用默认值。
  4. 添加音频提示(可选)
    为保持语音一致性,可上传参考音频。点击界面中的“音频提示”选项,选择 WAV 文件。官方文档提到,音频提示功能指南即将发布,目前可参考 Gradio 界面中的示例。
  5. 生成音频
    点击“生成”按钮,模型会处理脚本并输出音频。生成时间取决于硬件性能,通常几秒到几十秒。生成的音频可在界面预览或下载为 WAV 文件。
  6. 固定种子
    为确保每次生成的声音一致,可设置随机种子。点击界面“种子”选项,输入整数(如 35)。若不设置,Dia 每次生成的声音可能不同。

命令行使用

除了 Gradio,Dia 还支持命令行操作,适合开发者或批量生成。以下是示例:

  1. 运行 CLI 脚本
    在虚拟环境中运行:

    python cli.py "[S1] 你好! [S2] 嗨,很好。" --output output.wav
    
  2. 指定模型
    默认使用 Hugging Face 的 nari-labs/Dia-1.6B 模型。若使用本地模型,需提供配置文件和检查点:

    python cli.py --local-paths --config config.yaml --checkpoint checkpoint.pt "[S1] 测试" --output test.wav
    
  3. 调整参数
    可通过命令行设置生成参数,例如:

    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 提供使用伦理和法律指南,用户需遵守,避免生成不当内容。

 

应用场景

  1. 内容创作
    Dia 适合为播客、动画或短视频生成逼真对话。创作者可输入脚本,快速生成角色配音,省去录音成本。例如,动画制作者可为角色生成不同语调的对话,增强作品表现力。
  2. 教育与培训
    Dia 可为语言学习或角色扮演培训生成对话音频。例如,语言教师可创建多角色对话,模拟真实场景,帮助学生练习听力和口语。
  3. 游戏开发
    游戏开发者可使用 Dia 为 NPC 生成动态对话。脚本支持情感标记,能为不同场景生成符合角色性格的语音。
  4. 研究与开发
    AI 研究人员可基于 Dia 的开源代码进行二次开发,探索 TTS 技术。模型支持本地加载,适合实验和优化。

 

QA

  1. Dia 支持哪些输入格式?
    Dia 接受文本脚本,需使用 [S1][S2] 标记区分说话者。支持非语言标记如 (笑),可选配 WAV 格式的音频提示。
  2. 如何确保生成的声音一致?
    可通过设置固定种子(--seed)或上传音频提示实现。种子可在 Gradio 界面或命令行设置,音频提示需高质量 WAV 文件。
  3. Dia 是否支持 CPU 运行?
    目前 Dia 优化为 GPU 运行,未来计划支持 CPU。推荐使用 NVIDIA GPU 以获得最佳性能。
  4. 生成音频需要多长时间?
    生成时间取决于硬件和脚本长度。在高性能 GPU 上,短对话生成通常需几秒,长对话可能需几十秒。
  5. Dia 是否免费?
    Dia 是开源项目,代码和模型免费。用户需自行承担运行所需的硬件成本。
未经允许不得转载:首席AI分享圈 » Dia:生成超现实多人对话的文本转语音模型
zh_CN简体中文