atlasleong/vibevoice-asr-npu
模型介绍
文件和版本
Pull Requests
讨论
分析

VibeVoice-ASR 昇腾 NPU 交付包

本目录包含 VibeVoice-ASR(自动语音识别,speech-seq2seq)在昇腾 NPU 上的交付产物,供复现与验收使用。

模型简介

VibeVoice-ASR 是微软(Microsoft)发布的一个统一的语音转文本(Speech-to-Text)模型, 基于 Qwen2.5-7B 因果解码器构建。它把 24kHz 原始音频送入声学/语义连续 Tokenizer 编码, 并将音声特征与文本指令融合后交给 Qwen2.5-7B 解码器,最终生成结构化转录结果 (说话人、时间戳与内容),支持超过 50 种语言,可处理长音频转写与说话人日志。

  • 模型类:VibeVoiceASRForConditionalGeneration
  • 适配器:custom-pytorch
  • Profile:speech-seq2seq
  • 领域:audio
  • 主输出:decoder_logits、token_ids
  • 基座模型:Qwen/Qwen2.5-7B(仅使用其分词器与解码器结构)
  • 许可:MIT

本交付包自包含:模型权重、Qwen2.5-7B 分词器与自定义 VibeVoice 源码均位于本目录 models/ 之下,inference.py 只依赖本目录内的文件,不依赖外部网络。

环境依赖

  • 硬件:Ascend910 系列(至少 1 卡)
  • OS:openEuler / Ubuntu / KylinOS(aarch64 或 x86_64)
  • Python:3.10 – 3.11
  • CANN ≥ 8.0(工作镜像内置)
  • PyTorch + torch_npu(工作镜像内置,不作为交付依赖固定版本)
  • 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.py

inference.py 会执行以下步骤:

  1. 加载本地权重(models/VibeVoice-ASR)与分词器(models/Qwen2.5-7B-tokenizer);
  2. 生成一段确定性的合成语音波形(固定随机种子 12345,时长 1 秒,24kHz);
  3. 在逻辑 NPU(npu:0)上执行一次确定性的 ASR 前向;
  4. 将设备标记打印到 stdout:
    • INPUT_DEVICE=npu:0
    • MODEL_DEVICE=npu:0
    • OUTPUT_DEVICE=npu:0
    • CPU_FALLBACK=false
  5. 把转录结果写入 outputs/transcript.json。

说明:为获得可复现的 CPU/NPU 数值对比,声学编码器的随机高斯采样被切换到模型自带的 确定性均值路径(std_dist_type="none"),不修改任何模型源码。

测试用例

  • 用例 1:CPU 基线回归(cpu_baseline/run_cpu.py) 在 CPU 上执行同一确定性前向,输出 decoder_logits 与 token_ids, 并生成 cpu_baseline/stage_outputs.json。
  • 用例 2:未打补丁 NPU 回归(npu_unpatched/run_npu.py) 在 npu:0 上执行同一前向,输出 decoder_logits 与 token_ids, 并生成 npu_unpatched/stage_outputs.json。
  • 用例 3:多样本回归(multi_sample_regression/run_multi.py) 以子进程方式逐个运行至少 10 个不同样本,每个样本记录 CPU/NPU 连续与离散输出对, 并生成 multi_sample_regression/sample_results.jsonl 与 tamper_test.json。
  • 用例 4:性能采样(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 验证阶段生成,本阶段不伪造图片):

适配流程

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。

原模型仓库

  • 原仓库地址:https://ai.gitcode.com/hf_mirrors/microsoft/VibeVoice-ASR
  • 固定版本:d0c9efdb8d614685062c04425d91e01b6f37d944

精度限制与社区跟进

已复验 eager、JIT 与关闭卷积 HF32 等候选;离散 token 保持完全一致,但最佳 max_abs_error=0.03699565,仍高于官方 0.01 门槛。仓库保留真实 NPU 证据并按最大适配努力发布,不声明精度 PASSED,后续由社区继续优化数值路径。

Agent 使用截图

以下图片由真实 Model Agent 对话记录、npu-smi 设备日志和最终 NPU 推理日志 以无头浏览器渲染生成;每张 PNG 均有同名 .provenance.json,记录源证据哈希。

Model Agent 完整适配工作流

Model Agent 完整适配工作流

昇腾 NPU 设备调用

昇腾 NPU 设备调用

模型最终适配验收结果

模型最终适配验收结果