Ramble is a speech-to-text transcription application that provides real-time transcription using the Whisper model.
ramble/
├── cmd/
│ └── ramble/ # Main application code
├── pkg/ # Package code for reusable components
│ └── transcription/ # Transcription engine implementation
├── scripts/ # Build and installation scripts
│ ├── build-dist.sh # Main distribution builder
│ ├── linux/ # Linux-specific scripts
│ └── windows/ # Windows-specific scripts
├── dist/ # Distribution output (created by build scripts)
│ ├── linux/ # Linux distribution files
│ └── windows/ # Windows distribution files
├── assets/ # Application assets (icons, etc.)
└── models/ # Default speech recognition models
Ramble has been simplified to make building and development easier. We now use a vendor-based approach for managing the whisper.cpp dependency.
For a quick build:
# Set up the vendor directory with necessary libraries and headers
./scripts/setup-vendor.sh
# Build and run the application
./scripts/run.shThis approach ensures all required libraries are properly copied to the vendor directory, avoiding path issues and broken symlinks.
You can specify a version tag when building whisper.cpp:
./scripts/build-whisper.sh v1.5.2The project structure has been simplified:
vendor/whisper/- Contains the minimal required whisper.cpp filesinclude/- Header fileslib/- Library files
- No full whisper.cpp submodule required
Our GitHub Actions workflow has been simplified to:
- Build the whisper.cpp library for each platform
- Store only the needed files in the vendor directory
- Build the application using these vendor files
- Package for distribution
This approach makes builds cleaner, faster, and more reliable.
- Go 1.18 or later
- GCC and development libraries
- ALSA development libraries (
libasound2-dev) - GTK3 development libraries (
libgtk-3-dev)
- MinGW-w64 cross-compiler (
x86_64-w64-mingw32-gcc) - Windows libraries (placed in
lib/windows/)
To build distribution packages for all supported platforms:
./scripts/build-dist.shTo build for a specific platform only:
./scripts/build-dist.sh linux
# or
./scripts/build-dist.sh windowsThe resulting distribution packages will be created in the dist/ directory.
Extract the Linux distribution package and run:
./install.shAlternatively, for portable use without installation:
./ramble.shExtract the Windows distribution package and run either:
install.ps1(PowerShell, recommended)install.bat(Command Prompt)
# From project root
./scripts/run.shRamble uses the Whisper.cpp library for speech-to-text transcription through the official Go bindings from the Whisper.cpp repository, which provides several benefits:
- Performance: Direct integration with the C++ library without subprocess overhead
- Reliability: Avoids many potential failure points of subprocess-based approaches
- Real-time streaming: Native support for streaming audio transcription
- Resource efficiency: No need to launch external processes
-
Build the Go bindings for Whisper.cpp:
./scripts/build-go-bindings.sh
-
Troubleshooting Go bindings:
- If you encounter compilation failures, make sure you have the necessary dependencies installed:
# Ubuntu/Debian sudo apt-get install build-essential libomp-dev - If you encounter import errors, rebuild the whisper.cpp components:
./scripts/build-go-bindings.sh --clean
- If you encounter compilation failures, make sure you have the necessary dependencies installed:
Place platform-specific libraries in:
lib/*.sofor Linux shared objectslib/windows/*.dllfor Windows DLLs
This project is licensed under the MIT License.