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

Pocket TTS - Ascend NPU 适配版

一款适用于华为昇腾NPU(昇腾910)的轻量级文本转语音(TTS)模型。 基于 Kyutai's Pocket TTS(无语音克隆变体)。

模型说明

  • 模型:Pocket TTS(1亿参数)
  • 模型来源:AI-ModelScope/pocket-tts-without-voice-cloning
  • NPU设备:华为昇腾910
  • 框架:PyTorch 2.9 + torch_npu 2.9
  • 精度:FP32
  • 任务:文本转语音(英语)

核心特性

  • 支持在昇腾NPU(910系列)上运行
  • 1亿参数模型
  • 首段音频生成延迟约200毫秒
  • 在昇腾910上实现约4-5倍实时推理速度
  • 提供Python API,便于集成
  • 支持流式音频生成

快速开始

环境要求

  • Python 3.11+
  • PyTorch 2.9.0
  • torch_npu 2.9.0
  • 昇腾NPU驱动

安装步骤

pip install pocket-tts safetensors scipy numpy beartype

下载模型

pip install modelscope
modelscope download --model AI-ModelScope/pocket-tts-without-voice-cloning

推理

from 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)上进行基准测试:

指标数值
平均RTF4.38x
总RTF4.70x
模型参数109.5 M
采样率24 kHz
精度FP32

与CPU基准(~1.07x RTF)相比,NPU实现了约4.4倍的加速。

模型架构

Pocket TTS 由两个主要组件构成:

  1. FlowLM(Flow Language Model,流式语言模型):基于Transformer的流式模型,可从文本输入生成音频潜变量。特点:

    • 6个Transformer层(1024维,16头,4096 FF)
    • 包含6个AdaGN残差块的流网络
    • LSD(Lagrangian Self Distillation,拉格朗日自蒸馏)解码
    • 带sentencepiece分词器的文本条件器(4000词汇表)
  2. Mimi(音频编解码器):基于SEANet的编码器/解码器,用于在音频和潜空间之间进行转换。特点:

    • 3阶段SEANet编码器/解码器(比率6、5、4)
    • 2层ProjectedTransformer(512维,8头)
    • 基于ConvTr的上采样 / 基于Conv的下采样
    • 输出:24kHz单声道音频

文件结构

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}
}

禁止使用

使用本模型必须遵守所有适用的法律法规。禁止使用的情形包括:未经明确同意进行语音模仿或克隆、传播虚假信息,以及生成非法或有害内容。