Real-time speech transcription tool
Scriba is a cross-platform speech recognition tool that transcribes audio in real-time and can automatically type the recognized text.
- Real-time transcription using the Vosk speech recognition engine
- 25+ language support including English, Chinese, Russian, German, French, Spanish, Japanese, and many more
- Software engineering optimization - converts spoken numbers to digits and recognizes programming terms
- Automatic typing - simulates keyboard input to type transcribed text wherever you focus
- Cross-platform support - Linux, macOS, and Windows
- Multiple model sizes - from compact 30MB models to high-accuracy 2GB+ models
- Interactive model selection with automatic downloading
- Configurable confidence thresholds to filter out uncertain transcriptions
- XDG-compliant configuration - stores models and settings in
~/.config/scriba/
Download the latest release for your platform from the GitHub releases page:
scriba-linux-x86_64.tar.gz- Linux (Intel/AMD 64-bit)scriba-linux-aarch64.tar.gz- Linux (ARM 64-bit, e.g., Raspberry Pi)scriba-macos-x86_64.tar.gz- macOS (Intel)scriba-macos-aarch64.tar.gz- macOS (Apple Silicon)scriba-windows-x86_64.zip- Windows (64-bit)
Extract the archive and run the scriba binary directly.
# Run directly
nix run github:davidebriani/scriba
# Install to profile
nix profile install github:davidebriani/scriba
# Use in a development shell
nix develop github:davidebriani/scribaLinux (Ubuntu/Debian):
sudo apt-get install libasound2-dev libpulse-dev libxdo-dev pkg-config build-essential curl unzipLinux (Fedora/RHEL):
sudo dnf install alsa-lib-devel pulseaudio-libs-devel libxdo-devel pkg-config gcc curl unzipmacOS:
# Install Xcode command line tools
xcode-select --installWindows:
# Install Visual Studio Build Tools or Visual Studio Community
# Rust will automatically detect and use the MSVC toolchain-
Clone the repository:
git clone https://github.com/davidebriani/scriba.git cd scriba -
Install Rust (if not already installed):
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source $HOME/.cargo/env
-
Build and install:
./install.sh
This script will:
- Build Scriba in release mode
- Download and install the Vosk native library
- Install the binary to
~/.local/bin/scriba - Set up the environment
# Start with interactive model selection
scriba
# Transcription only (no automatic typing)
scriba --no-typing
# Enable debug output to see partial transcriptions
scriba --debug
# Use a specific confidence threshold (0.0-1.0)
scriba --confidence-threshold 0.8
# Force model selection even if a model exists
scriba --select-model
# Show all options
scriba --helpScriba stores its configuration and downloaded models in:
- Linux/macOS:
~/.config/scriba/ - Windows:
%APPDATA%\scriba\
The first time you run Scriba, you'll be prompted to select a speech recognition model. Models are automatically downloaded and cached for future use.
Scriba supports 25+ languages with different model sizes:
- Small English US (40MB) - Fast, basic vocabulary
- English US (Recommended) (128MB) - Best balance of speed and accuracy
- Large English US (1.8GB) - Highest accuracy
- English US (GigaSpeech) (2.3GB) - Latest model with improved accuracy
- English India (1GB) - Optimized for Indian accents
- Chinese (Standard & Small)
- Russian (Standard & Small)
- German (Standard & Small)
- French (Small)
- Spanish (Standard & Small)
- Portuguese (Standard & Small)
- Italian (Standard & Small)
- Dutch (Standard & Small)
- Japanese (Standard & Small)
- Korean (Small)
- Hindi (Standard & Small)
- Ukrainian (Standard & Small)
- Arabic, Persian, Turkish, Vietnamese, Polish, Gujarati
Scriba automatically converts spoken programming terms:
- Numbers: "one thousand twenty five" β "1025"
- Digits: "zero through nine" β "0" through "9"
- Programming terms:
- "open paren" β "("
- "close paren" β ")"
- "open bracket" β "["
- "close bracket" β "]"
- "open brace" β "{"
- "close brace" β "}"
- "semicolon" β ";"
- "equals" β "="
- "null" β "null"
- "true" β "true"
- "false" β "false"
# Enter development shell
nix develop
# Build the project
cargo build
# Run tests
cargo test
# Build for release
cargo build --release-
Install dependencies (see Prerequisites above)
-
Set up Vosk library:
# The build script will help you set this up ./build.sh -
Build and run:
cargo build cargo run -- --help
The project supports cross-compilation for multiple architectures. See the GitHub Actions workflow (.github/workflows/release.yml) for examples of building for different targets.
- Audio Capture: Uses
cpalfor cross-platform audio input - Speech Recognition: Vosk engine with downloadable models
- Text Processing: Enhanced number and programming term conversion
- Keyboard Simulation:
enigofor cross-platform input simulation - Async Runtime: Tokio for concurrent audio processing and transcription
- CLI Interface:
clapfor argument parsing anddialoguerfor interactive prompts
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
- Ensure cross-platform compatibility
This project is licensed under the MIT License - see the LICENSE file for details.
- Vosk - Open source speech recognition toolkit
- cpal - Cross-platform audio I/O library
- enigo - Cross-platform input simulation
- Tokio - Asynchronous runtime for Rust
"No input device available"
# Check audio devices
arecord -l
# Install ALSA/PulseAudio development packages
sudo apt-get install libasound2-dev libpulse-dev"libvosk.so not found"
# Run the install script to set up Vosk library
./install.sh
# Or manually set the library path
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHPermission denied for microphone
- Go to System Preferences β Security & Privacy β Privacy β Microphone
- Add Terminal or your terminal application to the allowed list
"The system cannot find the specified module"
- Ensure
libvosk.dllis in the same directory asscriba.exeor in your system PATH - Install Visual C++ Redistributable if needed
For more help, please open an issue on GitHub.