|
10 | 10 | from concurrent.futures import ThreadPoolExecutor
|
11 | 11 | from typing import Optional
|
12 | 12 |
|
13 |
| - |
| 13 | +from fnmatch import fnmatch |
14 | 14 | import aiohttp
|
15 | 15 | import aiofiles
|
16 | 16 | import requests
|
@@ -168,6 +168,7 @@ class STTConfigForm(BaseModel):
|
168 | 168 | OPENAI_API_KEY: str
|
169 | 169 | ENGINE: str
|
170 | 170 | MODEL: str
|
| 171 | + SUPPORTED_CONTENT_TYPES: list[str] = [] |
171 | 172 | WHISPER_MODEL: str
|
172 | 173 | DEEPGRAM_API_KEY: str
|
173 | 174 | AZURE_API_KEY: str
|
@@ -202,6 +203,7 @@ async def get_audio_config(request: Request, user=Depends(get_admin_user)):
|
202 | 203 | "OPENAI_API_KEY": request.app.state.config.STT_OPENAI_API_KEY,
|
203 | 204 | "ENGINE": request.app.state.config.STT_ENGINE,
|
204 | 205 | "MODEL": request.app.state.config.STT_MODEL,
|
| 206 | + "SUPPORTED_CONTENT_TYPES": request.app.state.config.STT_SUPPORTED_CONTENT_TYPES, |
205 | 207 | "WHISPER_MODEL": request.app.state.config.WHISPER_MODEL,
|
206 | 208 | "DEEPGRAM_API_KEY": request.app.state.config.DEEPGRAM_API_KEY,
|
207 | 209 | "AZURE_API_KEY": request.app.state.config.AUDIO_STT_AZURE_API_KEY,
|
@@ -236,6 +238,10 @@ async def update_audio_config(
|
236 | 238 | request.app.state.config.STT_OPENAI_API_KEY = form_data.stt.OPENAI_API_KEY
|
237 | 239 | request.app.state.config.STT_ENGINE = form_data.stt.ENGINE
|
238 | 240 | request.app.state.config.STT_MODEL = form_data.stt.MODEL
|
| 241 | + request.app.state.config.STT_SUPPORTED_CONTENT_TYPES = ( |
| 242 | + form_data.stt.SUPPORTED_CONTENT_TYPES |
| 243 | + ) |
| 244 | + |
239 | 245 | request.app.state.config.WHISPER_MODEL = form_data.stt.WHISPER_MODEL
|
240 | 246 | request.app.state.config.DEEPGRAM_API_KEY = form_data.stt.DEEPGRAM_API_KEY
|
241 | 247 | request.app.state.config.AUDIO_STT_AZURE_API_KEY = form_data.stt.AZURE_API_KEY
|
@@ -269,6 +275,7 @@ async def update_audio_config(
|
269 | 275 | "OPENAI_API_KEY": request.app.state.config.STT_OPENAI_API_KEY,
|
270 | 276 | "ENGINE": request.app.state.config.STT_ENGINE,
|
271 | 277 | "MODEL": request.app.state.config.STT_MODEL,
|
| 278 | + "SUPPORTED_CONTENT_TYPES": request.app.state.config.STT_SUPPORTED_CONTENT_TYPES, |
272 | 279 | "WHISPER_MODEL": request.app.state.config.WHISPER_MODEL,
|
273 | 280 | "DEEPGRAM_API_KEY": request.app.state.config.DEEPGRAM_API_KEY,
|
274 | 281 | "AZURE_API_KEY": request.app.state.config.AUDIO_STT_AZURE_API_KEY,
|
@@ -910,10 +917,14 @@ def transcription(
|
910 | 917 | ):
|
911 | 918 | log.info(f"file.content_type: {file.content_type}")
|
912 | 919 |
|
913 |
| - SUPPORTED_CONTENT_TYPES = {"video/webm"} # Extend if you add more video types! |
914 |
| - if not ( |
915 |
| - file.content_type.startswith("audio/") |
916 |
| - or file.content_type in SUPPORTED_CONTENT_TYPES |
| 920 | + supported_content_types = request.app.state.config.STT_SUPPORTED_CONTENT_TYPES or [ |
| 921 | + "audio/*", |
| 922 | + "video/webm", |
| 923 | + ] |
| 924 | + |
| 925 | + if not any( |
| 926 | + fnmatch(file.content_type, content_type) |
| 927 | + for content_type in supported_content_types |
917 | 928 | ):
|
918 | 929 | raise HTTPException(
|
919 | 930 | status_code=status.HTTP_400_BAD_REQUEST,
|
|
0 commit comments