Local speech-to-text and live captions app built on Qwen/Qwen3-ASR-1.7B.
It runs a local realtime ASR WebSocket service and a Tauri desktop caption
client. Funyi is for local, single-user use.
funyi-desktop-demo.mp4
- Python 3.11+; Python 3.12 recommended.
uv.- Backend: Windows/Linux/WSL with NVIDIA CUDA, macOS 14+ on Apple Silicon, or
an opt-in CPU fallback with
--allow-cpu. - Desktop: Node.js with Corepack
pnpm, Rust/Cargo, and Windows/macOS native build tools. - Model download access, or local model directories.
Native desktop builds also need Visual Studio Build Tools 2022 on Windows, or Xcode Command Line Tools on macOS.
| Role | Default | CLI flag |
|---|---|---|
| ASR | Qwen/Qwen3-ASR-1.7B |
--model |
| Timestamps | Qwen/Qwen3-ForcedAligner-0.6B |
--timestamp-model |
| Translation | tencent/Hy-MT2-1.8B |
--translation-model |
--no-translation disables translation. Restart the backend after changing
models. Apple Silicon MLX model IDs are documented in docs/macos_mlx.md.
From the repository root:
uv sync --python 3.12 --frozenStart the backend. Missing Hugging Face models are downloaded during startup and reused from the local cache on later runs.
Linux, WSL, or macOS:
./scripts/start_backend.shWindows PowerShell:
.\scripts\start_backend.ps1Check the backend:
curl http://127.0.0.1:8000/healthzStart the desktop client:
cd desktop
corepack pnpm install
corepack pnpm run devConnect to:
ws://127.0.0.1:8000/ws/asr
Runtime configuration is CLI-only. Run ./scripts/start_backend.sh --help for
the complete option list.
| Command | What it does |
|---|---|
./scripts/start_backend.sh |
Start the default backend profile. |
./scripts/start_backend.sh --no-translation |
Start the ASR-and-timestamps profile. |
./scripts/start_backend.sh --port 8001 |
Start on another port. |
./scripts/start_backend.sh --no-vad |
Disable VAD speech gating. |
./scripts/start_backend.sh --allow-cpu |
Start the slower-than-realtime CPU fallback. |
On Apple Silicon, --allow-cpu overrides automatic MLX selection. An explicit
--backend mlx keeps the MLX backend.
In Windows PowerShell, replace ./scripts/start_backend.sh with
.\scripts\start_backend.ps1; the CLI flags are identical.
On Windows, start_backend.ps1 supplies the eager-execution guardrails
TORCHDYNAMO_DISABLE=1 and TORCH_COMPILE_DISABLE=1 when they are absent. The
default HY-MT path therefore uses PyTorch eager mode.
desktop/README.md: desktop client.docs/realtime_asr_service.md: WebSocket and file transcription API.docs/macos_mlx.md: Apple Silicon MLX backend.docs/cpu_backend.md: CPU fallback.docs/validation_and_regression.md: local quality gates.
Project code is MIT. Some vendored files retain Apache-2.0 notices. See
LICENSE, LICENSES/Apache-2.0.txt, and THIRD_PARTY_NOTICES.md.