107 lines
2.3 KiB
Markdown
107 lines
2.3 KiB
Markdown
BASED ON https://github.com/salute-developers/GigaAM
|
|
|
|
# Simple ASR Server
|
|
|
|

|
|
|
|
This project provides a RESTful API for audio transcription using a Whisper model. The API is built with FastAPI and runs in a Docker container.
|
|
|
|
## Prerequisites
|
|
|
|
Before you begin, ensure you have the following installed:
|
|
|
|
* [Docker](https://docs.docker.com/get-docker/)
|
|
* [Docker Compose](https://docs.docker.com/compose/install/)
|
|
|
|
## Project Structure
|
|
|
|
```
|
|
.
|
|
├── app.py # Main application file with FastAPI endpoint
|
|
├── docker-compose.yml # Docker Compose configuration
|
|
├── Dockerfile # Dockerfile for building the application image
|
|
├── model/ # Directory for Whisper model files
|
|
└── requirements.txt # Python dependencies
|
|
```
|
|
|
|
## Setup
|
|
|
|
1. **Clone the repository:**
|
|
|
|
```bash
|
|
git clone https://github.com/SlavaVlad/simple-asr-server
|
|
cd simple-asr-server
|
|
```
|
|
3. **Add API keys:**
|
|
|
|
Create a `keys.txt` file in the root of the project and add your API keys, one per line.
|
|
|
|
## Building and Running the Project
|
|
|
|
You can build and run the project using Docker Compose.
|
|
|
|
1. **Build the Docker image:**
|
|
|
|
```bash
|
|
docker-compose build
|
|
```
|
|
|
|
2. **Run the container:**
|
|
|
|
```bash
|
|
docker-compose up
|
|
```
|
|
|
|
The application will be available at `http://0.0.0.0:9854`.
|
|
|
|
## API Endpoint
|
|
|
|
### POST /transcribe
|
|
|
|
This endpoint accepts an audio file and returns the transcription.
|
|
|
|
* **URL:** `/transcribe`
|
|
* **Method:** `POST`
|
|
* **Headers:**
|
|
* `X-API-Key`: Your API key.
|
|
* **Form Data:**
|
|
* `file`: The audio file to be transcribed.
|
|
|
|
**Example using `curl`:**
|
|
|
|
```bash
|
|
curl -X POST "http://localhost:9854/transcribe" \
|
|
-H "X-API-Key: YOUR_API_KEY" \
|
|
-F "file=@/path/to/your/audio.wav"
|
|
```
|
|
|
|
**Successful Response (200 OK):**
|
|
|
|
```json
|
|
{
|
|
"transcription": [
|
|
{
|
|
"start_time": 0.0,
|
|
"end_time": 2.5,
|
|
"transcription": "Hello world."
|
|
}
|
|
],
|
|
"text": "Hello world. ",
|
|
"metrics": {
|
|
"processing_time": 5.2,
|
|
"rtf": 0.5,
|
|
"word_rate": 2.0
|
|
}
|
|
}
|
|
```
|
|
|
|
**Error Response (401 Unauthorized):**
|
|
|
|
If the API key is missing or invalid.
|
|
|
|
```json
|
|
{
|
|
"detail": "Invalid API Key"
|
|
}
|
|
```
|