JeffDing/chatterbox
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Chatterbox TTS - 昇腾 NPU 适配

Chatterbox 是 Resemble AI 的生产级开源 TTS 模型,支持 23 种语言的零样本文本转语音,采用 0.5B 参数 Llama backbone。本仓库为 华为昇腾 NPU(Ascend 910 系列) 的适配版本。

  • 原始模型:ResembleAI/chatterbox / GitCode 镜像
  • 模型权重下载:AtomGit / ModelScope

目录

  • 模型简介
  • 昇腾适配环境
  • 快速开始:NPU 推理
  • 推理输出证据
  • NPU vs CPU 精度对比
  • GPU 精度对比说明
  • 适配注意事项
  • 相关链接

模型简介

属性说明
模型名称Chatterbox TTS
开发者Resemble AI
模型类型Text-to-Speech (TTS)
Backbone0.5B Llama (T3) + S3Gen + Voice Encoder
总参数量~797M (T3: 532M + S3Gen: 264M + VE: 1.4M)
支持语言23 种(含中英日韩法德西等)
采样率24000 Hz
LicenseMIT

子模型组成

子模型参数量功能
T3 (Text-to-Token)532,405,248文本转语音 token,基于 Llama backbone
S3Gen (Token-to-Wave)263,933,767语音 token 转音频波形
Voice Encoder1,423,618说话人声纹提取

昇腾适配环境

硬件环境

参数值
NPU 型号Ascend 910_9362
NPU 数量2 卡
操作系统Ubuntu 22.04.5 LTS (aarch64)

软件环境

组件版本
Python3.11.14
PyTorch2.9.0
torch_npu2.9.0.post1
CANN8.5.1
chatterbox-tts0.1.7
transformers5.2.0
safetensors0.5.3
torchaudio2.9.0
numpy1.26.4
scipy1.17.1

快速开始:NPU 推理

1. 安装依赖

pip install chatterbox-tts torch_npu scipy

2. 下载模型权重

从 AtomGit 或 ModelScope 下载模型权重到本地目录。

3. NPU 推理代码

import torch
import numpy as np
import scipy.io.wavfile as wavfile
from chatterbox.tts import ChatterboxTTS

MODEL_DIR = "/path/to/chatterbox_weights/ResembleAI/chatterbox"
TEXT = "Ezreal and Jinx teamed up with Ahri, Yasuo, and Teemo to take down the enemy Nexus in an epic late game pentakill."

def save_wav(path, wav_tensor, sr):
    audio = wav_tensor.squeeze().numpy()
    audio = np.clip(audio, -1.0, 1.0)
    audio_int16 = (audio * 32767).astype(np.int16)
    wavfile.write(path, sr, audio_int16)

# 加载模型到 NPU
device = "npu:0"
model = ChatterboxTTS.from_local(MODEL_DIR, device=device)

# 生成语音
wav = model.generate(TEXT)

# 保存音频
save_wav("output_npu.wav", wav, model.sr)
print(f"Audio shape: {wav.shape}, sr={model.sr}, duration={wav.shape[-1]/model.sr:.2f}s")

说明:与 GPU 版本相比,只需将 device="cuda" 改为 device="npu:0",使用 scipy 替代 torchaudio 保存音频即可。模型加载和推理过程无需其他代码修改。


推理输出证据

在昇腾 NPU(Ascend 910_9362)上成功运行推理,以下是运行日志:

Loading model on npu:0...
Model loaded in 13.81s
Generating speech for: Ezreal and Jinx teamed up with Ahri, Yasuo, and Teemo to tak...
Generation took 5.55s
Saved to /opt/atomgit/output_npu.wav
Audio shape: torch.Size([1, 141120]), sr=24000, duration=5.88s

输出音频信息:

属性值
文件格式RIFF WAVE, Microsoft PCM, 16 bit, mono
采样率24000 Hz
采样数141,120
时长5.88 秒
模型加载时间13.81 秒
语音生成时间5.55 秒

推理正常完成,输出音频文件格式正确,时长与输入文本长度匹配,语音内容清晰可辨识。


NPU vs CPU 精度对比

由于 Chatterbox TTS 是自回归采样模型,最终的音频波形会因采样随机性而不同(即使在相同 seed 下,不同硬件的随机数生成器行为也可能不同)。因此我们通过对比模型确定性中间计算结果来评估 NPU 与 CPU 的计算精度差异。

逐层精度对比结果

以下结果基于相同输入文本 "Hello world, this is a test.",在 CPU 和 NPU:0 上分别运行模型的确定性前向传播路径(不涉及随机采样):

对比层级MAE相对误差余弦相似度最大绝对误差
Conditionals
speaker_emb0.000000000.0000%1.000000000.00000000
cond_prompt_tokens0.000000000.0000%1.000000000.00000000
Text Embedding
text_emb0.000000000.0000%0.999999460.00000000
T3 Conditioning Encoder
cond_enc_output0.000000320.0004%1.000000720.00000310
T3 Transformer Forward
input_embeds0.000000200.0003%1.000006910.00000310
tfmr_hidden0.000000860.0012%1.000004770.00001693
speech_logits0.000001240.0008%1.000003810.00002575

精度总结

指标值
平均相对误差0.0004%
最大相对误差0.0012%
通过标准最大相对误差 < 1%
结果PASS

结论:NPU 与 CPU 的确定性计算结果高度一致,所有层的余弦相似度 > 0.999999,最大相对误差仅为 0.0012%,远低于 1% 的阈值要求。昇腾 NPU 上的计算精度完全满足要求。


GPU 精度对比说明

公开基准数据

ResembleAI 官方在 Podonos 评测平台 上提供了 Chatterbox TTS 与 ElevenLabs 等闭源 TTS 系统的人工评测对比,声称在自然度和偏好评测中表现优于 ElevenLabs。但这些评测数据为语音质量主观评分(如自然度、说话人相似度),并非 GPU vs NPU 的数值精度对比。

GPU vs NPU 直接精度对比

目前没有公开的 Chatterbox TTS 在 GPU(CUDA)上的数值精度基准数据可供对比。 原因如下:

  1. Chatterbox TTS 是语音生成模型,其输出为音频波形(连续值),不像语言模型有明确的 token-level 精度指标(如 perplexity、token accuracy)。
  2. 官方未发布 GPU 平台的中间层精度基准数据。
  3. TTS 模型的自回归采样特性使得最终音频波形无法直接进行数值对比。

替代验证方案

本适配采用了以下替代验证策略:

  1. 确定性中间层对比:如上表所示,对模型所有确定性计算路径(不含随机采样)进行逐层 NPU vs CPU 对比,最大相对误差为 0.0012%,证明计算引擎精度一致。
  2. 功能验证:NPU 推理成功生成完整、可播放的音频文件,音频格式、时长、采样率均正确。
  3. 声学质量验证:生成的语音在人工试听中清晰自然,无异常噪声或畸变。

适配注意事项

  1. 设备指定:使用 device="npu:0" 加载模型,torch_npu 会自动将所有张量运算映射到昇腾 NPU。
  2. 音频保存:建议使用 scipy.io.wavfile 替代 torchaudio 保存音频,以避免 NPU 环境下 torchaudio 的编码器兼容性问题。
  3. 张量格式警告:加载模型时可能出现 Cannot create tensor with internal format 的 UserWarning,不影响推理结果和精度。
  4. 注意力机制:模型使用 SDPA(Scaled Dot-Product Attention),NPU 环境下自动适配。
  5. 推理性能:单次推理(约 6 秒音频)耗时约 5.5 秒(含采样 147 步),模型加载约 14 秒。

相关链接

  • ResembleAI/chatterbox (HuggingFace)
  • ResembleAI/chatterbox (GitHub)
  • Chatterbox Demo (Podonos 评测)
  • Chatterbox Gradio Demo
  • Resemble AI 官网
  • torch_npu 文档
  • CANN 开发工具集