一款适用于华为昇腾NPU(昇腾910)的轻量级文本转语音(TTS)模型。 基于 Kyutai's Pocket TTS(无语音克隆变体)。
pip install pocket-tts safetensors scipy numpy beartypepip install modelscope
modelscope download --model AI-ModelScope/pocket-tts-without-voice-cloningfrom inference import load_model_on_npu, create_voice_state, run_inference
import scipy.io.wavfile
# Load model on NPU
model = load_model_on_npu()
# Create voice state
voice_state = create_voice_state(model, seed=42)
# Generate speech
audio, stats = run_inference(model, voice_state, "Hello world!", seed=42)
# Save audio
scipy.io.wavfile.write("output.wav", model.sample_rate, audio.cpu().numpy())
print(f"Generated {stats['duration_s']:.1f}s audio in {stats['elapsed_s']:.2f}s ({stats['rtf']:.1f}x RTF)")或者使用命令行:
python inference.py --text "Hello world, this is a test." --output output.wav
python inference.py --text "Hello world." --compare # accuracy validation
python inference.py --benchmark # performance test通过对比NPU与CPU上确定性模型组件(编码器、解码器、主干Transformer)的结果来验证精度。由于TTS生成过程中涉及随机噪声采样,具有随机性,因此直接对比音频没有意义。
| 组件 | 最大相对误差 | 状态 |
|---|---|---|
| Mimi 编码器 | 0.0000% | ✅ 通过 |
| Mimi 解码器 | 0.0270% | ✅ 通过 |
| FlowLM 主干 | 0.0150% | ✅ 通过 |
| 整体 | 0.0270% | ✅ 通过(< 1%) |
在华为Ascend 910(单NPU)上进行基准测试:
| 指标 | 数值 |
|---|---|
| 平均RTF | 4.38x |
| 总RTF | 4.70x |
| 模型参数 | 109.5 M |
| 采样率 | 24 kHz |
| 精度 | FP32 |
与CPU基准(~1.07x RTF)相比,NPU实现了约4.4倍的加速。
Pocket TTS 由两个主要组件构成:
FlowLM(Flow Language Model,流式语言模型):基于Transformer的流式模型,可从文本输入生成音频潜变量。特点:
Mimi(音频编解码器):基于SEANet的编码器/解码器,用于在音频和潜空间之间进行转换。特点:
pocket-tts-npu/
├── inference.py # Main NPU inference script
├── README.md # This file
├── accuracy_report.json # Accuracy validation results
├── benchmark_report.json # Performance benchmark results
└── output_npu.wav # Sample generated audio本模型基于 CC-BY-4.0 许可证发布。
@article{orsini2025pocket,
title={Pocket TTS: Lightweight Text-to-Speech},
author={Orsini, Manu and Rouard, Simon and De Marmiesse, Gabriel and Volhejn, Václav and Zeghidour, Neil and Défossez, Alexandre},
journal={arXiv preprint arXiv:2509.06926},
year={2025}
}使用本模型必须遵守所有适用的法律法规。禁止使用的情形包括:未经明确同意进行语音模仿或克隆、传播虚假信息,以及生成非法或有害内容。