arabic-word-recognition / API_ENDPOINTS.md
yansari's picture
Clean up codebase and fix Arabic words API
6c1f9ea
|
Raw
History Blame Contribute Delete
3.88 kB
# API Endpoints Documentation
## Arabic Words API
**Base URL**: `https://arabic-words-api-621075448606.europe-west1.run.app`
---
### 1. Health Check
**GET** `/health`
Check if the API is running.
**Response**:
```json
{
"status": "healthy"
}
```
---
### 2. Transcribe Word
**POST** `/transcribe_word`
Transcribe Arabic audio to text.
**Request**:
- Content-Type: `multipart/form-data`
- Body:
- `audio` (file): Audio file (WAV format, 16kHz recommended)
**cURL Example**:
```bash
curl -X POST https://arabic-words-api-621075448606.europe-west1.run.app/transcribe_word \
-F "audio=@your_audio.wav"
```
**Response**:
```json
{
"transcription": "السلام عليكم",
"confidence": 87.5,
"latency_ms": 234.56,
"model": "jonatasgrosman/wav2vec2-large-xlsr-53-arabic"
}
```
---
### 3. Verify Word
**POST** `/verify_word`
Verify if spoken audio matches a target Arabic word using fuzzy matching.
**Request**:
- Content-Type: `multipart/form-data`
- Body:
- `audio` (file): Audio file (WAV format)
- `target_word` (string): Expected Arabic word
- `threshold` (float, optional): Similarity threshold (0.0-1.0, default: 0.6)
**cURL Example**:
```bash
curl -X POST https://arabic-words-api-621075448606.europe-west1.run.app/verify_word \
-F "audio=@audio.wav" \
-F "target_word=مرحبا" \
-F "threshold=0.6"
```
**Response**:
```json
{
"result": true,
"similarity": 95.32,
"transcription": "مرحبا",
"target": "مرحبا",
"threshold": 0.6
}
```
---
## Arabic Letters API
**Base URL**: `https://arabic-letters-api-621075448606.europe-west1.run.app`
---
### 1. Health Check
**GET** `/health`
Check if the API is running.
**Response**:
```json
{
"status": "healthy"
}
```
---
### 2. Verify Letter
**POST** `/verify_letter`
Verify if spoken audio matches a target Arabic letter.
**Request**:
- Content-Type: `multipart/form-data`
- Body:
- `audio` (file): Audio file (WAV format)
- `target_letter` (string): Expected Arabic letter (single character)
**cURL Example**:
```bash
curl -X POST https://arabic-letters-api-621075448606.europe-west1.run.app/verify_letter \
-F "audio=@letter_audio.wav" \
-F "target_letter=ب"
```
**Response**:
```json
{
"result": true,
"confidence": 92.3,
"recognized_letter": "ب",
"target_letter": "ب"
}
```
---
### 3. Transcribe Letter
**POST** `/transcribe_letter`
Transcribe audio to identify the Arabic letter.
**Request**:
- Content-Type: `multipart/form-data`
- Body:
- `audio` (file): Audio file (WAV format)
**cURL Example**:
```bash
curl -X POST https://arabic-letters-api-621075448606.europe-west1.run.app/transcribe_letter \
-F "audio=@letter_audio.wav"
```
**Response**:
```json
{
"transcription": "ب",
"confidence": 89.7,
"latency_ms": 123.45
}
```
---
## Quick Test
### Test Arabic Words API:
```bash
# Health check
curl https://arabic-words-api-621075448606.europe-west1.run.app/health
# Open web UI in browser
open https://arabic-words-api-621075448606.europe-west1.run.app/
```
### Test Arabic Letters API:
```bash
# Health check
curl https://arabic-letters-api-621075448606.europe-west1.run.app/health
# Open web UI in browser
open https://arabic-letters-api-621075448606.europe-west1.run.app/
```
---
## Common Error Responses
### 400 Bad Request
```json
{
"error": "Could not read audio file. Expected WAV format."
}
```
### 422 Validation Error
```json
{
"detail": [
{
"loc": ["body", "audio"],
"msg": "field required",
"type": "value_error.missing"
}
]
}
```
### 500 Internal Server Error
```json
{
"error": "Internal server error during processing"
}
```
---
## Notes
- **Audio Format**: WAV format recommended, 16kHz sample rate
- **Max File Size**: 10MB (configurable)
- **Timeout**: 300 seconds
- **Authentication**: None (public endpoints)
- **CORS**: Enabled for all origins