HY-2012 commited on
Commit
0058acd
·
verified ·
1 Parent(s): 4b8c0f4

docs: simplify customer README and align runtime package

Browse files

Publish the customer-facing README and synchronized standard package from MOSS-TTS-Nano.AXERA_HUG.

Files changed (1) hide show
  1. README.md +51 -151
README.md CHANGED
@@ -8,197 +8,97 @@ tags:
8
  license: apache-2.0
9
  ---
10
 
11
- # MOSS-TTS-Nano.AXERA_HUG
12
 
13
- AX650 量化模型和板端推理包。该仓库只发布量化 `.axmodel`、质量路径所需的 decode
14
- ONNX、最小 Python 推理代码、AX650 AArch64 可执行文件及 ONNX Runtime 运行库,不包含
15
- C++ 源码或浮点 checkpoint。
16
 
17
- 源码模型导出、校准和 Pulsar2 量化工程
18
 
19
- ```text
20
- https://github.com/AXERA-TECH/Moss-TTS-Nano.AXERA
21
- ```
22
-
23
- ## 发布内容
24
-
25
- ```text
26
- models/axmodels_650/
27
- ├── tts_prefill.axmodel
28
- ├── tts_decode_step.axmodel # 量化模型,诊断/低延迟实验用
29
- ├── tts_local_fixed_sampled_frame.axmodel
30
- └── codec_decode.axmodel
31
-
32
- models/onnxmodels/
33
- ├── moss_tts_decode_step.onnx # 默认质量路径:static320 FP32
34
- ├── moss_tts_decode_step.data
35
- └── candidates/
36
- ├── default_512_fp32/ # 原始 512-KV FP32 备份
37
- ├── static320_fp32/ # 默认模型的来源副本
38
- └── static320_int8_qdq/ # 可选速度候选,静态 KV=320
39
-
40
- bin/moss_tts_ax650/
41
- ├── moss_tts_ax650
42
- ├── libonnxruntime.so.1.23.2
43
- └── libonnxruntime_providers_shared.so
44
- ```
45
-
46
- ## 推荐质量路径
47
-
48
- ```text
49
- tts_prefill.axmodel
50
- → tts_local_fixed_sampled_frame.axmodel
51
- → moss_tts_decode_step.onnx(ONNX Runtime CPU)
52
- → codec_decode.axmodel
53
- ```
54
-
55
- 这是当前默认的质量和速度平衡路径。它使用 static320 FP32 decode ONNX,板端多句测试中
56
- 与原始 512-KV FP32 路径生成的 Token 和 WAV 完全一致。稳态结果:
57
-
58
- ```text
59
- Total RTF: 1.10–1.13
60
- Generation RTF: 1.01–1.04
61
- Decode: 69–70 ms/frame
62
- ```
63
-
64
- 以上数值来自板端空闲、关闭其他 NPU/CPU 服务后的多句稳态测试;单句冷启动或板端同时运行
65
- `axllm serve` 等任务时,ONNX CPU decode 会受到资源争用影响,RTF 可能显著升高。模型加载
66
- 时间不计入 RTF,但首帧运行时初始化和系统负载仍会影响实测值。
67
-
68
- 模型加载时间不计入 RTF。默认 static320 路径要求:
69
 
70
- ```text
71
- 实际 prefill 长度 + max_new_frames <= 320
72
- ```
73
-
74
- 当前脚本默认 `max_new_frames=110`、decode warmup 为 32 帧;长文本请按标点分段。全 AXModel 路径速度约 `RTF 0.44–0.48`,但长句存在提前停止
75
- 或尾部噪音风险,因此仅保留为诊断选项。
76
-
77
- ## 可选速度候选:static320 INT8 QDQ
78
-
79
- `models/onnxmodels/candidates/static320_int8_qdq/` 是经过主机和板端测试的 ONNX Runtime
80
- INT8 候选,只量化常量权重 Linear,注意力、LayerNorm、Softmax 和 KV 保持 FP32。它的静态
81
- KV 容量为 320,必须满足:
82
-
83
- ```text
84
- 实际 prefill 长度 + max_new_frames <= 320
85
- ```
86
-
87
- 板端多句测试在一次模型已缓存、32 帧 decode warmup 的运行中得到:
88
-
89
- ```text
90
- Total RTF:0.8462
91
- Generation RTF:0.7547
92
- ```
93
-
94
- 这是最佳观测值,不是空闲/繁忙状态下都能保证的固定值;同一板端后台服务运行时曾测得
95
- `RTF 1.8502`,并出现过 AXEngine 句柄资源不足。因此候选只作为实验速度路径,默认发布
96
- 路径仍保持 FP32 ONNX。它的 Token 流与默认 FP32 质量路径也不是逐 token 一致,使用前必须
97
- 在目标板端试听确认。示例:
98
-
99
- ```bash
100
- bash run_ax650.sh \
101
- --text "你好,今天是美好的一天。" \
102
- --decode-backend onnx \
103
- --decode-onnx models/onnxmodels/candidates/static320_int8_qdq/moss_tts_decode_step.onnx \
104
- --max-new-frames 110 \
105
- --decode-warmup-frames 32 \
106
- --output-wav outputs/static320_int8_qdq.wav
107
- ```
108
 
109
- 原始 512-KV FP32 模型保存在 `models/onnxmodels/candidates/default_512_fp32/`,仅用于
110
- 回归对比。若需使用原始路径:
111
 
112
  ```bash
113
- bash run_ax650.sh \
114
- --text "你好,今天是美好的一天。" \
115
- --decode-backend onnx \
116
- --decode-onnx models/onnxmodels/candidates/default_512_fp32/moss_tts_decode_step.onnx \
117
- --max-new-frames 128 \
118
- --decode-warmup-frames 32 \
119
- --output-wav outputs/default_512_fp32.wav
120
  ```
121
 
122
- ## Python 推理
123
 
124
- 板端安装 Python 依赖和匹配的 `pyaxengine/axengine`:
125
 
126
- ```bash
127
- python3 -m pip install -r requirements.txt
128
- python3 -c "import axengine, numpy, sentencepiece; print('Python runtime OK')"
129
- ```
130
-
131
- 运行 Python 参考链路:
132
 
133
  ```bash
134
  python3 python/infer_moss_tts.py \
135
  --config-dir config \
136
  --axmodel-dir models/axmodels_650 \
137
  --onnx-dir models/onnxmodels \
138
- --text "明天上午九点我们起去公园散步,然后喝一杯热咖啡。" \
139
  --voice Junhao \
140
  --sample-mode fixed \
141
- --local-fixed-backend axmodel \
142
  --prefill-backend axmodel \
 
143
  --decode-backend onnx \
144
- --output-audio-path outputs/python_decode_onnx.wav
145
  ```
146
 
147
- 若要在 Python 中测试全 AXModel 诊断路径:
148
-
149
- ```bash
150
- python3 python/infer_moss_tts.py \
151
- --config-dir config --axmodel-dir models/axmodels_650 \
152
- --onnx-dir models/onnxmodels \
153
- --text "你好,今天是美好的一天。" --voice Junhao \
154
- --decode-backend axmodel \
155
- --output-audio-path outputs/python_all_axmodel.wav
156
- ```
157
 
158
- ## C++ AX650 推理
159
 
160
- `bin/moss_tts_ax650/moss_tts_ax650` 交叉编译,需在板端编译。运行库位于同目录,
161
- 脚本会自动设置 `LD_LIBRARY_PATH`:
162
 
163
  ```bash
164
  bash run_ax650.sh \
165
- --text "明天上午九点我们起去公园散步,然后喝一杯热咖啡。" \
166
  --voice Junhao \
167
- --decode-backend onnx \
168
- --output-wav outputs/cpp_decode_onnx.wav \
169
- --output-log outputs/cpp_decode_onnx.log
170
  ```
171
 
172
- 于诊断量化 AXModel
173
 
174
- ```bash
175
- bash run_ax650.sh \
176
- --text "你好,今天是美好的一天。" \
177
- --decode-backend axmodel \
178
- --output-wav outputs/cpp_all_axmodel.wav
179
  ```
180
 
181
- 直接运行二进制时,必须从包根目录执行
182
 
183
- ```bash
184
- export LD_LIBRARY_PATH="$PWD/bin/moss_tts_ax650:${LD_LIBRARY_PATH:-}"
185
- ./bin/moss_tts_ax650/moss_tts_ax650 --help
186
  ```
187
 
188
- ## 工具链说明
 
189
 
190
- 源码仓库记录的本机工具链路径为:
191
 
192
- ```text
193
- GCC:/data/shared/huyuan/toolchains/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu
194
- AX650 BSP:/data/shared/huyuan/toolchains/ax650n_bsp_sdk/msp/out
195
- ```
196
 
197
- 这些工具链不上传到 Hugging Face。C++ 源码和交叉编译方法见配套 GitHub 仓库。
 
 
198
 
199
- ## 完整性检查
 
200
 
201
- ```bash
202
- chmod +x run_ax650.sh verify_package.sh bin/moss_tts_ax650/moss_tts_ax650
203
- bash verify_package.sh
 
 
 
 
 
204
  ```
 
 
 
8
  license: apache-2.0
9
  ---
10
 
11
+ # MOSS-TTS-Nano.AXERA
12
 
13
+ MOSS-TTS-Nano 的 AX650 板端推理包,包含量化 AXModel默认质量路径 ONNX、Python 推理
14
+ 脚本和已经编译好的 C++ 程序。
 
15
 
16
+ 源码模型转换工程:
17
 
18
+ <https://github.com/AXERA-TECH/Moss-TTS-Nano.AXERA>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
+ ## 1. 安装 Python 依赖
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
+ 板端需要匹配 AX650 `axengine/pyaxengine`,并安装:
 
23
 
24
  ```bash
25
+ python3 -m pip install -r requirements.txt
26
+ python3 -c "import axengine, numpy, sentencepiece; print('runtime OK')"
 
 
 
 
 
27
  ```
28
 
29
+ 如果只使用 C++ 程序,可以跳过 Python 依赖安装。
30
 
31
+ ## 2. Python 推理
32
 
33
+ 在本目录执行:
 
 
 
 
 
34
 
35
  ```bash
36
  python3 python/infer_moss_tts.py \
37
  --config-dir config \
38
  --axmodel-dir models/axmodels_650 \
39
  --onnx-dir models/onnxmodels \
40
+ --text "你好今天是美好的。" \
41
  --voice Junhao \
42
  --sample-mode fixed \
 
43
  --prefill-backend axmodel \
44
+ --local-fixed-backend axmodel \
45
  --decode-backend onnx \
46
+ --output-audio-path outputs/python.wav
47
  ```
48
 
49
+ 支持内置音色,例如 `Junhao`、`Zhiming`、`Weiguo`、`Xiaoyu`、`Yuewen`、`Lingyu`、
50
+ `Ava`、`Bella`、`Adam`、`Nathan`、`Soyo`、`Saki`、`Mortis`、`Umiri`、`Mei`、`Anon`、
51
+ `Arisa``Trump`。
 
 
 
 
 
 
 
52
 
53
+ ## 3. C++ AX650 推理(推荐)
54
 
55
+ 程序编译在板端编译
 
56
 
57
  ```bash
58
  bash run_ax650.sh \
59
+ --text "你好今天是美好的。" \
60
  --voice Junhao \
61
+ --output-wav outputs/moss_tts.wav \
62
+ --output-log outputs/moss_tts.log
 
63
  ```
64
 
65
+ 脚本默认使以下链路
66
 
67
+ ```text
68
+ tts_prefill.axmodel
69
+ tts_local_fixed_sampled_frame.axmodel
70
+ models/onnxmodels/moss_tts_decode_step.onnx(static320 FP32,CPU)
71
+ codec_decode.axmodel
72
  ```
73
 
74
+ 默认参数为 `max_new_frames=110`、decode warmup 32 帧。static320 模型要求
75
 
76
+ ```text
77
+ 实际 prefill 长度 + max_new_frames <= 320
 
78
  ```
79
 
80
+ 长文本请按标点分段或降低 `--max-new-frames`。默认质量路径已在多句测试中与原始 512-KV
81
+ FP32 路径产生一致的 Token/WAV,稳态 RTF 约 `1.10–1.13`。
82
 
83
+ 程序加载时间不计入 RTF。板端同时运行其他 NPU/CPU 任务时,RTF 会升高。
84
 
85
+ ## 4. 可选模型
 
 
 
86
 
87
+ `models/onnxmodels/candidates/static320_int8_qdq/` 是速度实验模型,最佳观测 RTF
88
+ `0.85`,但 Token 可能与默认 FP32 路径不同,使用前请先试听。原始 512-KV FP32 模型位于
89
+ `models/onnxmodels/candidates/default_512_fp32/`,仅用于回归对比。
90
 
91
+ AXModel 的 `tts_decode_step.axmodel` 仅用于诊断;长句可能提前停止或出现尾部噪音,
92
+ 默认不推荐。
93
 
94
+ ## 5. 文件说明
95
+
96
+ ```text
97
+ models/axmodels_650/ AX650 量化模型
98
+ models/onnxmodels/ 默认 static320 FP32 decode ONNX 和候选模型
99
+ bin/moss_tts_ax650/ C++ 可执行文件和 ONNX Runtime 库
100
+ config/ tokenizer 和推理元数据
101
+ python/ Python 推理入口
102
  ```
103
+
104
+ `config.json` 按发布规范保留,内容为空对象 `{}`。