Skip to content

Repository files navigation

Funyi

中文

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.

Demo

funyi-desktop-demo.mp4

Requirements

  • 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.

Models

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.

Quick Start

From the repository root:

uv sync --python 3.12 --frozen

Start 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.sh

Windows PowerShell:

.\scripts\start_backend.ps1

Check the backend:

curl http://127.0.0.1:8000/healthz

Start the desktop client:

cd desktop
corepack pnpm install
corepack pnpm run dev

Connect to:

ws://127.0.0.1:8000/ws/asr

Common Runs

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.

Documentation

  • 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.

License

Project code is MIT. Some vendored files retain Apache-2.0 notices. See LICENSE, LICENSES/Apache-2.0.txt, and THIRD_PARTY_NOTICES.md.

About

local realtime streaming speech-to-text and translation app

Resources

Stars

22 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages