Instructions to use HY-2012/pocket-tts-zh-en.AXERA with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Pocket-TTS
How to use HY-2012/pocket-tts-zh-en.AXERA with Pocket-TTS:
from pocket_tts import TTSModel import scipy.io.wavfile tts_model = TTSModel.load_model("HY-2012/pocket-tts-zh-en.AXERA") voice_state = tts_model.get_state_for_audio_prompt( "hf://kyutai/tts-voices/alba-mackenna/casual.wav" ) audio = tts_model.generate_audio(voice_state, "Hello world, this is a test.") # Audio is a 1D torch tensor containing PCM data. scipy.io.wavfile.write("output.wav", tts_model.sample_rate, audio.numpy()) - Notebooks
- Google Colab
- Kaggle
Pocket-TTS 中英双语 · AX650 推理包
Pocket-TTS 中英双语社区版(Mimi 编解码器 + FlowLM/LSD,零样本声音克隆)在 AX650N 上的板端推理包: axmodel + int8 ONNX + Python 运行时 + 音色资源,即取即用。
导出/量化/拆图源码见 GitHub: https://github.com/ZY-2012/pocket-tts-zh-en.AXERA
实测指标(AX650N,参考音色 Vivian)
| 项目 | Python 运行时 | C++ 运行时(推荐) |
|---|---|---|
| 平均 RTF(11 条中英文本) | 0.665 | — |
| 长文(3 分块,18s 音频) | 0.674 | 0.39~0.43 |
| 短句 | 0.72~0.81 | ~0.39 |
| 首帧延迟(含音色编码+prefill) | 167 ms | ~130 ms |
| 逐帧耗时(80ms 帧) | ≈51 ms | AR 29ms + flow_net 0.6ms(关键路径),Mimi ~23ms 被流水线隐藏 |
| 回环 CER | 常规中英文本 0%(ASR 底噪内) | 同左 |
| benchmark(zh_long 40 条) | CER 0.68% / RTF 0.699 | — |
C++ 加速路径:ORT 1.23(官方 aarch64)+ 跨帧流水线(Flow-AR ∥ Mimi 解码)+ 注意力融合(opset-23 Attention,578→422 节点),比 Python 快约 1.7~1.8 倍;详见 cpp/ 与 GitHub 报告。
板端运行
环境:AX650N(BSP + axengine wheel + onnxruntime>=1.16 + numpy/soundfile/scipy/sentencepiece),Python 3.10+。
# 短句
bash run_ax650.sh "你好,世界。"
# 长文本(自动分块 + 块间 120ms)
TEXT_FILE=long.txt bash run_ax650.sh
# 流式写 WAV(生成中即可播放)
STREAM=1 bash run_ax650.sh "今天天气不错。" out_stream.wav
# 批量(载入一次跑多条,RTF 口径同 benchmark)
python3 board/pocket_tts_batch.py --texts-json configs/listen_texts.json \
--out-dir output --onnx-dir models --axmodel-dir models --cpu-model-dir models \
--mimi-split-dir models/mimi_split --spm models/chn_jpn_yue_eng_ko_spectok.bpe.model \
--reference models/Vivian.wav --threads 4 --prefill-threads 8 \
--flow-ar-model flow_ar_step_int8.onnx --flow-net-model flow_net_step_fp32.axmodel \
--flow-prefill-model flow_step_int8.onnx --mimi-tf-model mimi_transformer_step_int8.onnx \
--encoder-dir models/encoder
C++ 运行时(可选)
包内自带 aarch64 预编译二进制(cpp/bin/pocket_tts_zh_en + ORT 1.14 运行库,板端免编译):
# 主机侧分词(与 Python 前端一致): python tools/prepare_tokens.py --spm models/xxx.bpe.model --text "..." --out req.tokens
TOKENS_FILE=cpp/req/zh_short.tokens bash cpp/run_cpp.sh out.wav
实测(ORT 1.23 + 跨帧流水线 + 注意力融合 Attention 算子,AR=5 线程 ∥ mimi=2 线程):
zh_short RTF ≈0.39 / zh_long RTF ≈0.39~0.43(板端有他人负载时波动),首帧 0.13s,回环 CER 0%。
(Python 版同配置为 0.73 / 0.67;C++ 相对 Python 提速约 1.71.8 倍。)
源码与交叉编译脚本见 GitHub 仓库 cpp/。
(ORT 选 1.23.0 官方 aarch64 包:GLIBC 2.17/2.27 兼容;部分非官方高版本构建要求 GLIBC≥2.38,无法在 Ubuntu 22.04 板端加载。)
目录
run_ax650.sh # 一键推理
board/pocket_tts_axera.py # 运行时(axengine + onnxruntime 混合)
board/pocket_tts_batch.py # 批量驱动(benchmark 同款入口)
cpp/ # C++ 运行时(预编译二进制 + ORT 库 + 示例请求)
tools/prepare_tokens.py # 主机侧文本 -> token 文件
configs/listen_texts.json # 试听/自测文本集
models/
├── step_config.json # 结构参数(12.5Hz、24kHz、KV 窗口等)
├── chn_jpn_yue_eng_ko_spectok.bpe.model # SentencePiece
├── Vivian.wav # 参考音色(可替换任意 wav,自动重采样 24k)
├── flow_step_int8.onnx # FlowLM prefill(ORT int8, 101.5MB)
├── flow_ar_step_int8.onnx # FlowLM AR 步(ORT 动态 int8, 75.7MB)
├── flow_ar_step_fused_int8.onnx # FlowLM AR 步(注意力融合 Attention 算子 + int8,推荐)
├── flow_net_step_fp32.axmodel # LSD flow_net(NPU FP32, 36MB)
├── mimi_conv_step.axmodel # Mimi 卷积解码(NPU U16, 4.4MB)
├── mimi_split/mimi_transformer_step_int8.onnx # Mimi transformer(ORT int8, 6.6MB)
├── mimi_split/mimi_conv_step.onnx # 卷积解码 ONNX(CPU 回退)
├── encoder/step_encoder_40f.axmodel # 音色编码(NPU, 24.8MB)
└── step_encoder.onnx # 音色编码(CPU 精确回退)
运行时设计(混合 NPU/CPU)
| 阶段 | 后端 |
|---|---|
| 音色编码 | NPU 静态 3.2s 档(超档取尾窗、不足左补齐) |
| FlowLM prefill / AR 步 | CPU ORT int8(KV 窗口 512) |
| flow_net | NPU FP32 |
| Mimi transformer | CPU ORT int8(KV 窗口 266) |
| Mimi 卷积解码 | NPU U16 |
文本前端:标点归一化 + 数字转汉字(2026→二零二六、-3.5→负三点五)+ 三级分块(≤48 token/块)。
说明
- 质控口径:NPU/量化入环后波形会与 fp32 分叉(自回归混沌放大),PCM cos 不是合格指标;请用回环 CER + 人工试听验收(本包常规中英文本 CER 均在 ASR 底噪)。
- 参考音色可换:任意 wav(自动重采样 24kHz);同一音色在处理进程内自动缓存前缀。
- 许可:模型权重 CC BY-NC 4.0(仅非商业);请勿用于诈骗/伪造他人声音,克隆需获得本人授权。
参考 & 感谢
- 原工程:Pocket-TTS 中英双语社区版(图灵云) —— 模型权重与融合 ONNX 导出件来源
- 上游架构:kyutai-labs/pocket-tts —— CALM / Lagrangian Self Distillation
- 转换与量化工具:AXERA-TECH/Magnetar —— 模型 → ONNX → Pulsar2 → AXMODEL 工作流
- 推理与评测栈:ONNX Runtime、AXERA pyaxengine、Pulsar2(AX650 BSP)、FunASR SenseVoiceSmall(回环 CER)
- 板端评测框架:ZY-2012/Voice_Test.AXERA
- 参考音色:
Vivian.wav(来自原工程分发包)
- Downloads last month
- 8