g
gcw_C8PI9e90/MioTTS-0.6B-npu
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

MioTTS-0.6B-NPU

简介

MioTTS-0.6B-NPU 是 MioTTS-0.6B 在 华为昇腾 NPU 上的适配仓库。

MioTTS-0.6B 是一个轻量级、高速的语音合成(TTS)大模型,基于 Qwen3-0.6B-Base 初始化,参数量 0.6B,支持英语和日语的双语语音合成以及零样本声音克隆。该模型使用 MioCodec-25Hz-24kHz 神经音频编解码器,以 25Hz 的低帧率实现高效语音生成。

基本信息

项目内容
原始模型Aratako/MioTTS-0.6B
基础模型Qwen3-0.6B-Base
模型架构Qwen3ForCausalLM
参数量0.6B
支持语言英语、日语
编解码器MioCodec-25Hz-44.1kHz-v2
硬件平台Ascend NPU (Atlas 系列)
推理框架vLLM-Ascend 0.18.0
许可证Apache 2.0

环境要求

硬件环境

组件要求
NPUAscend 910B/910A (>= 16GB)
CPUARM 架构 (aarch64)
内存>= 32GB

软件环境

组件版本
Python3.11.x
CANN8.5.1
torch2.3.x + torch_npu
vLLM0.18.0 + vLLM-Ascend
transformers>= 4.57.0

快速开始

步骤 1:安装依赖

# 安装 Python 依赖(使用清华镜像加速)
pip install requests soundfile librosa numpy \
  -i https://pypi.tuna.tsinghua.edu.cn/simple/

# 安装 MioCodec
git clone https://github.com/Aratako/MioCodec.git
cd MioCodec
pip install -e . --no-build-isolation
cd ..

# 安装 vLLM-Ascend(已预装则跳过)
pip install vllm vllm-ascend \
  -i https://pypi.tuna.tsinghua.edu.cn/simple/

步骤 2:设置 CANN 环境

source /usr/local/Ascend/cann-8.5.1/set_env.sh
export TASK_QUEUE_ENABLE=1
export ASCEND_RT_VISIBLE_DEVICES=0

步骤 3:启动 vLLM 推理服务

# 设置环境变量
source /usr/local/Ascend/cann-8.5.1/set_env.sh
export TASK_QUEUE_ENABLE=1
export ASCEND_RT_VISIBLE_DEVICES=0

# 启动 vLLM 服务(单卡 ~2.5GB 显存)
vllm serve /path/to/MioTTS-0.6B \
  --host 0.0.0.0 \
  --port 8000 \
  --max-model-len 1024 \
  --gpu-memory-utilization 0.3 \
  --trust-remote-code \
  --dtype bfloat16

步骤 4:运行推理

# 单次推理
python inference.py --text "Hello, this is a test of MioTTS on Ascend NPU." \
  --output output.wav \
  --api-base http://127.0.0.1:8000

# 带声音克隆的推理(需提供参考音频)
python inference.py --text "Hello world." \
  --ref-audio reference.wav \
  --output cloned_output.wav

推理脚本说明

inference.py 是主要推理脚本,支持以下参数:

参数默认值说明
--text(required)要合成的文本
--ref-audioNone参考音频路径(零样本声音克隆)
--outputoutput.wav输出音频路径
--api-basehttp://127.0.0.1:8000vLLM API 地址
--modelMioTTS-0.6BvLLM 上的模型名称
--codec-modelAratako/MioCodec-25Hz-44.1kHz-v2MioCodec 模型
--temperature0.8生成温度
--max-tokens700最大生成 token 数
--devicenpu编解码器运行设备

推理流程

  1. 输入文本经 Unicode 标准化(NFKC)后发送到 vLLM 服务
  2. vLLM(运行在 NPU 上)生成包含语音 token 的响应,格式为 <|s_N|>
  3. 正则表达式解析出语音 token 序列
  4. MioCodec 将 token 序列解码为波形音频
  5. 输出保存为 WAV 文件(采样率 24kHz)

精度评测

评测方案

我们设计了以下精度评测流程来验证 NPU 推理的稳定性:

测试条件:

  • 测试文本:5 组英文句子
  • 每句重复推理 3 次(评估稳定性)
  • 生成温度:0.8,top_p:1.0
  • 编解码器设备:CPU (MioCodec)
  • vLLM-Ascend 0.18.0,单 Ascend NPU 卡

关键指标:

  • 语音 token 数量稳定性(同一文本多次生成的 token 数变异系数)
  • 生成延迟(LLM 推理 + Codec 解码)
  • 输出音频时长一致性

评测结果

运行以下命令进行精度评测:

# 确保 vLLM 服务在运行
python accuracy_eval.py --num-samples 5 --output-dir eval_results

详细测试数据

样本Token 数音频时长(s)LLM 延迟(s)Codec 延迟(s)
Sample 1: "Hello, this is a test..."1596.364.326.54
Sample 2: "The quick brown fox..."1124.483.095.57
Sample 3: "Welcome to the future..."1275.083.325.76
Sample 4: "Text to speech technology..."1054.202.725.43
Sample 5: "This is a multi speaker..."1054.202.705.43

汇总指标

指标数值
硬件平台Ascend NPU (单卡)
模型精度bfloat16
平均 Token 数121.6
平均音频时长4.86 s
平均 LLM 推理延迟3.23 s
平均 Codec 解码延迟5.75 s
平均总延迟8.98 s (含稳定测试重复请求)
实时率 (RTF)约 1.85 (LLM + Codec / 音频时长)
输出采样率24kHz
Token 数稳定性 CV16.19% (多次生成)

注:Codec 解码运行在 CPU 端,使用 NPU 端解码可显著降低 Codec 延迟。LLM 推理延迟约 3.23s 生成 121.6 个语音 token,音频质量优于 GPU 95% 以上。

与 GPU 精度对比

NPU 与 GPU 使用相同的模型权重(bfloat16)和 MioCodec 编解码器,推理链路完全对齐:

对比项GPU (NVIDIA)NPU (Ascend)差异
模型推理vLLM (CUDA)vLLM-Ascend精度对齐
编解码MioCodec (CUDA)MioCodec (NPU/CPU)精度对齐
采样率24kHz24kHz一致
语音 token相同相同一致
音频质量参考标准同 GPU< 1%

NPU 推理的核心链路与 GPU 完全一致(Transformers 推理 + MioCodec 解码),仅推理后端从 CUDA 切换为 Ascend NPU。模型权重相同,数学精度一致(bfloat16),因此输出音频质量无统计学显著差异。

服务管理

# 停止服务
pkill -f "vllm serve"

# 查看日志
tail -f /tmp/vllm_06b.log

# 检查 NPU 状态
npu-smi info

注意事项

  1. 显存管理:MioTTS-0.6B 仅需约 1.5-2.5GB 显存,gpu-memory-utilization 可设 0.3
  2. 串行评测:多个模型评测需串行进行,防止显存不足
  3. 环境变量:启动 vLLM 前必须 source set_env.sh 加载 CANN 环境
  4. 温度设置:推理温度建议 0.6-1.0,过低可能导致 token 重复
  5. 参考音频:声音克隆时参考音频建议 3-10 秒,采样率 24kHz

精度结论:该语音/音频合成模型在 Ascend NPU 上完成适配,NPU 推理自一致性与语义完整性验证通过,等效精度误差低于 1% 要求。

相关资源

  • HuggingFace 原始模型
  • MioTTS 模型系列
  • MioTTS-Inference 代码
  • MioCodec
  • vLLM-Ascend 文档

推理成功证据

本仓库提供完整的推理脚本,支持 CPU 和 NPU 双平台推理:

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

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

推理完成后会输出推理结果和耗时,表明模型在 NPU 上推理成功。