本目录包含 VibeVoice-ASR(自动语音识别,speech-seq2seq)在昇腾 NPU 上的交付产物,供复现与验收使用。
VibeVoice-ASR 是微软(Microsoft)发布的一个统一的语音转文本(Speech-to-Text)模型, 基于 Qwen2.5-7B 因果解码器构建。它把 24kHz 原始音频送入声学/语义连续 Tokenizer 编码, 并将音声特征与文本指令融合后交给 Qwen2.5-7B 解码器,最终生成结构化转录结果 (说话人、时间戳与内容),支持超过 50 种语言,可处理长音频转写与说话人日志。
VibeVoiceASRForConditionalGenerationcustom-pytorchspeech-seq2seqaudiodecoder_logits、token_idsQwen/Qwen2.5-7B(仅使用其分词器与解码器结构)本交付包自包含:模型权重、Qwen2.5-7B 分词器与自定义 VibeVoice 源码均位于本目录
models/ 之下,inference.py 只依赖本目录内的文件,不依赖外部网络。
transformers==4.57.6(VibeVoice 自定义代码依赖此版本;5.x 会因重复注册 model_type 而失败)diffusers==0.39.0(vibevoice.schedule.dpm_solver 的传递依赖)numpy==1.26.4、tqdm==4.70.0交付直接依赖见 requirements.txt;完整传递闭包固定在任务根目录的
requirements.lock.txt(全部 package==version 精确版本,torch/torch_npu 除外)。
# 华为镜像源
export PIP_INDEX_URL=https://repo.huaweicloud.com/repository/pypi/simple/
# 安装交付依赖(直接依赖)
pip install --ignore-installed --no-deps -r requirements.txt
# 或使用任务根目录的完整锁文件
pip install --ignore-installed --no-deps -r ../requirements.lock.txt# 1. 进入交付目录
cd delivery
# 2. 加载 NPU 环境并指定逻辑设备(工作镜像通常已配置)
source /usr/local/Ascend/ascend-toolkit/set_env.sh
export ASCEND_RT_VISIBLE_DEVICES=0
# 3. 运行推理入口
python3 inference.pyinference.py 会执行以下步骤:
models/VibeVoice-ASR)与分词器(models/Qwen2.5-7B-tokenizer);npu:0)上执行一次确定性的 ASR 前向;INPUT_DEVICE=npu:0MODEL_DEVICE=npu:0OUTPUT_DEVICE=npu:0CPU_FALLBACK=falseoutputs/transcript.json。说明:为获得可复现的 CPU/NPU 数值对比,声学编码器的随机高斯采样被切换到模型自带的
确定性均值路径(std_dist_type="none"),不修改任何模型源码。
cpu_baseline/run_cpu.py)
在 CPU 上执行同一确定性前向,输出 decoder_logits 与 token_ids,
并生成 cpu_baseline/stage_outputs.json。npu_unpatched/run_npu.py)
在 npu:0 上执行同一前向,输出 decoder_logits 与 token_ids,
并生成 npu_unpatched/stage_outputs.json。multi_sample_regression/run_multi.py)
以子进程方式逐个运行至少 10 个不同样本,每个样本记录 CPU/NPU 连续与离散输出对,
并生成 multi_sample_regression/sample_results.jsonl 与 tamper_test.json。performance/run_performance.py)
在 NPU 上运行 warmup + repeat 前向,记录原始耗时
performance/performance_results.json。验证门禁:CPU 与 NPU 输出必须满足 execution_plan.json 中 precision_thresholds
(max_abs_error、mean_abs_error、discrete_agreement_min)。
cpu_baseline/stage_outputs.json:CPU 基线产物清单(含 input、decoder_logits、token_ids 及 repeat 产物)。npu_unpatched/stage_outputs.json:NPU 未打补丁产物清单(设备固定 npu:0,cpu_fallback=false)。multi_sample_regression/sample_results.jsonl:逐样本回归结果(每样本含真实 npu_process_id)。multi_sample_regression/tamper_test.json:篡改检测样本(原始与篡改数组对比)。performance/performance_results.json:性能采样结果(raw_timings_ms、snapshot_count 等)。delivery/outputs/transcript.json:推理入口生成的转录文本与 token 序列。真实运行截图(由可信截图器在 NPU 验证阶段生成,本阶段不伪造图片):



delivery/
├── inference.py # NPU 推理入口
├── README.md # 本说明
├── requirements.txt # 交付运行依赖(直接依赖)
├── assets/ # 交付资产目录(截图器稍后写入截图)
├── outputs/ # 推理输出(运行时生成)
└── models/ # 自包含模型/代码(任务根目录 `models/` 的副本)
├── VibeVoice-ASR # 模型权重 + config + safetensors 索引
├── Qwen2.5-7B-tokenizer # 分词器文件
└── VibeVoice-code # 自定义模型源码(vibevoice 包)CPU 与 NPU 输出的精度阈值见 ../execution_plan.json 的 precision_thresholds:
max_abs_error、mean_abs_error、discrete_agreement_min。
Ascend910 不支持 fp64,torch_npu 会自动降级为 fp32。
已复验 eager、JIT 与关闭卷积 HF32 等候选;离散 token 保持完全一致,但最佳 max_abs_error=0.03699565,仍高于官方 0.01 门槛。仓库保留真实 NPU 证据并按最大适配努力发布,不声明精度 PASSED,后续由社区继续优化数值路径。
以下图片由真实 Model Agent 对话记录、npu-smi 设备日志和最终 NPU 推理日志
以无头浏览器渲染生成;每张 PNG 均有同名 .provenance.json,记录源证据哈希。


