Go to file
Bifang c76e70d10e omp修复版本 2026-09-10 14:23:18 +08:00
models Initial cmomit: replace with new code 2026-09-10 13:47:09 +08:00
realtime_asr_optimization_demo omp修复版本 2026-09-10 14:23:18 +08:00
scripts omp修复版本 2026-09-10 14:23:18 +08:00
tests omp修复版本 2026-09-10 14:23:18 +08:00
.env.example Initial cmomit: replace with new code 2026-09-10 13:47:09 +08:00
.gitignore omp修复版本 2026-09-10 14:23:18 +08:00
README.md Initial cmomit: replace with new code 2026-09-10 13:47:09 +08:00
model_manifest.json Initial cmomit: replace with new code 2026-09-10 13:47:09 +08:00
pyproject.toml Initial cmomit: replace with new code 2026-09-10 13:47:09 +08:00
requirements-auxiliary.txt Initial cmomit: replace with new code 2026-09-10 13:47:09 +08:00
requirements-deploy.txt Initial cmomit: replace with new code 2026-09-10 13:47:09 +08:00

README.md

Qwen3-ASR VLLM 独立部署项目

本目录是后续实时 ASR 功能验证使用的独立模型服务项目。

它不导入、不启动、也不调用仓库根目录下原项目的 app/ 代码。模型下载、VLLM 启动、配置和服务验证都在本目录内完成。后续验证 demo 只需要调用这里提供的 VLLM OpenAI 兼容接口。

当前下载范围

默认下载一个 ASR 模型和独立辅助模型运行服务所需的全部模型资产:

Qwen/Qwen3-ASR-0.6B

ASR 如需使用大模型,可显式选择 1.7B

Qwen/Qwen3-ASR-1.7B

辅助资产包括 VAD、CAM++ 分离、配置声纹、实时声纹、CAM++ Transformer 和 Qwen3 ForcedAligner。它们不会由 qwen-asr-serve 启动,而是由独立 Python 辅助模型服务加载。

不会下载另一个未选择的 ASR 模型;辅助模型资产会随默认部署包下载,供独立 Python 运行服务预加载。

1. 下载模型

模型直接下载到宿主机的 demo/models。ASR 由 VLLM 启动,辅助模型由独立 Python 运行服务启动。

cd D:\github-project\ASR\Qwen-Asr\demo
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements-download.txt
python scripts\download_models.py

上述命令会下载默认 0.6B ASR 以及全部辅助模型,并在下载完成后把 CAM++ 配置中的依赖模型 ID 改为 demo/models 下的本地路径,保证辅助服务可以离线启动。只下载 ASR 时使用:

python scripts\download_models.py --skip-auxiliary

只下载辅助模型时使用:

python scripts\download_models.py --auxiliary-only

选择 1.7B

python scripts\download_models.py --model 1.7b

检查模型是否完整但不下载:

python scripts\download_models.py --check-only

ModelScope 下载也可以通过环境变量调整缓存目录:

$env:MODELSCOPE_CACHE = 'D:\modelscope-cache'
python scripts\download_models.py

2. 宿主机启动 VLLM 服务

需要宿主机具备与 VLLM 兼容的 Python、CUDA 和 NVIDIA 驱动环境。安装部署依赖:

python -m pip install -r requirements-deploy.txt

先复制并按服务器实际路径修改 .env,启动器会自动读取该文件:

cp .env.example .env

默认启动 Qwen/Qwen3-ASR-0.6B,监听地址为 0.0.0.0:9950

python scripts/serve.py

模型和启动检查循环可以通过命令行或环境变量传入;端口统一在 scripts/serve.pySERVER_PORT 变量中维护:

QWEN3_ASR_MODEL=0.6b VLLM_STARTUP_CHECK_LOOPS=120 \
VLLM_STARTUP_CHECK_INTERVAL_SECONDS=2 python scripts/serve.py

如果使用 1.7B,下载和启动必须指定同一个模型:

python scripts\download_models.py --model 1.7b
python -m scripts.serve --model 1.7b

启动器会按 VLLM_STARTUP_CHECK_LOOPS 次数轮询 /health,每次间隔由 VLLM_STARTUP_CHECK_INTERVAL_SECONDS 指定。服务端口、健康检查端口和就绪提示统一使用 scripts/serve.py 中的 SERVER_PORT

服务启动后可检查:

curl "http://${VLLM_DISPLAY_HOST:-127.0.0.1}:9950/health"
curl "http://${VLLM_DISPLAY_HOST:-127.0.0.1}:9950/v1/models"

3. 调用转写接口

VLLM 服务提供 OpenAI 兼容的音频转写接口:

curl "http://${VLLM_DISPLAY_HOST:-127.0.0.1}:9950/v1/audio/transcriptions" \
  -H "Authorization: Bearer EMPTY" \
  -F "file=@./audio/sample.wav" \
  -F "model=Qwen/Qwen3-ASR-0.6B"

4. 启动辅助模型服务

另开一个终端,在同一台服务器启动 VAD、CAM++ 和声纹模型运行服务:

cd D:\github-project\ASR\Qwen-Asr\demo
pip install -r requirements-auxiliary.txt
python scripts\auxiliary_server.py

辅助服务默认监听 0.0.0.0:8010。实时链路启动时严格加载 VAD 和 CAM++ speaker_verification 声纹模型,用于每个 turn 的特征提取与在线聚类;完整 CAM++ 分离、Transformer 和 ForcedAligner 不阻断核心服务,完整分离模型会在调用 /v1/diarization 时按需加载。检查状态:

curl http://127.0.0.1:8010/health

WebSocket demo 默认连接 9950 的 ASR VLLM辅助服务使用 8010/healthready 要求 vad_readyspeaker_embedding_ready 同时为 true完整 diarization 资产缺失不会影响实时 /v1/speaker/resolve

实时链路中的职责是WebSocket 用 RMS 帧门控快速检测停顿;辅助服务用 FunASR VAD 提供 /v1/vad,并加载 CAM++ speaker_verification 提取 turn embedding再由服务端在线聚类。speech_campplus_speaker-diarization_common 是完整音频分离接口的额外 pipeline不是实时 turn 聚类的唯一入口。

也可以使用多模态 Chat Completions 接口,后续实时验证项目将以此服务边界为准。

项目边界

  • scripts/download_models.py:下载选定 ASR 和全部辅助模型资产。
  • scripts/serve.py:读取 .env,解析模型选择、宿主机参数并启动新版 vllm serve
  • requirements-deploy.txt:安装宿主机部署所需的官方 Qwen3-ASR VLLM 依赖。
  • tests/:只验证本项目自己的模型清单和选择逻辑,不依赖原项目。

模型服务就绪后,新的实时 ASR demo 放在同级 demo 项目中继续开发,但不得通过 Python import 或 HTTP/WebSocket 调用原项目服务。