2.1 KiB
FunASR realtime browser demo
The frontend and backend start separately. The backend launcher loads three required local assets: streaming ASR, FSMN VAD, and CAM++ speaker verification. It starts the CAM++ model service and the WebSocket service and stops both together. No model is downloaded by the launcher. Use the shared model manifest and downloader to prepare the three required snapshots:
python scripts/download_models.py --funasr-runtime
Model directories
Put the assets under models/ or set MODEL_DIR in .env. The default FunASR names resolve to these local directories:
- 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 (or the damo/ variant)
If your directories have different names, set FUNASR_ASR_MODEL and FUNASR_VAD_MODEL to their paths. The CAM++ directories follow model_manifest.json; set CAM_MODEL_PATH for another location. Backend startup reports every checked path when a required asset is missing.
Start
First install a torch/torchaudio build suitable for the host CPU or CUDA, then install the project dependencies:
cd D:\github-project\ASR\Asr-demo
python -m pip install -r requirements-funasr.txt
python -m pip install -r requirements-auxiliary.txt
python scripts/download_models.py --funasr-runtime
if (-not (Test-Path .env)) { Copy-Item .env.funasr.example .env }
In one terminal start the backend:
python scripts\run_backend.py
In another terminal start the frontend:
python scripts\run_frontend.py
Open http://127.0.0.1:8080/. The backend WebSocket listens on port 8082 and the CAM++ service on port 8010. BACKEND_PUBLIC_URL must be reachable from the browser. Set FRONTEND_ORIGIN to the exact frontend origin if it differs from the default.
The browser sends start, PCM16 frames, and stop/eof over WebSocket. Speaker labels are required. Short or unusable speech may still receive an unknown speaker label, but missing CAM++ prevents backend startup.