Configuration Parsing Warning:Invalid JSON for config file config.json

Hojo-TTS-Light-40M — AX650/NPU3 预编译模型 + C++ SDK(s8 修复版)

Hojo-TTS-Light-40M 中文/英文 TTS(24kHz,15 音色)在爱芯 AX650/NPU3 上的预编译部署包。 全链路 NPU:LM(ax-llm s8)+ fine_local + decoder。

相对上一版的改进:

  • LM 权重由 s4/W4A16 升级为 s8(Pulsar2 7.0 llm_build2),step0 logits 精度更高、长程生成更稳
  • 修复生成随机性问题:上一版 temperature=0.0 被运行时钳制为 1.0,实际退化为无种子 softmax 采样, 导致每次生成完全不同、偶发近乎静音;本版固定为 argmax 确定性生成,相同输入多次运行 token 序列完全一致
  • 修复全链路音频质量(v2,2026-08-10):
    • fine_local 输入需对 LM hidden 做 RMS 归一化(axllm 输出未归一化,参考管线 RMS=1)
    • decoder bits padding 必须全零(上一版复制末帧污染输出)
    • decoder_sq 输出为 log-mag([nf, 2048] 全帧布局),ISTFT 读取 stride 修正为 2048
    • 修复后示例音频经 ASR 验证可正常转写(EN: "Hello, this is a demo.")
  • 示例音频已更新为修复版实机生成

内容

  • models/:预编译模型
    • lm_s8/:LM 10 层 decode-only axmodel + post + embedding(Pulsar2 7.0 llm_build2,s8/bf16 hidden)
    • fine_local.axmodel(INT8,cos 0.9997)
    • decoder_sq.axmodel(SmoothQuant+U16,mag 0.998+ / phase 0.95-0.97)
    • 音色 / 词典 / speaker_vecs / id2code / speaker_embeds
  • bin/:C++ 可执行(AX650/aarch64)
    • hojo_tts_cpp / tts_driver:LM 生成 + 全链路出 wav

用法(板端)

./bin/hojo_tts_cpp \
  models/lm_s8 <embeds.bin> <num_tokens> 17659 128 \
  models/fine_local.axmodel models/decoder_sq.axmodel \
  models/lm_s8/embed_tokens.bin models/speaker_vecs.bin \
  <voice_idx> models/id2code.bin out.wav

<embeds.bin> 为文本 prompt 的 BF16 embedding(50 token 示例见 models/README.md 说明), 输出 out.wav(24kHz)。音色索引 0-14(voice_ids 见 models/Hojo-TTS-Light-40M-voice.npz)。

示例音频(24kHz WAV,板端 s8 实机生成)

中文示例(voice hojo_zh_f_01):

英文示例(voice hojo_en_m_02):

精度 / 性能

  • LM s8:step0 top1 命中,前 30 步与 fp32 ONNX greedy 完全一致(量化累积后分叉属预期)
  • decode ~175 tok/s;全链路 RTF≈0.43(decoder_sq)
  • 生成确定性:相同输入多次运行 token 序列一致

复现

模型转换(ONNX → HF safetensors → llm_build2)与 C++ SDK 构建源码见 GitHub:ml-inory/hojo-tts-light.axera

Downloads last month
-
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support