2.5 KiB
2.5 KiB
Endpoint přepisu
Jediná metoda, která udělá vše najednou: přepis Deepgramem + OpenAI (whisper-1) a jejich
AI sloučení. Audio se posílá jako proměnná file (multipart/form-data), ostatní parametry
jsou form fields v POST. API klíče jsou v X- hlavičkách. Výstup je vždy JSON.
Hlavičky (secrets)
| Hlavička | Nutná | Popis |
|---|---|---|
X-Deepgram-Api-Key |
ano | Deepgram API klíč |
X-OpenAI-Api-Key |
ano | OpenAI API klíč (whisper-1 přepis + slučovací chat) |
POST /dual-with-merge
Form parametry
| Pole | Typ | Default | Popis |
|---|---|---|---|
file |
soubor | — | Audio k přepisu (povinné) |
combine_prompt |
text | výchozí „Czech Transcript Merger“ | System prompt pro sloučení |
deepgram_model |
text | nova-2 |
Deepgram model |
whisper_model |
text | whisper-1 |
OpenAI přepisový model |
chat_model |
text | gpt-4o |
OpenAI chat model pro sloučení |
language |
text | cs |
Jazyk (ISO kód) |
diarize |
bool | true |
Deepgram diarizace |
smart_format |
bool | true |
Deepgram smart formatting |
Nezadá-li se combine_prompt, použije se výchozí prompt z app/prompts.py.
Odpověď
{
"gpt": "přepis z OpenAI (whisper-1)",
"deepgram": "přepis z Deepgramu",
"merge": "sloučený, co nejpřesnější výsledný přepis"
}
Příklad (curl)
curl -X POST https://services.csbot.cz/apps/audio-transcription/dual-with-merge \
-H "X-Deepgram-Api-Key: <DEEPGRAM_KEY>" \
-H "X-OpenAI-Api-Key: <OPENAI_KEY>" \
-F "file=@nahravka.mp3" \
-F "language=cs"
Chybové stavy
Chybové odpovědi jsou JSON: {"error": "<TypChyby>", "message": "...", "detail": "<text z upstreamu>"}.
| HTTP | Kdy |
|---|---|
| 400 | Chybí / prázdný audio soubor; nepodporovaný nebo poškozený audio formát (Deepgram/OpenAI vrátí 400/415/422) |
| 401 | Chybí X-Deepgram-Api-Key / X-OpenAI-Api-Key, nebo upstream odmítl API klíč (Deepgram/OpenAI 401/403) |
| 429 | Rate limit na Deepgram nebo OpenAI |
| 502 | Výpadek / neočekávaná chyba upstreamu (5xx, síťová chyba, timeout, neočekávaná struktura odpovědi) |
| 500 | Neočekávaná chyba serveru |
Mapování dělá raise_for_upstream v app/errors.py. Špatný typ souboru se pozná až
z odpovědi Deepgramu/OpenAI (bytes validují oni) a mapuje se na 400, ne na 502.
Všechny chyby se logují (bez secrets), žádné tiché selhání.