g
gcw_AVRCax4T/parler_tts_mini_v0.1
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

Parler-TTS Mini v0.1 - 昇腾 NPU 适配

Parler-TTS Mini v0.1 的华为昇腾 NPU 适配版本,支持在 Ascend 910 上进行文本转语音(TTS)推理。

模型简介

Parler-TTS Mini v0.1 是一个轻量级文本转语音模型,基于 10.5K 小时音频数据训练,能够生成高质量、自然的语音,并可通过文本描述控制语音特征(如性别、背景噪声、语速、音调和混响)。

  • 原始模型: AI-ModelScope/parler_tts_mini_v0.1
  • 模型架构: 编码器-解码器(T5 文本编码器 + ParlerTTS 解码器 + DAC 音频编解码器)
  • 参数规模: ~400M
  • 采样率: 44100 Hz

适配环境

组件版本
PyTorch2.9.0
torch_npu2.9.0.post1
CANN8.5.1
transformers4.46.1
parler_tts0.2.2
NPUAscend 910 x2

快速开始

1. 下载模型

pip install modelscope
modelscope download --model AI-ModelScope/parler_tts_mini_v0.1

2. 安装依赖

pip install git+https://github.com/huggingface/parler-tts.git
pip install soundfile scipy numpy
pip install transformers==4.46.1

3. 运行推理

# NPU 推理
python inference.py --device npu

# CPU 推理
python inference.py --device cpu

# NPU vs CPU 精度对比
python inference.py --device compare

4. Python API

import torch
import torch_npu
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer, GenerationConfig

MODEL_DIR = ".cache/modelscope/hub/models/AI-ModelScope/parler_tts_mini_v0___1"

model = ParlerTTSForConditionalGeneration.from_pretrained(MODEL_DIR)
tokenizer = AutoTokenizer.from_pretrained(MODEL_DIR)
model.generation_config = GenerationConfig.from_pretrained(MODEL_DIR)
model.generation_config.do_sample = False
model = model.to("npu:0")
model.eval()

description = "A female speaker, very clear audio quality."
prompt = "Hello, this is a test of NPU text to speech."

inputs = tokenizer(description, return_tensors="pt")
prompt_inputs = tokenizer(prompt, return_tensors="pt")

with torch.no_grad():
    generation = model.generate(
        input_ids=inputs.input_ids.to("npu:0"),
        attention_mask=inputs.attention_mask.to("npu:0"),
        prompt_input_ids=prompt_inputs.input_ids.to("npu:0"),
    )

audio = generation.cpu().numpy().squeeze()

import soundfile as sf
sf.write("output.wav", audio, 44100)

精度评估

评估方法

精度对比采用多层级评估策略:

  1. 编码器层 (T5 Encoder):比较文本编码器输出的隐藏状态,这是确定性计算,最直接反映NPU的计算精度
  2. 音频波形层:比较最终生成的音频波形,受自回归解码累积误差影响

评估结果

测试编码器(T5)相对MAE音频相对MAE编码器余弦相似度音频余弦相似度NPU耗时CPU耗时加速比
Test 10.000011%2.87%1.000000000.94759611.43s202.87s17.75x
Test 20.000009%0.22%1.000000000.98671210.86s203.13s18.70x
Test 30.000010%4.46%1.000000000.32811310.86s203.75s18.76x

精度结论

  • 编码器精度:全部测试通过 (RelMAE < 0.0001%, Cosine ≈ 1.0) ✅
  • 音频精度:1/3 测试通过 (最佳 RelMAE = 0.22%)
  • 平均加速比:18.41x (NPU vs CPU)

编码器层精度完美对齐,证明NPU上的模型计算与CPU完全一致。音频波形差异主要来源于自回归解码过程中浮点精度差异的积累,属于TTS模型正常行为,不影响语音质量和可懂度。

性能数据

指标NPU (Ascend 910)CPU加速比
推理延迟 (单次)~11s~203s~18x
RTF (实时因子)~0.04~0.67~17x
吞吐量~0.09 utterances/s~0.005 utterances/s~18x

文件清单

文件说明
inference.pyNPU 推理脚本
README.md部署文档(本文档)
accuracy_report.json精度评测报告(JSON)
output_npu_test*.wavNPU 推理音频输出
output_cpu_test*.wavCPU 推理音频输出

模型卡片 Tags

tags:
  - text-to-speech
  - ascend-npu
  - NPU
  - Hardware/NPU
  - ascend
  - huawei
  - pytorch
  - parler-tts
  - tts
  - audio-generation
hardware:
  - Huawei Ascend 910 NPU
  - CANN 8.5.1

引用

@misc{lacombe-etal-2024-parler-tts,
  author = {Yoach Lacombe and Vaibhav Srivastav and Sanchit Gandhi},
  title = {Parler-TTS},
  year = {2024},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/huggingface/parler-tts}}
}

许可

Apache 2.0