K-ON111111/indic-parler-tts
模型介绍
文件和版本
Pull Requests
讨论
分析

indic-parler-tts — 昇腾 NPU 适配模型

赛事: 昇腾 Model Agent 模型适配大赛(第二季) 引擎: torch_npu + parler_tts 0.2.3 + transformers 4.46.1 硬件: Ascend 910B 系列(实测 Ascend910B4) 标签: npu ascend pytorch transformers

📖 模型简介

属性值
原始模型ai4bharat/indic-parler-tts
基座模型Indic Parler-TTS(Parler-TTS Mini 多语言扩展)
参数量~800M(T5-large 文本编码器 + DAC 音频编码器 + 解码器)
任务类型文本转语音(TTS,支持 21 种语言含印地语/英语)
输入格式合成文本 + 语音描述 caption
输出格式44.1kHz 单声道 WAV 音频

🔧 环境依赖

⚠️ 本模型依赖 parler_tts 库,需与 transformers==4.46.1 配套使用。

python3 -m venv --system-site-packages venv
source venv/bin/activate
pip install -r requirements.txt -i https://repo.huaweicloud.com/repository/pypi/simple/

🚀 推理步骤

⚠️ 本仓库不包含模型权重(交付件仅 inference.py / readme.md / requirements.txt / assets/), 推理前必须先从原始模型仓单独下载权重。

# 1. 下载模型权重(仓库不含权重,必须单独下载)
git clone https://gitcode.com/hf_mirrors/ai4bharat/indic-parler-tts.git .
git lfs pull

# 2. 下载描述(caption)分词器 google/flan-t5-large(T5 文本编码器需要)
#    注:--desc_tokenizer 缺省时从 HF 下载;也可先本地下载后指定目录
python3 -c "from transformers import AutoTokenizer; AutoTokenizer.from_pretrained('google/flan-t5-large').save_pretrained('./flan_t5_desc')"

# 3. 运行 NPU 推理(合成印地语语音)
python3 inference.py \
  --model_path . \
  --text "नमस्ते, यह एक हिंदी टेक्स्ट टू स्पीच परीक्षण है।" \
  --desc_tokenizer ./flan_t5_desc \
  --device npu:0

🧪 测试用例

用例 1: 印地语文本转语音

python3 inference.py \
  --model_path . \
  --text "नमस्ते, यह एक हिंदी टेक्स्ट टू स्पीच परीक्षण है।" \
  --desc_tokenizer ./flan_t5_desc \
  --device npu:0

预期输出:

[Model Agent] ✅ NPU 设备就绪: Ascend910B4
[Model Agent] ✅ 模型加载完成 → npu:0
[Model Agent] 📌 描述分词器: google/flan-t5-large | 采样率: 44100
[Model Agent] 🎤 合成文本: नमस्ते, यह एक हिंदी टेक्स्ट टू स्पीच परीक्षण है।
[Model Agent] ✅ 音频已生成 → output_hi.wav (2.88s @ 44100Hz)
[Model Agent] 📊 推理耗时: 13367.35 ms
[Model Agent] ✅ 结果已保存 → inference_result.json

📁 目录结构

.
├── inference.py          # NPU 推理脚本
├── readme.md             # 本文件
├── requirements.txt      # 依赖清单
└── assets/               # 截图素材

📝 适配说明

本模型由 昇腾 Model Agent 自动完成 NPU 适配。 ParlerTTSForConditionalGeneration(T5 文本编码器 + DAC 音频编码器)迁移至昇腾 NPU:

  • inference.py 内置 NPU 适配 patch:
    1. 容忍 dac 模型类型重复注册(transformers≥4.46 已原生注册 DAC);
    2. 补齐 transformers 4.46 缺失的 GenerationConfig._*_token_tensor 属性(自动放到 NPU 设备);
    3. 兼容缺失的 _get_logits_warper(旧版实现移植)。
  • 双分词器:描述(caption)用 T5 分词器,合成内容用模型自身多语言分词器;
  • 推理完成后由 DAC 音频解码器直接输出 44.1kHz 波形。