ScribeRelay is a self-hostable web service that provides a powerful REST API for audio transcription and translation. Powered by OpenAI's Whisper.
ScribeRelay adapts the powerful transcription engine of Buzz into a robust, API-first service. It allows developers to easily integrate state-of-the-art audio transcription into their applications without relying on third-party cloud providers.
- REST API: Simple, intuitive endpoints for submitting transcription tasks, checking status, and retrieving results.
- Self-Hosted: Run the service on your own infrastructure for full control over data privacy and cost.
- Asynchronous by Design: Handles long-running transcription jobs without blocking, making it suitable for scalable applications.
- Powered by Whisper: Leverages OpenAI's Whisper models for high-quality transcription and translation across numerous languages.
- Flexible Model Support: Easily switch between different Whisper model sizes (tiny, base, small, medium, large) to balance speed and accuracy.
The main branch of this repository contains the original Buzz desktop application code. The ScribeRelay API service is currently under active development on the scribe-relay-api branch.
To test the new API service, you must check out the feature branch.
-
Clone the repository:
git clone [https://github.com/YOUR\_USERNAME/scribe-relay.git\](https://github.com/YOUR\_USERNAME/scribe-relay.git)
cd scribe-relay -
Switch to the feature branch:
git checkout scribe-relay-api -
Install dependencies and run the service:
It's recommended to do this within a virtual environment.
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows, use `venv\Scripts\activate`# Install dependencies
pip install -r requirements.txt# Run the service
uvicorn api_service:app --reloadYour ScribeRelay API will now be running and accessible at http://localhost:8000.
You can interact with the API using any HTTP client. Here are some examples using curl.
Submit an audio file for transcription. This endpoint returns a task_id that you can use to track the job.
curl -X POST \
-F "file=@/path/to/your/audio.mp3" \
-F "req={\"model_type\": \"Whisper.cpp\", \"whisper_model_size\": \"tiny\"}" \
http://localhost:8000/transcribe
Successful Response (202 Accepted):
{
"task_id": "a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d6",
"message": "Transcription task started."
}
Check the status of a transcription job.
curl http://localhost:8000/status/a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d6
Response:
{
"id": "a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d6",
"status": "in_progress",
"progress": 0.75,
"error": null
}
Retrieve the final transcription once the task status is completed.
curl http://localhost:8000/result/a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d6
Response:
{
"id": "a1b2c3d4-e5f6-a7b8-c9d0-e1f2a3b4c5d6",
"segments": [
{
"start": 0,
"end": 3250,
"text": "Hello, this is the first segment of the transcription."
},
{
"start": 3250,
"end": 6800,
"text": " And this is the second segment."
}
]
}
ScribeRelay is a fork of Buzz, an amazing offline transcription tool created by Chidi Williams. This project adapts the powerful core of Buzz into a self-hostable web service for developers.
We are immensely grateful to the original author for their work and for making it available to the community under an open-source license.
This project is licensed under the MIT License. See the LICENSE file for details.