weixin_62994174/Darwin-TTS
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Darwin-TTS-1.7B-Cross on Ascend NPU

1. 简介

本文档记录 Darwin-TTS-1.7B-Cross 在华为昇腾 Ascend 910 NPU 环境的适配、推理与精度验证结果。

Darwin-TTS-1.7B-Cross 是世界上首个跨模态 FFN 迁移 TTS 模型。通过将 Qwen3-1.7B (LLM) 中 3% 的 FFN 权重直接融合到 Qwen3-TTS-1.7B (TTS) 的 talker 模块中,实现了情感增强的语音合成——全程无需训练。

关键发现

Blend (α)EmotionQualityStatus
0%BaselineNormalOriginal Qwen3-TTS
1%No changeNormalToo subtle
3%Emotion appearsNormalThis model (default)
5%Emotion intensifiedNormalMax stable
10%BrokenFailedInfinite generation

架构

Darwin-TTS-1.7B-Cross (4-module structure):
┌─────────────────────────────────────────────────────────┐
│ talker (28L Qwen3 LM backbone)                          │
│   └── 84 FFN tensors blended with LLM (α=3%)           │ ← MODIFIED
│       └── talker.model.layers.N.mlp.{gate,up,down}      │
├─────────────────────────────────────────────────────────┤
│ code_predictor (5L, h=1024)                              │ ← UNTOUCHED
├─────────────────────────────────────────────────────────┤
│ speech_tokenizer (12Hz RVQ codec)                        │ ← UNTOUCHED
├─────────────────────────────────────────────────────────┤
│ encoder/decoder (audio waveform)                         │ ← UNTOUCHED
└─────────────────────────────────────────────────────────┘

NPU 适配关键技术点:

  • 模型从 CPU 加载后迁移至 NPU(model.to("npu:0"))
  • 使用 bfloat16 混合精度推理
  • NPU 上的语音生成保持与原版 GPU/CPU 一致的音频质量

相关获取地址:

  • 权重下载地址(ModelScope):https://modelscope.cn/models/FINAL-Bench/Darwin-TTS-1.7B-Cross
  • 权重下载地址(HuggingFace):https://huggingface.co/FINAL-Bench/Darwin-TTS-1.7B-Cross
  • 基础模型:https://modelscope.cn/models/Qwen/Qwen3-TTS-12Hz-1.7B-Base

参考文档:

  • https://github.com/Qwen/Qwen3-TTS
  • Darwin Evolutionary Merge Framework: https://huggingface.co/FINAL-Bench

2. 验证环境

组件版本
torch-npu2.9.0.post1+gitee7ba04
torch2.9.0
transformers4.57.6
qwen_tts0.1.1
accelerate1.12.0
soundfile0.13.1
  • NPU:2 × Ascend 910
  • 模型路径:~/.cache/modelscope/hub/models/FINAL-Bench/Darwin-TTS-1___7B-Cross
  • 补充文件:需从 Qwen3-TTS-12Hz-1.7B-Base 复制 speech_tokenizer/ 子目录

3. 快速开始

3.1 下载模型

pip install modelscope
modelscope download --model FINAL-Bench/Darwin-TTS-1.7B-Cross
modelscope download --model Qwen/Qwen3-TTS-12Hz-1.7B-Base

# 补充 speech_tokenizer(Darwin-TTS 未包含此子目录)
BASE=~/.cache/modelscope/hub/models/Qwen/Qwen3-TTS-12Hz-1___7B-Base/speech_tokenizer
DARWIN=~/.cache/modelscope/hub/models/FINAL-Bench/Darwin-TTS-1___7B-Cross/speech_tokenizer
cp -r "$BASE" "$DARWIN"

3.2 安装依赖

pip install qwen-tts soundfile safetensors numpy

3.3 NPU 推理

# 单语言推理
python3 inference.py --text "你好,我是达尔文人工智能。" --lang zh --output output.wav

# 多语言测试
python3 inference.py --test-all --max-tokens 300

# CPU vs NPU 对比测评
python3 inference.py --benchmark --lang zh

# 精度验证
python3 accuracy_test.py

3.4 Python API

from qwen_tts import Qwen3TTSModel
import torch
import torch_npu

model = Qwen3TTSModel.from_pretrained(
    "FINAL-Bench/Darwin-TTS-1.7B-Cross",
    device_map=None,
)
model.model = model.model.to("npu:0")
model.model.eval()

wavs, sr = model.generate_voice_clone(
    text="Hello, Darwin TTS on Ascend NPU!",
    ref_audio="reference.wav",
    ref_text="ref",
    x_vector_only_mode=True,
    max_new_tokens=2048,
)

4. Smoke 验证

基础检查:

# 生成验证音频(使用默认正弦波参考音频)
python3 inference.py \
  --text "Hello, Darwin TTS is working on Ascend NPU!" \
  --lang en \
  --max-tokens 300 \
  --output output_validation.wav

验证结果:

  • 模型加载成功(约 8s)
  • 音频生成成功(约 53s 推理,输出 10s 音频 @ 24000Hz)
  • RMS 能量正常(0.1382)
  • 输出文件:output_validation.wav

5. 性能参考

测试条件:max_new_tokens=300, do_sample=False, x_vector_only_mode=True,4 种语言各一次。

语言输出时长推理时间RTF
Korean (ko)5.84s35.16s6.02
English (en)10.00s53.14s5.31
Chinese (zh)13.36s71.84s5.38
Japanese (ja)16.96s92.89s5.48

平均 RTF:5.55

注:RTF (Real-Time Factor) 表示每生成 1 秒音频需要的推理时间。当前为离线推理模式,适用于批量 TTS 生成场景。1.7B 参数 + 12Hz tokenizer 下该 RTF 为预期性能。

CPU 对比(中文场景):

指标NPUCPU加速比
推理时间70.56s415.61s5.89x
总时间77.15s418.13s5.42x

6. 精度评测

使用自研精度验证工具 accuracy_test.py 对 NPU 计算精度做了 5 项评测。

6.1 基本算子精度

测试项精度MAE相对误差结果
矩阵乘法 (MatMul)float325.87e-060.000033%PASSED
层归一化 (LayerNorm)float322.77e-080.000003%PASSED
Softmaxfloat327.00e-100.000005%PASSED

6.2 模型权重完整性

层参数MAEMaxDiff结果
Layer 0gate_proj.weight0.000000000.00000000OK
Layer 7up_proj.weight0.000000000.00000000OK
Layer 14down_proj.weight0.000000000.00000000OK
Layer 21gate_proj.weight0.000000000.00000000OK
Layer 27down_proj.weight0.000000000.00000000OK

6.3 端到端推理

指标数值
测试文本"Hello, Darwin TTS is working on Ascend NPU!"
输出时长10.96s
采样率24000Hz
RMS 能量0.1382
推理时间62.51s
RTF5.70
输出有效性YES
功能测试PASSED

综合结论:ALL TESTS PASSED — NPU 计算精度与 CPU 一致,推理功能正常。

7. 注意事项

  1. 参考音频:首次运行会自动生成正弦波参考音频(音质较低),建议提供真实录音以获得更好的语音克隆效果。使用方式:python3 inference.py --ref your_voice.wav

  2. speech_tokenizer 缺失:Darwin-TTS-1.7B-Cross 模型目录不包含 speech_tokenizer/ 子目录,需要从 Qwen3-TTS-12Hz-1.7B-Base 复制或软链接。仓库内的 inference.py 已自动处理此问题。

  3. RTF > 1:当前 NPU 推理为离线模式(RTF ≈ 5.5),如需实时推理,可考虑:

    • 降低 max_new_tokens 参数
    • 使用批量推理提高吞吐
    • 启用 torch_npu 亲和算子优化
  4. 温度参数:do_sample=False 时 temperature 参数会被忽略(不影响结果)。需要随机采样时可设置 do_sample=True。

  5. x_vector_only_mode:设置为 True 时仅使用说话人嵌入进行语音克隆,不需要参考文本;设置为 False 时启用 ICL 模式,需要提供 ref_text。

  6. 多语言支持:模型原生支持 10 种语言(ko/en/zh/ja/de/fr/ru/pt/es/it),已验证 4 种主要语言均可在 NPU 上正常工作。

8. 交付件

文件说明
inference.pyNPU 推理脚本(含单语言、多语言、benchmark 模式)
accuracy_test.pyNPU 精度验证脚本(5 项自动化测试)
run_benchmark.py性能测评运行脚本
benchmark_log.txt完整评测运行日志
output_validation.wav验证用输出音频样本 (EN, 10.96s)
output_npu_zh.wav中文 TTS 输出样本 (13.36s)
output_npu_en.wav英文 TTS 输出样本 (10.00s)

Credits

  • Darwin-TTS: FINAL-Bench/Darwin-TTS-1.7B-Cross
  • Base Model: Qwen3-TTS-1.7B-Base by Alibaba Cloud
  • LLM: Qwen3-1.7B
  • NPU Adaptation: Ascend NPU 适配与精度验证
  • Framework: VIDRAFT Darwin Evolutionary Merge Framework

License

Apache 2.0 — 继承自 Qwen3-TTS 原始许可