2.8 KiB
FunASR 实时识别说明
前端和后端分别启动。后端会托管以下服务:
- FunASR 原生在线 WebSocket 服务,使用本地流式 ASR 和 FSMN-VAD 模型。浏览器桥接层发送
mode=online、分块和回看参数,并在输入结束时发送is_speaking=false,让引擎刷新最后的识别结果。 - CAM++ 辅助服务,为已完成的语音段分配稳定的说话人标签。
- 浏览器协议桥接服务,将腾讯演示页面原有的消息格式转换为 FunASR WebSocket 协议。VAD 切分由 FunASR 处理,桥接层不会再运行另一套 ASR/VAD 切分流程。
前端继续提供 frontend/static/ 中的腾讯演示文件,并将同源的 /ws 和 /api/stop 请求转发给后端。
模型目录
将模型放入 models/,或在 .env 中设置 MODEL_DIR。默认模型目录如下:
models/iic/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onlinemodels/damo/speech_fsmn_vad_zh-cn-16k-common-pytorchmodels/iic/speech_campplus_sv_zh-cn_16k-common,也可使用清单中配置的damo/模型目录
若模型目录名称不同,可在 .env 中将 FUNASR_ASR_MODEL 和 FUNASR_VAD_MODEL 设为本地路径。CAM++ 默认按 model_manifest.json 查找;需要自定义目录时设置 CAM_MODEL_PATH。后端会在对外提供 WebSocket 服务前检查 ASR、VAD 和 CAM++ 三个必需模型。
安装与启动
requirements.txt 包含 FunASR、辅助服务和前端依赖。其中 PyTorch 版本面向使用 CUDA 13 的 GB10 环境;其它设备请按其 CUDA 版本调整 PyTorch 软件源和版本。
python -m pip install -r requirements.txt
if (-not (Test-Path .env)) { Copy-Item .env.example .env }
python scripts/download_models.py --funasr-runtime
在两个终端中分别启动后端和前端:
python backend\run_backend.py
python frontend\run_frontend.py
默认前端端口为 8080,浏览器后端端口为 8082,CAM++ HTTP 端口为 8010,仅本机可访问的 FunASR WebSocket 端口为 10095。需要调整时,在 .env 中同步修改 FRONTEND_PORT、WEB_PORT、AUXILIARY_SERVICE_URL、FUNASR_NATIVE_WS_HOST 和 FUNASR_NATIVE_WS_PORT。前端进程通过 BACKEND_INTERNAL_URL 访问后端;未设置时使用 http://127.0.0.1:${WEB_PORT}。
FUNASR_DEVICE 和 FUNASR_VAD_DEVICE 分别控制 ASR 与 VAD 的运行设备。若 CAM++ 不与 ASR 共用 GPU,可将 AUXILIARY_DEVICE 设为 cpu。FUNASR_CHUNK_SIZE 和 FUNASR_CHUNK_INTERVAL 控制 FunASR 原生分块协议;默认值 [0,10,5] 和间隔 10 会按 600 毫秒一组发送当前音频块。
实时文件输入支持原始 PCM16 或 16 kHz 单声道 PCM WAV。每个完成的语音段都会计算说话人标签;语音过短或接近静音时,CAM++ 仍可能将说话人标为未知。