## File: README.md

<h1 align="center">Vibe - Transcribe on your own!</h1>





<hr />

## Screenshots



# Features 🌟

- 🌍 Transcribe almost every language
- 🔒 Ultimate privacy: fully offline transcription, no data ever leaves your device
- 🎨 User friendly design
- 🎙️ Transcribe audio / video
- 🎶 Option to transcribe audio from popular websites (YouTube, Vimeo, Facebook, Twitter and more!)
- 📂 Batch transcribe multiple files!
- 📝 Support `SRT`, `VTT`, `TXT`, `HTML`, `PDF`, `JSON`, `DOCX` formats
- 👀 Realtime preview
- 🤖 Supports Whisper, Nemotron 3.5, and Parakeet TDT v3 models
- ✨ Summarize transcripts: Get quick, multilingual summaries using the Claude API
- 🧠 Ollama support: Do local AI analysis and batch summaries with Ollama
- 🌐 Translate to English from any language
- 🖨️ Print transcript directly to any printer
- 🔄 Automatic updates
- 💻 Optimized for `GPU` (`macOS`, `Windows`, `Linux`)
- 🎮 Optimized for `Nvidia` / `AMD` / `Intel` GPUs! (`Vulkan`/`CoreML`)
- 🔧 Total Freedom: Customize Models Easily via Settings
- ⚙️ Model arguments for advanced users
- ⏳ Transcribe system audio
- 🎤 Transcribe from microphone
- 🖥️ CLI support: Use Vibe directly from the command line interface! (see `--help`)
- 👥 Speaker diarization
- 🎬 Stable timestamps mode for subtitle/movie-grade timing (VAD-backed, slower)
- 📱 ~iOS & Android support~ (coming soon)
- 📥 Integrate custom models from your own site: Use `vibe://download/?url=<model url>`
- 📹 Choose caption length optimized for videos / reels
- ⚡ HTTP API with Swagger docs and agent skills

# Supported platforms 🖥️

`MacOS`
`Windows`
`Linux`

# Contribute 🤝

## Developers

Get started with local development [here](docs/building.md).

PRs are welcomed!
In addition, you're welcome to add translations.

# Community

[](https://discord.gg/EcxWSstQN8)

# Roadmap 🛣️

You can see the roadmap in [Vibe-Roadmap](https://github.com/users/thewh1teagle/projects/5/views/1)

# Add translation 🌐

See the [translation guide](docs/translations.md).

# Docs 📄

see [Vibe Docs](https://github.com/thewh1teagle/vibe/tree/main/docs)

# I want to know more!

Medium [post](https://medium.com/@thewh1teagle/creating-vibe-multilingual-audio-transcription-872ab6d9dbb0)

# Issue report

You can open [new issue](https://github.com/thewh1teagle/vibe/issues/new?assignees=octocat&labels=bug&projects=&template=bug_report.yaml&title=[Short+title]) and it's recommend to check [debug.md](docs/debug.md) first.

# Privacy Policy 🔒

Your privacy is important to us. Please review our [Privacy Policy](http://thewh1teagle.github.io/vibe/?action=open-privacy-policy) to understand how we handle your data.

# Credits

Thanks for [tauri.app](https://tauri.app/) for making the best apps framework I ever seen

Thanks for [github.com/whisper.cpp](https://github.com/ggerganov/whisper.cpp) for outstanding interface for the AI model.

Thanks for [openai.com](https://openai.com/) for their amazing [Whisper model](https://openai.com/research/whisper)

Thanks for [github.com](https://github.com/) for their support in open source projects, providing infastructure completely free.

And for all the amazing open source frameworks and libraries which this project uses...

---

## File: desktop/README.md

# Tauri + React + Typescript

This template should help get you started developing with Tauri, React and Typescript in Vite.

## Recommended IDE Setup

- [VS Code](https://code.visualstudio.com/) + [Tauri](https://marketplace.visualstudio.com/items?itemName=tauri-apps.tauri-vscode) + [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer)

---

## File: docs/building.md

# Building

### Prerequisites

[pnpm](https://pnpm.io/) | [uv](https://docs.astral.sh/uv/) | [Cargo](https://www.rust-lang.org/tools/install)

Optionally install [just](https://github.com/casey/just) to use the shortcuts in the root `justfile` (run `just` to list them):

```console
# Windows
winget install Casey.Just
# macOS
brew install just
# Linux
sudo apt install just   # or: cargo install just
```

**Linux**:

Based on [tauri/prerequisites/#setting-up-linux](https://v2.tauri.app/start/prerequisites/#linux)

```console
sudo apt-get update
sudo apt-get install -y pkg-config build-essential libglib2.0-dev libgtk-3-dev libwebkit2gtk-4.1-dev clang cmake libssl-dev libasound2-dev
```

**macOS**:

Make sure to install XCode from the AppStore and open it once so it will download essential macOS libraries.

## Build

Run the pre-build script (downloads the Sona runner binary and sets up platform deps):

```console
uv run scripts/pre_build.py
```

Install frontend dependencies from `desktop` folder:

```console
cd desktop
pnpm install
```

Start dev mode:

```console
pnpm exec tauri dev
```

Or build for production:

```console
pnpm exec tauri build
```

You can also do it all in one step:

```console
uv run scripts/pre_build.py --dev   # or --build
```

## Build sona locally (dev)

Download prebuilt whisper.cpp libs (one-time):

```console
uv run sona/scripts/download-libs.py
```

**Windows only** — install [MSYS2](https://www.msys2.org/), then install MinGW and Vulkan headers:

```console
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-vulkan-devel
```

Open an MSYS2 MinGW64 shell with your full Windows PATH (so `rustc`, `cargo`, etc. are available):

```console
C:\msys64\msys2_shell.cmd -mingw64 -defterm -no-start -use-full-path
```

Then build sona and place it as sidecar (from `desktop/`):

```console
# macOS/Linux
cargo build --manifest-path ../sona/Cargo.toml -p sona --release
cp ../sona/target/release/sona ../desktop/src-tauri/binaries/sona-$(rustc -vV | awk '/host:/ {print $2}')
# Windows
cargo build --manifest-path ../sona/Cargo.toml -p sona --release
cp ../sona/target/release/sona.exe ../desktop/src-tauri/binaries/sona-$(rustc -vV | awk '/host:/ {print $2}').exe
```

Then copy the binary into the dev target so `tauri dev` picks it up immediately:

```console
cp desktop/src-tauri/binaries/sona-$(rustc -vV | awk '/host:/ {print $2}') target/debug/sona
```

## Test

```console
export RUST_LOG=trace
cargo test -- --nocapture
```

# Lint

```console
cargo fmt
cargo clippy
```

# Create new release

1. Increment version in `tauri.conf.json` and commit
2. Run the Release workflow from GitHub Actions (workflow_dispatch)

It will create releases for `Windows`, `Linux`, and `macOS`

Along with `latest.json` file (used for auto updater).

When `Release` action finishes, it will run `Deploy landing` action

and update downloads links in landing page.

# Landing

## Compress images

```console
pnpx tinypng-go static/*.png
```

## Convert markdown to PDF

```console
go install github.com/mandolyte/mdtopdf/cmd/md2pdf@latest
md2pdf -i website/public/privacy_policy.md -o website/public/privacy_policy.pdf
```

## Normalize wav file for tests

```console
ffmpeg -i file.wav -ar 16000 -ac 1 -c:a pcm_s16le normal.wav
```

## Edit PR before merge

1. Install [gh cli](https://cli.github.com/)

```console
gh pr checkout 
git push <fork url>
```

## Update packages

```console
pnpm install
pnpx ncu -u
cd src-tauri
cargo install cargo-edit
rm -rf ../Cargo.lock
CARGO_NET_GIT_FETCH_WITH_CLI=true cargo upgrade
# OR
cargo +nightly -Zunstable-options update --breaking
```

## Clear Github actions cache

```console
gh cache delete -a
```

## Notes

- Always update crates and lock in specific commit so it will be easy to revert!!
- Don't upgrade important crates such as tauri as long as it stable and works and there's no real need!!

## Windows Code Signing

See [Windows Code Signing](https://gist.github.com/thewh1teagle/06022cf1ec17a62949377a17c1b590bd)

Install Windows SDK:

```console
winget install -e --id Microsoft.WindowsSDK.10.0.26100
```

Generate a self-signed certificate (valid 10 years):

```console
openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 3650 -nodes -subj "/CN=Vibe" -addext "extendedKeyUsage=codeSigning"
openssl pkcs12 -export -out cert.pfx -inkey key.pem -in cert.pem -password pass:YOUR_PASSWORD
base64 -i cert.pfx
```

Copy the base64 output and update GitHub secrets:

- `WINDOWS_CERTIFICATE` — the base64 output
- `WINDOWS_CERTIFICATE_PASSWORD` — the password used above

Then delete the local files:

```console
rm key.pem cert.pem cert.pfx
```

## Analytics (Optional)

Vibe uses [Aptabase](https://aptabase.com/) for analytics. Not required for development. To enable, set these env vars at build time:

```console
export APTABASE_APP_KEY="A-..."
export APTABASE_BASE_URL="https://..."
```

## Gotchas

## Build faster in dev mode (useful in Windows)

```console
rustup nightly install
rustup component add rustc-codegen-cranelift-preview --toolchain nightly
# Unix
CARGO_PROFILE_DEV_CODEGEN_BACKEND="cranelift" cargo +nightly build -Zcodegen-backend
# Powershell
$env:CARGO_PROFILE_DEV_CODEGEN_BACKEND="cranelift" ; cargo +nightly build -Zcodegen-backend
```

---

## File: docs/debug.md

# Troubleshoot vibe crash / error

Try the following, the more you try the better the chance we'll find the cause :)

1. Is the audio file valid? try with different one, eg. download [vibe/samples/single.wav](https://github.com/thewh1teagle/vibe/raw/main/samples/single.wav)
2. Do you have errors? report it with the 'report button'
3. Do you experience crash without errors? try to run from the terminal with logs enabled:
4. Do you use other model than the default one? Please use the default one that comes with Vibe when checking.


Windows

a. Open `cmd.exe`
b. Execute:

```console
taskkill /IM vibe.exe /F
set RUST_BACKTRACE=1
set RUST_LOG=vibe=debug,whisper_rs=debug
%localappdata%\vibe\vibe.exe
```




macOS

```console
RUST_LOG=vibe=debug,whisper_rs=debug RUST_BACKTRACE=1 /Applications/vibe.app/Contents/MacOS/vibe
```




Linux

Run it similar to macOS just change the path



Does it happens with original Whisper?



1. Download one of the `zip` files from [releases/tag/v1.6.0](https://github.com/ggerganov/whisper.cpp/releases/tag/v1.6.0) (Scroll down and choose `whisper-bin-x64.zip` in `Windows`
2. Extract them and open the folder, then open explorer in that folder and hit `Ctrl` + `l` in `explorer, type `cmd` and enter
3. Download [vibe/samples/single.wav](https://github.com/thewh1teagle/vibe/raw/main/samples/single.wav) and place it in the same folder (and check that the file is ok)
4. Try to transcribe by execute

```console
main.exe -m "%localappdata%\github.com.thewh1teagle.vibe\ggml-medium.bin" -f "samples_single.wav"
```




App crashing and no even errors!

In windows, open search menu and search for `Event Viewer`, choose `Windows Logs` -> `Application` and check if there's some error there




Find debug log file
If you can't open the app due to crash, try to check any logs in

macOS: `$HOME/Library/Application Support/github.com.thewh1teagle.vibe`

Windows: `%appdata%\github.com.thewh1teagle.vibe`

Linux: `~/.config/github.com/thewh1teagle.vibe`




Get OS information for posting in a bug

## Windows

1. Open `cmd.exe`
2. Execute the following

```console
winget install neofetch
neofetch
```

3. Copy and paste it in the issue

## macOS

```console
brew install neofetch
neofetch
```

## Linux

```console
sudo apt-get update
sudo apt install -y neofetch
neofetch
```




vulkan-1.dll or vcomp140.dll is missing

For `vcomp140.dll` install [vc_redist.x64.exe](https://aka.ms/vs/17/release/vc_redist.x64.exe)

For `vulkan-1.dll` install [VulkanRT-Installer.exe](https://sdk.lunarg.com/sdk/download/1.3.290.0/windows/VulkanRT-1.3.290.0-Installer.exe)



After you finished, share you results by opening [new issue](https://github.com/thewh1teagle/vibe/issues/new?assignees=octocat&labels=bug&projects=&template=bug_report.yaml&title=[Short+title]) or just comment in the issue.

---

## File: docs/install.md

# Install notes 📝

## System Requirements

Windows: Version `8` or greater.

macOS: Version `13.3` or greater.

Linux: Tested on `ubuntu-22.04+`

Hardware:
No special requirement. resource usage can be customized through advanced settings in main window.

Currently, listening for the audio file isn't supported on `Linux`

In addition you may need to set this environment variable before start it

```console
export WEBKIT_DISABLE_COMPOSITING_MODE=1
```

## Setting Up Summarization with Ollama

1. Install Ollama

Download and install Ollama from https://ollama.com.

2. Install a Model

Once installed, set up a model for summarization. For example, you can install `llama3.1` by running the following command in your terminal:

```console
ollama run llama3.1
```

3. Enable Summarization

After the model is installed, open the Ollama app. Navigate to More Options and enable Summarize just before the transcription step. You can leave the settings at their default values.

_Make sure to run the 'Run check` to see that it works_

That's it! Summarization will now be active in Ollama.

## Stable Timestamps (Subtitles / Movies)

Vibe includes a stable timestamp mode for tighter subtitle timing on long-form content.

1. Open `More Options`.
2. Enable `Stable timestamps`.
3. If prompted, download the VAD model.

Notes:

- This mode is quality-first and typically around `4x` slower than normal transcription.
- Best for subtitle creation and movie/video transcript timing.
- VAD model used by default: `ggml-silero-v6.2.0.bin`
- Upstream model source: `https://huggingface.co/ggml-org/whisper-vad`

## Translating to English

Translation to English works only with Whisper `small`, `medium`, and `large` models. It does not work with Whisper `large-v3-turbo`.

If you need translation, download a supported model from the [models docs](/vibe/docs#models).

## Manual Install 🛠️

`MacOS Apple silicon`: install `aarch64.dmg` file from [releases](https://github.com/thewh1teagle/vibe/releases) **Don't forget to right click and open from Applications once**

`MacOS Intel`: install `x64.dmg` file from [releases](https://github.com/thewh1teagle/vibe/releases) **Don't forget to right click and open from Applications once**

`Windows`: install `.exe` file from [releases](https://github.com/thewh1teagle/vibe/releases)

`Linux`: install `.deb` from [releases](https://github.com/thewh1teagle/vibe/releases) (`Arch` users can use [debtap](https://aur.archlinux.org/packages/debtap))

_All models available for manual install. see [Pre built models](https://github.com/thewh1teagle/vibe/releases/tag/v0.0.1)_

## Offline Setup 💾

Offline installation with Vibe is easy: open the app, cancel the download, and navigate to the `Customize` section within settings.

_All models available for manual install. see settings or [Pre built models](https://github.com/thewh1teagle/vibe/releases/tag/v0.0.1)_

## Faster transcriptions on macOS (2-3x) 🌟

1. Download the matching `.mlcmodelc.zip` for your model from https://huggingface.co/ggerganov/whisper.cpp/tree/main

- e.g. `ggml-medium-encoder.mlmodelc.zip` matches `ggml-medium-encoder.bin`

2. Open models path from Vibe settings
3. Drag and drop the `.mlcmodel.c` file into the models folder so that it is alongside the `.bin` file
4. Transcribe a file, the first time you use the model it will take longer as it is compiling the model. Every subsequent time it will be faster.

## Error of `msvc140.dll` not found ❌

Download and install [vc_redist.x64.exe](https://aka.ms/vs/17/release/vc_redist.x64.exe)

## Special link to download models in vibe

You can add links to your websites for letting users download your models easily from your website directly to vibe.

The URL should be like

```
vibe://download/?url=https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin?download=true
```

## Usage on linux server

To use Vibe on linux server you need to install fake display

```console
sudo apt-get install xvfb -y
Xvfb :1 -screen 0 1024x768x24 &
export DISPLAY=1

wget https://github.com/thewh1teagle/vibe/releases/download/v0.0.1/ggml-medium.bin
wget https://github.com/thewh1teagle/vibe/raw/main/samples/single.wav
vibe --model ggml-medium.bin --file single.wav
```

---

## File: docs/models.md

# 🌟 Vibe Models 🌟

Welcome to the Vibe Models page! Here you can find a curated list of suggested models to use with Vibe. To install a model, use the "Magic Setup" link to open it in Vibe, or copy and paste the direct download link in Vibe settings.

## Available Models

### 🌱 Tiny Model

A compact and efficient version, suitable for quick tasks and limited-resource environments.

[👉 Magic Setup](https://shorturl.at/XSP9R)  
[🔽 Direct Download](https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-tiny.bin?download=true)

### 🌿 Small Model

A small yet capable model for a balance of efficiency and performance.

[👉 Magic Setup](https://shorturl.at/EmJS8)  
[🔽 Direct Download](https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-small.bin?download=true)

### ⚖️ Medium Model

Balances performance and resource usage, making it ideal for most general applications.

[👉 Magic Setup](https://shorturl.at/Ha6br)  
[🔽 Direct Download](https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-medium.bin?download=true)

### 🚀 Large Model (v3)

For high accuracy and more computational resources, excels in complex scenarios.

[👉 Magic Setup](https://tinyurl.com/3cn846h8)  
[🔽 Direct Download](https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3.bin?download=true)

### 🚀 Large v3 Turbo (Recommended)

[👉 Magic Setup](https://tinyurl.com/yphwban5)  
[🔽 Direct Download](https://huggingface.co/ggerganov/whisper.cpp/resolve/main/ggml-large-v3-turbo.bin)

### 🦜 Parakeet TDT 0.6B v3

Supports streaming and is best suited for dictation.

[👉 View Model](https://huggingface.co/vibe-app/parakeet-tdt-0.6b-v3-gguf/tree/main)  
[🔽 Download Q4_K_M](https://huggingface.co/vibe-app/parakeet-tdt-0.6b-v3-gguf/resolve/main/parakeet-tdt-0.6b-v3-Q4_K_M.gguf?download=true)

### ⚡ Nemotron 3.5 ASR Streaming 0.6B

Supports streaming and is best suited for dictation.

[👉 View Model](https://huggingface.co/vibe-app/nemotron-3.5-asr-streaming-0.6b-gguf)  
[🔽 Download Q4_K_M](https://huggingface.co/vibe-app/nemotron-3.5-asr-streaming-0.6b-gguf/resolve/main/nemotron-3.5-asr-streaming-0.6b-Q4_K_M.gguf?download=true)

### Models optimised for other languages


✡️ Hebrew (Ivrit)

Specialized for Hebrew (Ivrit) language data, optimized for high speed and accuracy in Hebrew tasks.

[👉 Magic Setup (Large v3 Turbo)](https://tinyurl.com/t9r3tyxk)  
[🔽 Direct Download (Large v3 Turbo)](https://huggingface.co/ivrit-ai/whisper-large-v3-turbo-ggml/resolve/main/ggml-model.bin?download=true)




🇳🇴 Norwegian
	
Optimised for Norwegian by the [AI Lab at the National Library of Norway](https://huggingface.co/NbAiLab).

[👉 Magic Setup (medium)](https://tinyurl.com/5wzb9ux8)  
[🔽 Direct Download (medium)](https://huggingface.co/NbAiLab/nb-whisper-medium/blob/main/ggml-model.bin?download=true)

[👉 Magic Setup (large)](https://tinyurl.com/f228efbu)  
[🔽 Direct Download (large)](https://huggingface.co/NbAiLab/nb-whisper-large/blob/main/ggml-model.bin?download=true)

More models of smaller sizes are available via [their huggingface download page](https://huggingface.co/NbAiLab/nb-whisper-large).  
Find the size you want, download the _ggml-model.bin_ file, rename the file, and palce it in vibe's model folder.




🇸🇪 Swedish

Optimised for Swedish by the [Data Lab at the National Library of Sweden](https://huggingface.co/KBLab).

[👉 Magic Setup (medium)](https://tinyurl.com/ynawnc33)  
[🔽 Direct Download (medium)](https://huggingface.co/KBLab/kb-whisper-medium/blob/main/ggml-model.bin?download=true)

[👉 Magic Setup (large v3)](https://tinyurl.com/46dvpeky)  
[🔽 Direct Download (large v3)](https://huggingface.co/KBLab/kb-whisper-large/blob/main/ggml-model.bin?download=true)

More models of smaller sizes are available via [their huggingface download page](https://huggingface.co/KBLab/kb-whisper-large).  
Find the size you want, download the _ggml-model.bin_ file, rename the file, and palce it in vibe's model folder.




Enjoy exploring these models and enhancing your Vibe! 🌐✨

### Want More?

Find additional models here:

[👉 See More Models](https://huggingface.co/ggerganov/whisper.cpp/tree/main)

---

### Prepare your own models


Convert transformers to GGML

```console
# Setup environment
curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.bashrc
uv venv
uv pip install torch transformers huggingface_hub
huggingface-cli login --token "token" # https://huggingface.co/settings/tokens

# Convert and upload
git clone https://github.com/openai/whisper
git clone https://github.com/ggml-org/whisper.cpp
git clone https://huggingface.co/ivrit-ai/whisper-large-v3-turbo
uv run ./whisper.cpp/models/convert-h5-to-ggml.py ./whisper-large-v3-turbo/ ./whisper .
uv run huggingface-cli upload --repo-type model whisper-large-v3-turbo-ivrit ./ggml-model.bin ./ggml-model.bin

# Quantize
sudo apt install cmake build-essential -y
cd whisper.cpp
cmake -B build
cmake --build build --config Release
cd ..
./whisper.cpp/build/bin/quantize ggml-model.bin ./ggml-model.int8.bin q8_0 # fp32/fp16/q8_0/q5_0
```