Browse Source

fix start recognition external file

dev
poturaevpetr 2 weeks ago
parent
commit
d460728b2e
  1. 19
      apiApp/routers/external_audio.py

19
apiApp/routers/external_audio.py

@ -23,12 +23,13 @@ router = APIRouter(
@router.post("/upload") @router.post("/upload")
async def upload_external_audio( async def upload_external_audio(
file: UploadFile = FastAPIFile(...), file: UploadFile = FastAPIFile(...),
callback_url: str = Form(..., description="URL для отправки результата распознавания (FileAudioAPI вызовет GigaAM и затем отправит результат на этот URL)"), callback_url: str = Form(None, description="URL для отправки результата распознавания (опционально). Если передан — FileAudioAPI вызовет GigaAM и затем отправит результат на этот URL."),
db: Session = Depends(get_db) db: Session = Depends(get_db)
): ):
""" """
Загрузка внешнего аудиофайла. Файл сохраняется в общей папке, после чего Загрузка внешнего аудиофайла. Файл сохраняется в общей папке.
автоматически отправляется на распознавание в GigaAM. Результат придёт на callback_url. Если передан callback_url автоматически отправляется на распознавание в GigaAM,
а результат придёт на callback_url.
""" """
# Проверка расширения файла # Проверка расширения файла
@ -78,8 +79,9 @@ async def upload_external_audio(
detail=f"Error creating database record: {str(e)}" detail=f"Error creating database record: {str(e)}"
) )
# Запрос на распознавание в GigaAM (файл уже в общей папке по имени safe_name) # Всегда запускаем распознавание в GigaAM; callback_url передаём только если передан
task_id, recognition_error = send_to_recognition(filename=safe_name, callback_url=callback_url.strip()) cb = callback_url.strip() if (callback_url and callback_url.strip()) else None
task_id, recognition_error = send_to_recognition(filename=safe_name, callback_url=cb)
# Ответ: запись аудио + данные по постановке в очередь распознавания # Ответ: запись аудио + данные по постановке в очередь распознавания
result = { result = {
@ -97,7 +99,7 @@ async def upload_external_audio(
result["recognition_error"] = recognition_error result["recognition_error"] = recognition_error
return result return result
def send_to_recognition(filename: str, callback_url: str) -> tuple: def send_to_recognition(filename: str, callback_url: str | None = None) -> tuple:
""" """
Отправка аудиофайла на распознавание в GigaAM. Отправка аудиофайла на распознавание в GigaAM.
Файл должен уже лежать в общей папке под именем filename. Файл должен уже лежать в общей папке под именем filename.
@ -107,9 +109,12 @@ def send_to_recognition(filename: str, callback_url: str) -> tuple:
""" """
try: try:
gigaam_url = f"{GIGAAM_API_URL.rstrip('/')}/api/call/external/process" gigaam_url = f"{GIGAAM_API_URL.rstrip('/')}/api/call/external/process"
payload = {"filename": filename}
if callback_url:
payload["callback_url"] = callback_url
resp = requests.post( resp = requests.post(
gigaam_url, gigaam_url,
json={"filename": filename, "callback_url": callback_url}, json=payload,
timeout=15, timeout=15,
) )
if resp.status_code == 202: if resp.status_code == 202:

Loading…
Cancel
Save