ONNX Runtime inference implementation for Qwen3-ASR, providing a lightweight cross-platform speech recognition deployment solution for fast local and offline ASR.
项目介绍:Qwen3-ASR 流式推理链路拆解:从模型原理到 ONNX Runtime 实现
python export_qwen3_asr_onnx.py \
--model-path /home/zhang/.cache/modelscope/hub/models/Qwen/Qwen3-ASR-0.6B \
--output-dir ./onnx_asr \
--dtype float16 \
--device cuda \
--components all导出后目录应包含:
onnx_asr/audio_encoder/audio_encoder.onnx
onnx_asr/token_embedding/token_embedding.onnx
onnx_asr/text_core/asr_text_core.onnx
python export_fsmn_vad_onnx.py \
--model-dir /home/zhang/.cache/modelscope/hub/models/iic/speech_fsmn_vad_zh-cn-16k-common-pytorch \
--output-dir ./onnx_fsmn \
--output-name fsmn_vad_vad_encoder.onnx \
--opset-version 13 \
--dummy-frames 30导出后目录应包含:
onnx_fsmn/fsmn_vad_vad_encoder.onnx
onnx_fsmn/config.yaml
onnx_fsmn/am.mvn
# ASR 离线
python test_qwen3_onnx.py
# FSMN-VAD
python test_fsmn_vad_onnxruntime.py
# 离线 VAD + ASR
python test_offline_vad_asr_pipeline.py
# 流水线 VAD + ASR
python test_streaming_vad_asr_pipeline.py准备 C++ 依赖:
bash cpp/scripts/download_deps.sh脚本会下载 ONNX Runtime GPU C++ 包,并编译 FFTW3f 到 cpp/third_party/。
编译:
cmake -S cpp -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -j2运行:
./build/qwen3asr_streaming_run默认配置在 cpp/apps/qwen3asr_streaming_pipeline_main.cc 顶部。运行时日志写到:
./qwen3asr_cpp_streaming.log
可以用下面命令查看进度:
tail -f qwen3asr_cpp_streaming.log日志里主要事件:
[speech_start] 新的 VAD 语音段开始
[partial] ASR 实时中间结果
[final] 当前 VAD 语音段最终结果
[pipeline_done] 流水线结束
partial/final 会输出 confirmed_delta、confirmed_text、pending;q=a/b/c 表示 audio_queue/speech_queue/result_queue 当前积压长度。
默认路径:
ASR 模型目录: /home/zhang/.cache/modelscope/hub/models/Qwen/Qwen3-ASR-0.6B
ASR ONNX: ./onnx_asr
VAD ONNX: ./onnx_fsmn/fsmn_vad_vad_encoder.onnx
VAD CMVN: ./onnx_fsmn/am.mvn
默认音频: ./data/voice_design_stream.wav
常用参数:
./build/qwen3asr_streaming_run --audio ./data/voice_design_stream.wav
./build/qwen3asr_streaming_run --cpu