Skip to content

rishiskhare/parrot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

35 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Parrot

Parrot: AI Text-to-Speech

A free, offline, private AI text-to-speech for your desktop

Highlight text in any app, press a shortcut
Hear it read aloud instantly, privately, on your device

Supports 9 languages:
English (US & UK) Β· Spanish Β· French Β· Hindi Β· Italian Β· Japanese Β· Portuguese (Brazilian) Β· Chinese (Mandarin)

Platform License GitHub Downloads (all assets, all releases) Version


What is Parrot? 🦜

Parrot reads your selected text aloud using a small text-to-speech model that runs entirely on your device. Your text never leaves your machine: no cloud, no accounts, no internet required after the initial model download.

The backend is written in Rust, keeping the app fast, lightweight, and resource-efficient. The model itself is only ~115 MB and runs on any modern CPU with no GPU required.

How It Works

  1. Select text in any application
  2. Press the shortcut (default: Option+Space on macOS, Ctrl+Space on Windows/Linux)
  3. A small overlay appears while Parrot synthesizes and plays the audio
  4. Press Option+P to pause/resume (all shortcuts are customizable)

πŸ”Š Here's how it sounds: sample

Installation

Download the latest stable version for macOS, Windows, and Linux from the Parrot website.

On first launch, Parrot prompts you to download the TTS model (~115 MB). Once downloaded, the app works completely offline.

Features

  • Private by design: your text is processed locally and never sent anywhere
  • Lightweight: ~115 MB model, minimal memory footprint, Rust-powered backend
  • Works in any app: reads selected text from browsers, editors, PDFs, terminals, anywhere
  • Streaming playback: audio starts playing before the full text has been synthesized
  • Free forever: no subscription, no API key, no account required
  • Pause & resume: pause and resume playback mid-sentence with a keyboard shortcut
  • Floating overlay: a lightweight indicator shows speaking status with pause controls

Models

Parrot ships with Kokoro-82M, a compact neural TTS model that delivers natural-sounding speech at ~115 MB, small enough to download once and forget, efficient enough to run on any modern CPU without a GPU.

Kokoro supports 54 voices across 9 languages. The voice is selected automatically based on your language setting, or choose one manually in Settings β†’ General.

Voices

Language Female Voices Male Voices
English (US) Alloy, Aoede, Bella, Heart, Jessica, Kore, Nicole, Nova, River, Sarah, Sky Adam, Echo, Eric, Fenrir, Liam, Michael, Onyx, Puck, Santa
English (UK) Alice, Emma, Isabella, Lily Daniel, Fable, George, Lewis
Spanish Dora Alex, Santa
French Siwis -
Hindi Alpha, Beta Omega, Psi
Italian Sara Nicola
Japanese Alpha, Gongitsune, Nezumi, Tebukuro Kumo
Portuguese (Brazilian) Dora Alex, Santa
Chinese (Mandarin) Xiaobei, Xiaoni, Xiaoxiao, Xiaoyi Yunjian, Yunxi, Yunxia, Yunyang

Keyboard Shortcuts

All shortcuts are fully customizable in Settings β†’ General.

Action macOS Windows / Linux
Speak selected text Option+Space Ctrl+Space
Pause / resume playback Option+P Alt+P
Open settings Cmd+, Ctrl+,
Open debug panel Cmd+Shift+D Ctrl+Shift+D

The pause/resume shortcut is only active while Parrot is playing. It can be customized or disabled in Settings β†’ General.

Settings Overview

Category Options
General Shortcuts, TTS language, voice, output device, audio feedback
Models Download, switch, and delete TTS models
Advanced β†’ App Start hidden, autostart, tray icon, overlay position, model unload timeout
Advanced β†’ Speech Worker threads, playback speed, fast first response
Advanced β†’ History Entry limit, auto-delete period
History Browse, replay, copy, and delete past utterances
Debug Log level, keyboard implementation, diagnostics

Command-Line Interface

Parrot supports CLI flags for scripting and window manager integration. Remote control flags are delivered to the already-running instance; you do not need to keep a second instance running.

parrot [FLAGS]
Flag Description
--toggle-transcription Toggle TTS on/off in the running instance
--start-hidden Launch without showing the main window
--no-tray Launch without a tray icon (closing the window quits)
--debug Enable verbose trace logging

Example: bind to a window manager shortcut:

parrot --toggle-transcription

macOS: When using the app bundle, invoke the binary directly:

/Applications/Parrot.app/Contents/MacOS/Parrot --toggle-transcription

Linux Notes

Text Input Tools

For reliable text pasting on Linux, install the appropriate tool for your display server:

Display Server Recommended Install
X11 xdotool sudo apt install xdotool
Wayland wtype sudo apt install wtype
Both dotool sudo apt install dotool

dotool requires adding your user to the input group: sudo usermod -aG input $USER (log out and back in after).

Global Shortcuts on Wayland

Parrot's built-in global shortcut capture has limited support on Wayland. The recommended approach is to configure your desktop environment or window manager to invoke the CLI flag instead.

GNOME:

  1. Open Settings > Keyboard > Keyboard Shortcuts > Custom Shortcuts
  2. Add a new shortcut with the command parrot --toggle-transcription

KDE Plasma:

  1. Open System Settings > Shortcuts > Custom Shortcuts
  2. Create a new Command/URL shortcut with parrot --toggle-transcription

Sway / i3:

bindsym $mod+o exec parrot --toggle-transcription

Hyprland:

bind = $mainMod, O, exec, parrot --toggle-transcription

Unix Signal Control

You can also send signals directly to the Parrot process, useful for hotkey daemons that manage their own keybindings:

Signal Action
SIGUSR1 Toggle TTS
SIGUSR2 Toggle TTS
pkill -USR2 -n parrot   # toggle TTS

Other Linux Notes

  • The speaking overlay is disabled by default on Linux (Overlay Position: None) because some compositors treat it as the active window and steal focus.

  • If the app fails to start, try setting WEBKIT_DISABLE_DMABUF_RENDERER=1.

  • If you see error while loading shared libraries: libgtk-layer-shell.so.0, install the runtime package:

    Distro Package Command
    Ubuntu/Debian libgtk-layer-shell0 sudo apt install libgtk-layer-shell0
    Fedora/RHEL gtk-layer-shell sudo dnf install gtk-layer-shell
    Arch gtk-layer-shell sudo pacman -S gtk-layer-shell

Building from Source

Prerequisites: Rust (latest stable), Bun

# Clone the repository
git clone https://github.com/rishiskhare/parrot
cd parrot

# Install frontend dependencies
bun install

# Run in development mode
bun run tauri dev

# Build a release binary
bun run tauri build

On macOS, if you hit a CMake error:

CMAKE_POLICY_VERSION_MINIMUM=3.5 bun run tauri dev

Architecture

Parrot is built with Tauri 2, a Rust backend with a React/TypeScript frontend. The entire synthesis and audio pipeline runs in Rust, which keeps CPU and memory usage low even during continuous playback.

src-tauri/src/
β”œβ”€β”€ managers/
β”‚   β”œβ”€β”€ tts.rs          # Streaming TTS synthesis and audio playback
β”‚   β”œβ”€β”€ model.rs        # Model download, extraction, and lifecycle
β”‚   └── history.rs      # Utterance storage and retention
β”œβ”€β”€ audio_toolkit/      # Audio device enumeration and resampling
β”œβ”€β”€ commands/           # Tauri IPC handlers (frontend ↔ backend)
β”œβ”€β”€ settings.rs         # Persistent settings with serde
β”œβ”€β”€ shortcut/           # Global hotkey capture (Tauri + HandyKeys backends)
└── overlay.rs          # Floating speaking indicator window

src/
β”œβ”€β”€ components/settings/   # Settings UI (35+ components)
β”œβ”€β”€ overlay/               # Speaking overlay window
└── stores/settingsStore.ts  # Zustand state management

Key dependencies: tts-rs (Kokoro TTS), rodio (audio playback), cpal (audio devices), tauri-specta (type-safe IPC)

Acknowledgments

Parrot is a fork of Handy by CJ Pais, released under the MIT License. The original project provided the Tauri architecture, audio pipeline, and UI foundation that made Parrot possible.

TTS synthesis is powered by Kokoro-82M via tts-rs.

License

MIT. See LICENSE for full text.

Parrot is a derivative work of Handy (Β© 2025 CJ Pais). Both are distributed under the MIT License.