A command-line client for transcribing audio files using OpenAI's Whisper model via the whisper-service backend.
- Transcribe audio files to text using Whisper
- Support for batch processing directories of audio files
- Track transcription job status
- View job history
- Configurable service endpoint
- Markdown output format
# Build and test
./build.sh
# Build, test, and install to /usr/local/bin
./build.sh --install
# Build and test
.\build.ps1
# Build, test, and install to Program Files
.\build.ps1 -Install
# Build from source
cargo build --release
# Copy to a location in your PATH
sudo cp target/release/whisper-client /usr/local/bin/
On first run, the client creates a configuration file at:
- Linux:
~/.config/whisper-client/config.json
- Windows:
%USERPROFILE%\.config\whisper-client\config.json
Default configuration:
{
"service_url": "http://localhost:8000"
}
Edit this file to point to your whisper-service instance if it's running on a different host or port.
whisper-client transcribe PATH_TO_FILE
# Process all audio files in directory
whisper-client transcribe PATH_TO_DIR
# Process directory recursively
whisper-client transcribe -r PATH_TO_DIR
whisper-client list-jobs
# With detailed information
whisper-client list-jobs -v
whisper-client status --job-id JOB_ID
# With transcription output (if completed)
whisper-client status --job-id JOB_ID -v
Transcriptions are saved as markdown files next to the source audio files, containing:
- Transcribed text
- Timestamps for each segment
- Job metadata
This client requires a running instance of whisper-service. By default, it expects the service to be running at http://localhost:8000
. You can modify the service URL in the configuration file.
The client supports common audio formats including:
- WAV
- MP3
- M4A
- FLAC
- OGG
- Automatically retries failed connections
- Graceful handling of service interruptions
- Clear error messages for common issues
- CTRL+C support for canceling running jobs
Built with Rust, using:
- clap for CLI argument parsing
- reqwest for HTTP requests
- tokio for async runtime
- serde for JSON handling
MIT License