Open source · macOS & Windows

Your recordings, transcribed.
On your own machine.

Visper turns meetings, lectures and interviews into timestamped transcripts with Whisper large-v3, fully offline. Chinese, English, or both in the same recording.

Coming soon Prebuilt downloads are on the way. Today, build from source in a few commands.

Illustration of the interface (the app UI is in Simplified Chinese). Sample text from the app's preview data.
100% offlineafter one model download
Whisper large-v3or large-v3-turbo, unquantized
Metal · Vulkanwith automatic CPU fallback
Rust + GPUInative, MIT OR Apache-2.0

Features

Everything a transcript needs. Nothing it doesn't.

Built for the recordings you already have, in Chinese, English, or a mix of both.

Private by design

The model, your audio and your transcripts stay on your machine. The only network access is the one-time model download from Hugging Face.

Mixed Chinese & English

Auto mode splits on silence and detects each stretch as Chinese or English, so a switch mid-meeting doesn't derail the rest. Or lock a recording to one language.

Simplified Chinese out

Traditional characters are converted to Simplified with OpenCC before anything is shown or saved.

Fast on your GPU

Metal on macOS, Vulkan on Windows, flash attention on. If the GPU can't be set up, that transcription quietly runs on the CPU.

A queue, not a wizard

Drop in as many files as you like. They're transcribed one at a time, with live segments, progress, speed and time remaining.

Click to listen back

Every segment is timestamped. Click one to play the recording from exactly that point.

Markdown export

One [HH:MM:SS] text block per segment, ready for notes, docs or your favourite LLM.

A library that remembers

Transcripts persist between launches. Re-run, cancel or remove. If a file moves, its transcript stays readable. Your audio is never copied.

Per-stretch language detection

Switch languages mid-sentence. Visper keeps up.

Whisper's built-in auto-detect guesses one language for a whole file, so a later stretch in the other language gets pulled off course. Visper instead decides Chinese or English for every stretch between pauses, then transcribes each in its own language.

English stays English, Chinese stays Chinese. No translation, ever.

Read the design decision (ADR 0002) →
产品讨论.mdMarkdown
[00:00:04] 我们先看一下这次产品讨论的目标。

[00:00:18] 界面需要更清晰,让主要操作自然出现。

[00:00:36] We should keep the workflow simple and predictable.

[00:00:52] 语言自动判断,中文和英文都保留原文。

[00:01:42] 完成之后,可以按分段回听,再导出 Markdown。

How it works

From audio file to transcript, in five steps

  1. 1

    Decode

    m4a, mp3, wav, flac or aac decoded with Symphonia, resampled to 16 kHz mono with Rubato.

  2. 2

    Split on silence

    20 ms loudness frames against an adaptive noise floor. Pauses of 400 ms+ separate stretches of up to 30 s.

  3. 3

    Detect language

    In Auto mode, each stretch is judged Chinese or English. Neighbours in the same language share one window.

  4. 4

    Transcribe

    whisper.cpp with beam search on Metal or Vulkan, falling back to the CPU when needed.

  5. 5

    Simplify & store

    OpenCC converts to Simplified Chinese; segments stream to the window and into your local library.

Two models

Pick accuracy or speed. Switch any time.

Choose on first launch, change from the Library footer later. Every transcript remembers which model produced it.

Large v3

≈ 3.1 GB

Most accurate

Best for interviews full of names and specialist terms.

ggml-large-v3.bin

Large v3 Turbo

≈ 1.6 GB

Much faster

Slightly less accurate. Great for everyday meetings. Decoder cut from 32 to 4 layers.

ggml-large-v3-turbo.bin

Benchmark on an M3 Pro: Metal ran inference about 1.6× faster than Vulkan through MoltenVK, using about 0.5 GB less memory.

Build from source

Up and running in a few commands

Visper needs Rust stable (installed automatically via rust-toolchain.toml) and CMake. On first launch it asks which model to download.

  • macOS on Apple Silicon, or Windows 10/11 x86_64
  • Windows: MSVC Build Tools, CMake and the LunarG Vulkan SDK
  • 1.6–3.1 GB of disk space for the model

Coming soon Prebuilt packages for both platforms.

# Xcode Command Line Tools + Homebrew
brew install cmake
git clone https://github.com/chiyiangel/visper.git
cd visper
cargo run --release

# Optional: Visper.app + .dmg in target/release/bundle/
scripts/bundle-macos.sh --dmg

Deliberately small

What Visper doesn't do

A focused tool that does one job well. These are out of scope by design:

  • Live microphone capture
  • Translation
  • Summaries
  • Speaker labels
  • Transcript editing
  • Custom prompts or vocabularies
  • Languages other than Chinese & English

Open source, and staying that way.

Dual licensed under MIT or Apache-2.0. Issues and pull requests welcome, in English or Chinese.