43 lines
2.8 KiB
Markdown
43 lines
2.8 KiB
Markdown
# 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-online`
|
||
- `models/damo/speech_fsmn_vad_zh-cn-16k-common-pytorch`
|
||
- `models/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 软件源和版本。
|
||
|
||
~~~powershell
|
||
python -m pip install -r requirements.txt
|
||
if (-not (Test-Path .env)) { Copy-Item .env.example .env }
|
||
python scripts/download_models.py --funasr-runtime
|
||
~~~
|
||
|
||
在两个终端中分别启动后端和前端:
|
||
|
||
~~~powershell
|
||
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++ 仍可能将说话人标为未知。
|