Downloads · 30 days
44
15% of all-time downloads
AXERA-TECH/chatterbox-onestep
chatterbox-onestep is a text-to-speech model from AXERA-TECH. Use it when you need text read aloud. The card lists the license as apache-2.0.
精度 cosine ≈ 0.9932 | S3Gen 单步 181 ms | HiFT 声码器上板(U16) | 端到端 RTF ≈ 0.3–1.1
Downloads · 30 days
44
15% of all-time downloads
All-time downloads
285
Public
Repo size
1.1 GB
Likes
0
Public
Click a slice to open those files.
.axmodel296 MB · 99%
From the Hugging Face model README
精度 cosine ≈ 0.9932 | S3Gen 单步 181 ms | HiFT 声码器上板(U16) | 端到端 RTF ≈ 0.3–1.1
想要复现导出与编译流程、查看或修改 Python/C++ SDK 源码(含 OpenAI-Compatible server/client)、 运行 DSP 自测?源码仓库:https://github.com/ml-inory/chatterbox-onestep
model_convert/:ONNX 导出 + Pulsar2 编译脚本(可复现本 AXMODEL)python/ / cpp/:完整 SDK 源码与示例cpp/tests/:FFT/Griffin-Lim 本地自测| 场景 | 耗时 | RTF |
|---|---|---|
| AX650C 板端 NPU:S3Gen 单步(mel) | 181 ms / 512 帧(10.24s 音频) | ≈ 0.018 |
| AX650C 板端 NPU:端到端(S3Gen + HiFT 声码器,C++ server) | ~0.7 s / 2.3s 音频 | ≈ 0.3 |
| AX650C 板端 NPU:端到端(Python server,base/clone) | ~1.1 / ~1.9 s | ≈ 0.5 |
| NVIDIA L4 GPU(同模型,单步) | 47.2 ms | ≈ 0.0046 |
| 教师 10 步(L4,参考) | ~540 ms/句 | ≈ 0.06 |
RTF = 生成耗时 / 音频时长,< 1 即快于实时。本模型 S3Gen 单步在板端生成 10 秒音频的 mel 只需约 0.18 秒;相比教师 10 步,单步化带来约 10 倍加速(RTF 0.06 → 0.018,同板卡口径)。 端到端(含声码器)在板端仍快于实时(C++ RTF ≈ 0.3)。
早期板端用 numpy/C++ Griffin-Lim(GL)做 mel→wav,高频损失严重、听感发糊 (>4kHz 能量约为 torch 版一半)。现已把 HiFT 神经声码器(20.8M 参数)编译上板:
models/hifift_f0.axmodel:mel → f0(纯卷积,U8,3.5 MB)models/hifift_decode.axmodel:mel + 源激励 STFT → raw(U16 双输出,27 MB)model_convert/hift_export.py 与 GitHub 源码仓库bash setup.sh
bash run.sh
| 目录 | 用途 |
|---|---|
models/ | AXMODEL 模型文件 + 元信息 |
python/ | Python SDK(pyaxengine) |
cpp/ | C++ SDK(AX Engine runtime) |
model_convert/ | 模型导出 & 编译脚本(可复现) |
reports/ | 各阶段报告 |
setup.sh | 一键安装依赖 |
run.sh | 一键运行推理 |
Q: import 报错找不到 pyaxengine?
A: 运行 bash setup.sh 会自动安装。
Q: 怎么在自己的代码里用?
A: 参考 python/demo.py,核心就 3 行:
from chatterbox-s3gen-onestep_sdk import ModelSDK
sdk = ModelSDK("models/model.axmodel")
result = sdk.run(your_input)
Q: 想自己重新编译?
A: 进入 model_convert/,确保 Pulsar2 可用后运行 bash compile_pulsar2.sh。
原始编译使用 Docker 镜像 docker-registry.aitsw.axera-tech.com/pulsar2:7.0。
三句话的端到端合成示例:学生 1 步(本模型) 与 教师 10 步(官方) 对比,均为 24kHz WAV、响度归一化。
<audio controls src="examples/audio/s0_student1.wav"></audio> <audio controls src="examples/audio/s0_teacher10.wav"></audio>
<audio controls src="examples/audio/s1_student1.wav"></audio> <audio controls src="examples/audio/s1_teacher10.wav"></audio>
<audio controls src="examples/audio/s2_student1.wav"></audio> <audio controls src="examples/audio/s2_teacher10.wav"></audio>
提供 OpenAI 风格的 POST /v1/audio/speech(另含 GET /v1/models):输入 S3 speech token 序列,
输出 wav(response_format=wav)或 mel(response_format=mel)。Python 与 C++ 两版均可在 AX 板上运行,
不依赖 torch / ffmpeg / FFTW;文本 → token 的 T3 环节在宿主(torch)完成后调用本服务。
声码器默认使用
models/hifift_f0.axmodel+models/hifift_decode.axmodel(HiFT); 若缺省或指定不存在的路径则回退 Griffin-Lim。
python3 python/openai_server.py --model models/model.axmodel \
--clone-model models/model_clone.axmodel --port 8000
python3 python/openai_client.py --tokens-npy sample_input/tokens.npy --out out.wav
本仓库
cpp/bin/提供 aarch64 预编译产物(Release + fast-math);C++ 完整源码见 GitHub:https://github.com/ml-inory/chatterbox-onestep
mkdir -p cpp/build && cd cpp/build
cmake .. -DCMAKE_TOOLCHAIN_FILE=${AX_RUNTIME_ROOT}/toolchain.cmake -DAX_RUNTIME_ROOT=${AX_RUNTIME_ROOT}
make -j$(nproc)
./openai_server --model ../../models/model.axmodel \
--f0-model ../../models/hifift_f0.axmodel --decode-model ../../models/hifift_decode.axmodel \
--assets ../assets --port 8000
./openai_client --url http://127.0.0.1:8000/v1/audio/speech --tokens-file <tokens_int32.bin> --out out.wav
不想自己编译也可以直接用 cpp/bin/ 里的预编译产物(板端加 LD_LIBRARY_PATH=/soc/lib):
./cpp/bin/openai_server --model models/model.axmodel \
--f0-model models/hifift_f0.axmodel --decode-model models/hifift_decode.axmodel \
--assets cpp/assets --port 8000
说明:
cpp/assets/ 提供 mel_inv_24k.bin、default_embedding.bin 与 hift_linear_w/b.bin;python/hift_vocoder.py 与 cpp/include/hift_dsp.hpp(与 torch 原版一致,误差 ~1e-7)。models/model_clone.axmodel 支持参考音频 → 克隆音色(prompt 条件 + 音色 embedding),板端
调用方式与提取脚本(python/extract_voice_embedding.py)详见 GitHub 源码仓库:
https://github.com/ml-inory/chatterbox-onestep
用 LJ001-0001 参考人声克隆的板端合成结果(模型:model_clone.axmodel):
参考音频(被克隆的人声)
<audio controls src="examples/audio/clone_reference.wav"></audio>
克隆合成结果(3.60s,24kHz)
<audio controls src="examples/audio/clone_output.wav"></audio>