2.6 KiB
audio-transcription — přehled
Stateless FastAPI služba v AppFactory. Přijme audio + parametry v POST a vrátí JSON s přepisy. Přepis běží dvěma engine paralelně (Deepgram + OpenAI Whisper) a volitelně se oba texty sloučí přes OpenAI Chat do jednoho co nejpřesnějšího přepisu.
Vychází z původní .NET implementace CallCenterController (dual/combined přepis).
Napojení na Twilio bylo vynecháno — audio se posílá přímo jako proměnná (upload).
Architektura
app/
main.py # FastAPI app, root_path, Swagger, exception handlers
config.py # env konfigurace + defaulty (žádné secrets)
logging_config.py # logging (bez secrets)
errors.py # typované výjimky + handlery (žádná tichá selhání)
credentials.py # X- hlavičky → přihlašovací údaje (stateless)
prompts.py # výchozí slučovací prompt (Czech Transcript Merger)
clients/
deepgram_client.py # Deepgram pre-recorded REST (httpx)
openai_client.py # OpenAI Whisper + Chat Completions (httpx)
routers/
meta.py # /health, /version
transcribe.py # /transcribe/dual, /transcribe/combined
Žádné SDK — upstream API se volají přímo přes httpx, aby služba nebyla závislá na
verzích knihoven. Nic se neukládá; služba je multi-tenant a stateless.
Reverse proxy
Běží za /apps/audio-transcription. root_path se čte z env ROOT_PATH, takže
OpenAPI servers i Swagger „Try it out“ míří na správný prefix.
Endpointy
| Metoda | Cesta | Popis |
|---|---|---|
| GET | /health |
Health check (200) |
| GET | /version |
Verze + root_path |
| POST | /transcribe/dual |
Deepgram + Whisper (dva texty) |
| POST | /transcribe/combined |
dual + sloučený merged |
Detaily viz transcribe.md.
Přihlašovací údaje
Secrets se předávají v hlavičkách u každého requestu (nikdy v těle/URL, nikdy se nelogují ani neukládají):
X-Deepgram-Api-KeyX-OpenAI-Api-Key
Konfigurace (env)
| Proměnná | Default | Popis |
|---|---|---|
ROOT_PATH |
"" |
Prefix reverse proxy (/apps/audio-transcription) |
DEFAULT_DEEPGRAM_MODEL |
nova-2 |
Výchozí Deepgram model |
DEFAULT_WHISPER_MODEL |
whisper-1 |
Výchozí OpenAI přepisový model |
DEFAULT_CHAT_MODEL |
gpt-4o |
Výchozí chat model pro sloučení |
DEFAULT_LANGUAGE |
cs |
Výchozí jazyk |
UPSTREAM_TIMEOUT_SECONDS |
300 |
Timeout upstream volání |
DEEPGRAM_BASE_URL |
https://api.deepgram.com/v1 |
Base URL Deepgram |
OPENAI_BASE_URL |
https://api.openai.com/v1 |
Base URL OpenAI |