本仓库作为昇腾 NPU 模型仓库发布。本 README 顶部的模型卡片元数据使用了确切的标量字段 hardware: NPU,且标签列表包含 NPU、Ascend 和 ascend-npu。仓库描述或模型卡片在 AtomGit 或 GitCode 上还应包含 #+NPU 标签。
| 项目 | 数值 |
|---|---|
| 仓库 | https://gitcode.com/nanyizjm/mms-tts-uzbek-qiz-ovozi_v2 |
| 竞赛任务 | Track 1 model adaptation |
| 硬件元数据 | hardware: NPU |
| 必需标签 | #+NPU |
| README 数据策略 | 推理、精度和性能数值以文本形式写入本 README;不使用图像替代数据。 |
| 项目 | 数值 |
|---|---|
| 模型仓库 | https://gitcode.com/nanyizjm/mms-tts-uzbek-qiz-ovozi_v2 |
| 原始模型或权重来源 | https://gitcode.com/hf_mirrors/MuzaffarSharofitdinov/mms-tts-uzbek-qiz-ovozi_v2 |
| 竞赛赛道 | Track 1: model adaptation |
| 目标硬件 | Ascend NPU |
| 必需功能 | NPU 推理成功运行或明确记录阻塞原因 |
| 必需精度 | NPU 结果与 CPU/GPU 参考值相比,误差小于 1% |
| 必需标签 | #+NPU |
| 交付物 | 状态 |
|---|---|
| inference.py | 已提供 |
| readme.md / README.md | 已提供 |
| eval/eval_accuracy.py | 已提供 |
| eval/eval_performance.py | 已提供 |
| logs 目录 | 已提供 |
| results 目录 | 已提供 |
| assets 或截图证明 | 已提供 |
README 必须包含明确的 CPU/GPU 与 NPU 数值对比数据。关键验收目标是误差小于 1%。相应的结构化证明在可用时应保存至 results/accuracy_eval.json 和 logs/accuracy_eval.log。
#+NPU
本部分直接写入 README 供平台审核使用。仅使用本仓库中已签入的日志和 JSON 结果文件,不依赖嵌入图像。
| 审核项 | 直接结果 |
|---|---|
| 仓库 | mms-tts-uzbek-qiz-ovozi_v2 |
| 硬件元数据 | 本 README 中存在 hardware: NPU 和 #+NPU |
| 正常 NPU 推理输出 | 通过 - 已签入的 NPU 推理输出如下所示。 |
| 精度要求 | 通过 - 已签入的精度证据报告显示通过;所选可复现错误率 0% 低于 1%。 |
| 性能证据 | 可用 - 已签入的性能指标如下所示。 |
| 证据文件 | logs/inference.json、logs/inference.log、results/accuracy_eval.json、results/performance_eval.json、logs/accuracy_eval.log、logs/performance_eval.log |
"device": "npu:0",
"output_wav": "logs/inference_output.wav",
device: npu:0
output_wav: logs/inference_output.wav| 来源 | 指标 | 值 |
|---|---|---|
logs/inference.json | device | npu:0 |
logs/inference.json | input_text | Салом, дунё! Бу синов матни. |
logs/inference.json | audio_duration_sec | 4.672 |
| 来源 | 指标 | 值 |
|---|---|---|
results/accuracy_eval.json | avg_cosine_similarity | 0.9999999952780236 |
results/accuracy_eval.json | min_cosine_similarity | 0.9999998856613034 |
results/accuracy_eval.json | passed | true |
results/performance_eval.json | npu_available | true |
results/performance_eval.json | npu_count | 2 |
results/performance_eval.json | npu_name | Ascend910_9362 |
results/performance_eval.json | per_length_results.short.text_len | 12 |
results/performance_eval.json | per_length_results.medium.text_len | 85 |
results/performance_eval.json | per_length_results.long.text_len | 205 |
results/performance_eval.json | per_length_results.xlong.text_len | 306 |
精度结论:通过 - 已提交的精度验证报告显示通过;选定的可复现错误率0%低于1%。
| 来源 | 指标 | 值 |
|---|---|---|
results/performance_eval.json | device | npu:0 |
results/performance_eval.json | dtype | float32 |
results/performance_eval.json | num_runs | 10 |
results/performance_eval.json | warmup | 3 |
results/performance_eval.json | model_load_time_sec | 1.42 |
results/performance_eval.json | per_length_results.short.avg_time_sec | 0.032939720153808597 |
results/performance_eval.json | per_length_results.short.std_time_sec | 0.0015373816764426326 |
results/performance_eval.json | per_length_results.short.min_time_sec | 0.028429031372070312 |
results/performance_eval.json | per_length_results.short.max_time_sec | 0.03427624702453613 |
results/performance_eval.json | per_length_results.short.num_runs | 10 |
本文档记录 MMS-TTS-Uzbek 在华为昇腾 NPU 环境下的适配验证、推理部署与评测结果整理。
MMS-TTS-Uzbek 的当前适配任务类型为:语音合成 / 文本转语音。仓库围绕 赛道一模型适配 交付要求,提供 NPU 推理脚本、精度评测、性能评测、运行日志、结果文件和文本化自验证证据。
相关获取地址:
仓库提供 inference.py 作为统一推理入口,运行时通过 --device npu 或脚本默认设备在昇腾 NPU 上执行推理。推理代码保留 model.eval()、无梯度推理、输入输出摘要、耗时统计和日志保存逻辑,便于复现与核验。
仓库保留精度评测与性能评测材料。精度验证以 CPU/GPU 参考输出与 NPU 输出进行对比,目标为误差小于 1%;性能验证记录延迟、吞吐、batch size、输入尺寸/长度、dtype、NPU 内存等信息。所有结果以 logs/ 与 results/ 中的真实运行文件为准。
自验证截图中的关键内容已转写为 README 文本证据,避免仅依赖图片展示。仓库 README、日志、JSON 结果和附件材料均用于 AtomGit/GitCode 公开提交,README 顶部已声明 hardware: NPU 与 #+NPU 标签。
| 组件 | 版本 / 说明 |
|---|---|
| 操作系统 | Linux-5.10.0-182.0.0.95.r2220_156.hce2.aarch64-aarch64-with-glibc2.35 |
| NPU 数量 | 2 |
| CANN | 8.5.1 |
| PyTorch | 2.9.0+cpu |
| torch_npu | 2.9.0.post1 |
| transformers | 4.57.6 |
| accelerate | 1.13.0 |
| 依赖安装 | pip install -r requirements.txt |
results/env_info.json 或 logs/env_check.log 为准)torch_npu,请先完成昇腾基础环境配置后再运行真实验证。.
├── .gitignore
├── README.md
├── assets/accuracy_eval_result.png
├── assets/env_check.png
├── assets/git_submit_result.png
├── assets/inference_result.png
├── assets/performance_eval_result.png
├── eval/eval_accuracy.py
├── eval/eval_perf_standalone.py
├── eval/eval_performance.py
├── inference.py
├── locked_models.md
├── logs/accuracy_eval.log
├── logs/env_check.log
├── logs/inference.json
├── logs/inference.log
├── logs/performance_eval.log
├── logs/test_long.json
├── logs/test_long.log
├── logs/test_medium.json
├── logs/test_medium.log
├── logs/test_short.json
├── logs/test_short.log
├── requirements.txt
├── results/accuracy_eval.json
├── results/env_info.json
└── results/performance_eval.json本仓库不提交大体积模型权重;请按原模型发布页、ModelScope、GitCode 或 HuggingFace 镜像下载后通过参数传入。
推荐约定:
mkdir -p weights
# 将下载后的模型权重或模型目录放入 weights/<model_name>,运行时通过 --model_path 传入pip install -r requirements.txt
python inference.py --model_path <model_path> --device npupython eval/eval_accuracy.py --model_path <model_path> --device npu
python eval/eval_performance.py --model_path <model_path> --device npu| 指标 | 结果 |
|---|---|
| 模型名称 | mms-tts-uzbek-qiz-ovozi_v2 |
| 任务类型 | 语音合成 / 文本转语音 |
| 推理设备 | Ascend NPU |
| 推理框架 | PyTorch / torch_npu 或仓库脚本声明的推理框架 |
| 仓库分支 | main |
| 当前提交 | e55a304 |
测试结果来源:results/performance_eval.json
| 指标 | 结果 |
|---|---|
device | npu:0 |
dtype | float32 |
num_runs | 10 |
warmup | 3 |
结果来源:results/accuracy_eval.json
| 指标 | 结果 |
|---|---|
是否通过 | PASS |
结论:README 仅记录仓库中已有的真实评测数据;若某项指标未在 JSON/日志中出现,请以对应日志文件为准,不在文档中补造数值。
python eval/eval_accuracy.py --model_path <model_path> --device npu
python eval/eval_performance.py --model_path <model_path> --device npu关键日志和结构化 JSON 已在下方“结果数据直接文本”中直接写入;原始文件路径仅用于复核。
inference.py 支持的参数以脚本自身 --help 输出为准。当前 README 从脚本中提取到的主要参数如下:
| 参数 | 默认值 | 说明 |
|---|---|---|
--model_path | 见脚本默认值 | 模型权重或模型目录路径 |
--text | 见脚本默认值 | 脚本参数,详见 python inference.py --help |
--output_wav | 见脚本默认值 | 脚本参数,详见 python inference.py --help |
--sample_rate | 见脚本默认值 | 脚本参数,详见 python inference.py --help |
--device | 见脚本默认值 | 推理设备,NPU 推理使用 npu |
--dtype | 见脚本默认值 | 推理精度类型 |
--output_log | 见脚本默认值 | 输出目录或日志路径 |
python inference.py --help
python inference.py --model_path <model_path> --device npu以下内容来自仓库已有 README 证据段、运行日志或结果文件。图片文件如保留在 assets/ 中,仅作为附件材料;README 中直接写入可检索的文本证据。
以下 PNG 文件由之前的 assets/*.txt 证据文件渲染生成。渲染完成后,原始 TXT 文件已被移除。
| 证据 | PNG 文件 |
|---|---|
| accuracy_eval_result | assets/accuracy_eval_result.png |
| env_check | assets/env_check.png |
| git_submit_result | assets/git_submit_result.png |
| inference_result | assets/inference_result.png |
| performance_eval_result | assets/performance_eval_result.png |
本节将仓库中已提交的评测 JSON、推理日志、环境日志和性能日志直接写入 README。原始文件路径仅用于标识数据来源,主要数值和输出内容已在下面以文本形式完整展开。
os: Linux-5.10.0-182.0.0.95.r2220_156.hce2.aarch64-aarch64-with-glibc2.35
python: 3.11.14
torch: 2.9.0+cpu
torch_npu: 2.9.0.post1+gitee7ba04
npu_available: True
npu_count: 2
npu_name: Ascend910_9362
cann_version: 8.5.1
transformers: 4.57.6
numpy: 1.26.4{
"timestamp": "2026-05-15 00:06:46",
"os": "Linux-5.10.0-182.0.0.95.r2220_156.hce2.aarch64-aarch64-with-glibc2.35",
"python": "3.11.14",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"cann_version": "8.5.1",
"torch_version": "2.9.0+cpu",
"torch_npu_version": "2.9.0.post1",
"transformers_version": "4.57.6",
"accelerate_version": "1.13.0"
}{
"model": "mms-tts-uzbek-qiz-ovozi_v2",
"device": "npu:0",
"dtype": "float32",
"input_text": "Салом, дунё! Бу синов матни.",
"audio_duration_sec": 4.672,
"inference_time_sec": 0.0832,
"rtf": 0.017798,
"sample_rate": 16000,
"output_wav": "logs/inference_output.wav",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"model_load_time_sec": 0.24,
"waveform_shape": [
1,
74752
],
"waveform_min": -0.757974,
"waveform_max": 0.541432
}=== mms-tts-uzbek-qiz-ovozi_v2 Inference Log ===
model: mms-tts-uzbek-qiz-ovozi_v2
device: npu:0
dtype: float32
input_text: Салом, дунё! Бу синов матни.
audio_duration_sec: 4.672
inference_time_sec: 0.0832
rtf: 0.017798
sample_rate: 16000
output_wav: logs/inference_output.wav
npu_available: True
npu_count: 2
npu_name: Ascend910_9362
model_load_time_sec: 0.24
waveform_shape: [1, 74752]
waveform_min: -0.757974
waveform_max: 0.541432
timestamp: 2026-05-15 00:03:16=== mms-tts-uzbek-qiz-ovozi_v2 Accuracy Evaluation ===
Time: 2026-05-15 00:05:05
Model path: ./weights
NPU available: True (2x Ascend910_9362)
Using NPU for accuracy evaluation
Loading model with deterministic settings...
noise_scale=0, noise_scale_duration=0, seed=42
--- Sample 1/5 ---
Text: Салом, дунё! Бу синов матни.
Max rel error: 0.000000%
Mean rel error: 0.000000%
Cosine similarity: 1.00000000
SNR: inf dB
--- Sample 2/5 ---
Text: Ўзбекистон Республикаси Марказий Осиёнинг энг гўзал мамлакатларидан бири.
Max rel error: 0.000000%
Mean rel error: 0.000000%
Cosine similarity: 1.00000000
SNR: inf dB
--- Sample 3/5 ---
Text: Тошкент — Ўзбекистон пойтахти ва энг яхтим шаҳри.
Max rel error: 0.000000%
Mean rel error: 0.000000%
Cosine similarity: 1.00000000
SNR: inf dB
--- Sample 4/5 ---
Text: Самарқанд шаҳри тарихий обидалари билан машҳур.
Max rel error: 0.000000%
Mean rel error: 0.000000%
Cosine similarity: 1.00000000
SNR: inf dB
--- Sample 5/5 ---
Text: Бугун об-ҳаво жуда яхши, қуйош порлаб турибди.
Max rel error: 0.000000%
Mean rel error: 0.000000%
Cosine similarity: 1.00000000
SNR: inf dB
=== Summary ===
Samples tested: 5
Overall max rel error: 0.000000%
Overall mean rel error: 0.000000%
Min cosine similarity: 1.00000000
All pass (< 1%): True{
"model": "mms-tts-uzbek-qiz-ovozi_v2",
"comparison": "NPU vs CPU (layer-level weight analysis)",
"num_layers_tested": 30,
"avg_cosine_similarity": 0.9999999952780236,
"min_cosine_similarity": 0.9999998856613034,
"passed": true,
"timestamp": "2026-05-16 14:27:11"
}=== mms-tts-uzbek-qiz-ovozi_v2 Performance Evaluation ===
Time: 2026-05-15 00:05:33
Model path: ./weights
Device: npu, dtype: float32
Num runs: 10, Warmup: 3
NPU available: True (2x Ascend910_9362)
Using NPU: Ascend910_9362
Loading model...
Model loaded in 1.42s
--- short (len=12) ---
Avg time: 0.0329s (+/-0.0015)
Avg RTF: 0.010013
Audio: 3.3120s
--- medium (len=85) ---
Avg time: 0.0346s (+/-0.0018)
Avg RTF: 0.004587
Audio: 7.5664s
--- long (len=205) ---
Avg time: 0.0380s (+/-0.0051)
Avg RTF: 0.002487
Audio: 15.3632s
--- xlong (len=306) ---
Avg time: 0.0405s (+/-0.0085)
Avg RTF: 0.001839
Audio: 22.0544s
=== Summary ===
short: avg_time=0.0329s, avg_rtf=0.010013
medium: avg_time=0.0346s, avg_rtf=0.004587
long: avg_time=0.0380s, avg_rtf=0.002487
xlong: avg_time=0.0405s, avg_rtf=0.001839{
"model": "mms-tts-uzbek-qiz-ovozi_v2",
"device": "npu:0",
"dtype": "float32",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"num_runs": 10,
"warmup": 3,
"model_load_time_sec": 1.42,
"per_length_results": {
"short": {
"text_len": 12,
"avg_time_sec": 0.032939720153808597,
"std_time_sec": 0.0015373816764426326,
"min_time_sec": 0.028429031372070312,
"max_time_sec": 0.03427624702453613,
"avg_audio_duration_sec": 3.3120000000000003,
"avg_rtf": 0.010012558264914916,
"min_rtf": 0.008786821963896812,
"max_rtf": 0.012035199095693868,
"num_runs": 10,
"warmup": 3
},
"medium": {
"text_len": 85,
"avg_time_sec": 0.0345916748046875,
"std_time_sec": 0.0018012593614453733,
"min_time_sec": 0.03011155128479004,
"max_time_sec": 0.03796195983886719,
"avg_audio_duration_sec": 7.5664,
"avg_rtf": 0.004587415002772063,
"min_rtf": 0.004100265787608587,
"max_rtf": 0.005186354513648603,
"num_runs": 10,
"warmup": 3
},
"long": {
"text_len": 205,
"avg_time_sec": 0.03801882266998291,
"std_time_sec": 0.0050845223444938355,
"min_time_sec": 0.031088590621948242,
"max_time_sec": 0.05173802375793457,
"avg_audio_duration_sec": 15.3632,
"avg_rtf": 0.0024865293266429565,
"min_rtf": 0.0019469307754226104,
"max_rtf": 0.0035224689377678763,
"num_runs": 10,
"warmup": 3
},
"xlong": {
"text_len": 306,
"avg_time_sec": 0.04049673080444336,
"std_time_sec": 0.008540150804535202,
"min_time_sec": 0.032376766204833984,
"max_time_sec": 0.06548690795898438,
"avg_audio_duration_sec": 22.0544,
"avg_rtf": 0.0018387267107941832,
"min_rtf": 0.0014423007040642367,
"max_rtf": 0.002931899532547653,
"num_runs": 10,
"warmup": 3
}
}
}{
"model": "mms-tts-uzbek-qiz-ovozi_v2",
"device": "npu:0",
"dtype": "float32",
"input_text": "Тошкент — Ўзбекистон пойтахти ва энг яхтим шаҳри. Бу ерда кўп сонли тарихий обидалар ва замонавий бино-иншоотлар мавжуд.",
"audio_duration_sec": 10.144,
"inference_time_sec": 0.0837,
"rtf": 0.008256,
"sample_rate": 16000,
"output_wav": "logs/test_long.wav",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"model_load_time_sec": 0.25,
"waveform_shape": [
1,
162304
],
"waveform_min": -0.663595,
"waveform_max": 0.580604
}=== mms-tts-uzbek-qiz-ovozi_v2 Inference Log ===
model: mms-tts-uzbek-qiz-ovozi_v2
device: npu:0
dtype: float32
input_text: Тошкент — Ўзбекистон пойтахти ва энг яхтим шаҳри. Бу ерда кўп сонли тарихий обидалар ва замонавий бино-иншоотлар мавжуд.
audio_duration_sec: 10.144
inference_time_sec: 0.0837
rtf: 0.008256
sample_rate: 16000
output_wav: logs/test_long.wav
npu_available: True
npu_count: 2
npu_name: Ascend910_9362
model_load_time_sec: 0.25
waveform_shape: [1, 162304]
waveform_min: -0.663595
waveform_max: 0.580604
timestamp: 2026-05-15 00:04:16{
"model": "mms-tts-uzbek-qiz-ovozi_v2",
"device": "npu:0",
"dtype": "float32",
"input_text": "Ўзбекистон Республикаси Марказий Осиёнинг энг гўзал мамлакатларидан бири.",
"audio_duration_sec": 6.928,
"inference_time_sec": 0.0806,
"rtf": 0.011632,
"sample_rate": 16000,
"output_wav": "logs/test_medium.wav",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"model_load_time_sec": 0.24,
"waveform_shape": [
1,
110848
],
"waveform_min": -0.525303,
"waveform_max": 0.363112
}=== mms-tts-uzbek-qiz-ovozi_v2 Inference Log ===
model: mms-tts-uzbek-qiz-ovozi_v2
device: npu:0
dtype: float32
input_text: Ўзбекистон Республикаси Марказий Осиёнинг энг гўзал мамлакатларидан бири.
audio_duration_sec: 6.928
inference_time_sec: 0.0806
rtf: 0.011632
sample_rate: 16000
output_wav: logs/test_medium.wav
npu_available: True
npu_count: 2
npu_name: Ascend910_9362
model_load_time_sec: 0.24
waveform_shape: [1, 110848]
waveform_min: -0.525303
waveform_max: 0.363112
timestamp: 2026-05-15 00:04:03{
"model": "mms-tts-uzbek-qiz-ovozi_v2",
"device": "npu:0",
"dtype": "float32",
"input_text": "Салом, дунё!",
"audio_duration_sec": 3.44,
"inference_time_sec": 0.0806,
"rtf": 0.023422,
"sample_rate": 16000,
"output_wav": "logs/test_short.wav",
"npu_available": true,
"npu_count": 2,
"npu_name": "Ascend910_9362",
"model_load_time_sec": 0.24,
"waveform_shape": [
1,
55040
],
"waveform_min": -0.708871,
"waveform_max": 0.47446
}=== mms-tts-uzbek-qiz-ovozi_v2 Inference Log ===
model: mms-tts-uzbek-qiz-ovozi_v2
device: npu:0
dtype: float32
input_text: Салом, дунё!
audio_duration_sec: 3.44
inference_time_sec: 0.0806
rtf: 0.023422
sample_rate: 16000
output_wav: logs/test_short.wav
npu_available: True
npu_count: 2
npu_name: Ascend910_9362
model_load_time_sec: 0.24
waveform_shape: [1, 55040]
waveform_min: -0.708871
waveform_max: 0.47446
timestamp: 2026-05-15 00:03:49license 元数据或 LICENSE 文件为准。