Downloads · 30 days
9
33% of all-time downloads
HY-2012/pocket-tts-zh-en-pinyin.AXERA
pocket-tts-zh-en-pinyin.AXERA is a text-to-speech model from HY-2012. Use it when you need text read aloud. It is set up for axera. The card lists the license as other.
Pocket-TTS 中英双语社区版(拼音版)(Mimi 编解码器 + FlowLM/LSD,零样本声音克隆, 中文按带声调拼音建模,多音字更准)在 AX650N 上的板端推理包: axmodel + int8 ONNX + Python 运行时 + 音色/词表资源,即取即用。
Downloads · 30 days
9
33% of all-time downloads
All-time downloads
27
Public
Repo size
477 MB
Likes
0
Public
Click a slice to open those files.
.onnx393 MB · 82%
From the Hugging Face model README
Pocket-TTS 中英双语社区版(拼音版)(Mimi 编解码器 + FlowLM/LSD,零样本声音克隆, 中文按带声调拼音建模,多音字更准)在 AX650N 上的板端推理包: axmodel + int8 ONNX + Python 运行时 + 音色/词表资源,即取即用。
交付文件只有 int8 ONNX(供应商动态量化),本包把其中的 FlowLM 保留在 CPU int8、 将 float 的
flow_net/mimi 卷积编译为 axmodel,构成混合 NPU/CPU 推理。
| 项目 | Python 运行时 | C++ 运行时(推荐) |
|---|---|---|
| 平均 RTF(benchmark 4 数据集) | 0.783 → 0.699(int8 mimi_tf) | — |
| zh_long | 0.687(int8 mimi_tf) | 0.40~0.44 |
| zh_short | 0.767(aishell3 均长 1.25s 口径) | 0.41~0.42 |
| 首帧延迟(含音色编码+prefill) | 205 ms | 133~146 ms |
| 相对基线(fp32 mimi_tf) | -10~11%(mimi_tf 22→15.5ms/帧) | AR 融合再 -7%(AR 32.8→30.3ms) |
| 回环 CER(SenseVoiceSmall) | 常规中英文本 0%;多音字 0%;绕口令 25%(ASR 极限) | |
| 对照:vendor int8(主机 CPU) | RTF ≈0.20,同文本 CER 一致或略差 |
逐条指标(RTF/首帧/CER)与机器可读数据:metrics.json、metrics_CER.tsv。
| 数据集 | 指标 | 数值 | ASR 地板 | 热启动 RTF |
|---|---|---|---|---|
| aishell3(200 条,zh) | 回环 CER | 12.45% | 2.90% | 0.7631 |
| ljspeech(200 条,en) | 回环 WER | 5.48% | 5.81% | 0.6684 |
| zh_long(40 条,zh) | 回环 CER | 1.16% | — | 0.6865 |
| zh_hardcase(150 条,zh) | 回环 CER | 4.30% | — | 0.6776 |
口径:ASR=firered,RTF 不含加载;结果同步于 ZY-2012/Voice_Test.AXERA。
包内自带 aarch64 预编译二进制(cpp/bin/,含 ORT 1.23 运行库,免编译):
主线程 Flow-AR+flow_net ∥ worker 线程 Mimi 解码(跨帧流水线),并把每层注意力
融合为单个 opset-23 Attention 算子(674→518 节点,数值等价)。
# 主机侧分词(与板端前端一致)
python3 tools/prepare_tokens.py --text "你好,世界。" --out req.tokens
# 板端
TOKENS_FILE=cpp/req/zh_short.tokens bash cpp/run_cpp.sh out.wav
实测(AX650N,融合 AR + int8 mimi_tf):zh_short RTF ≈0.410.42 / zh_long ≈0.400.44,首帧 133~146ms,回环 CER 0%。
(Python 版 benchmark 均 RTF 0.70;C++ 相对 Python 提速约 1.7x。)
环境:AX650N(BSP + axengine wheel + onnxruntime + numpy/soundfile/scipy/sentencepiece/pypinyin),Python 3.10+。
# 短句(NPU: flow_net FP32 + mimi_conv U16 + 编码器 40f)
bash run_ax650.sh "你好,世界。"
# 长文本(自动分块 + 块间 120ms)
TEXT_FILE=long.txt bash run_ax650.sh
# 批量(载入一次跑多条,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/cpu \
--mimi-split-dir models/mimi_split --tokens-txt models/tokens.txt \
--bpe-model models/chn_jpn_yue_eng_ko_spectok.bpe.model --reference models/Vivian.wav \
--threads 4 --prefill-threads 8 --flow-ar-model flow_ar_step.onnx \
--flow-prefill-model flow_step_windowed.onnx --mimi-tf-model mimi_transformer_step.onnx \
--encoder-dir models/encoder --flow-net-model flow_net_step_fp32.axmodel \
--mimi-conv-model mimi_conv_step.axmodel
精确模式(与 vendor int8 逐位一致,flow_net 回 CPU 原图,慢一些):
把 --npu-flow-net 改为 0(脚本会读取 models/cpu/flow_net_step.onnx)。
run_ax650.sh # 一键推理
board/pocket_tts_axera.py # 运行时(axengine + onnxruntime 混合,含拼音前端)
board/pocket_tts_batch.py # 批量驱动(benchmark 同款入口)
cpp/ # C++ 运行时(预编译二进制 + ORT 库 + 一键脚本 + 示例请求)
configs/listen_texts.json # 试听/自测文本集
tools/pinyin_frontend.py # 主机侧拼音分词(与板端一致)
models/
├── step_config.json # 结构参数(12.5Hz、24kHz、KV 窗口等)
├── tokens.txt # 词表(行号 = token id;拼音+BPE+标点)
├── chn_jpn_yue_eng_ko_spectok.bpe.model # 英文/标点 BPE
├── Vivian.wav # 参考音色(可替换任意 wav,自动重采样 24k)
├── flow_step_windowed.onnx # FlowLM prefill(int8 + KV 窗口补丁, 114MB)
├── flow_ar_step.onnx # FlowLM AR 步(int8 精简图, 76MB)
├── flow_ar_step_fused.onnx # FlowLM AR 步(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.onnx # Mimi transformer(CPU fp32, 25.5MB)
├── mimi_split/mimi_transformer_step_int8.onnx # Mimi transformer(CPU int8, 6.6MB,推荐)
├── mimi_split/mimi_conv_step.onnx # 卷积解码 ONNX(CPU 回退)
├── encoder/step_encoder_40f.axmodel # 音色编码(NPU, 24.8MB)
├── cpu/flow_net_step.onnx # flow_net 原图(CPU 精确回退, 39MB)
└── step_encoder.onnx # 音色编码(CPU 精确回退)
tokens.txt 行号即 token id;OOV 跳过。板端需要 pypinyin(实测 0.55.0)。与 vendor demo.py 的 token 逐条一致(已对拍)。
Vivian.wav(来自原工程分发包)