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")
async def upload_external_audio(
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)
):
"""
Загрузка внешнего аудиофайла. Файл сохраняется в общей папке, после чего
автоматически отправляется на распознавание в 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)}"
)
# Запрос на распознавание в GigaAM (файл уже в общей папке по имени safe_name)
task_id, recognition_error = send_to_recognition(filename=safe_name, callback_url=callback_url.strip())
# Всегда запускаем распознавание в GigaAM; callback_url передаём только если передан
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 = {
@ -97,7 +99,7 @@ async def upload_external_audio(
result["recognition_error"] = recognition_error
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.
Файл должен уже лежать в общей папке под именем filename.
@ -107,9 +109,12 @@ def send_to_recognition(filename: str, callback_url: str) -> tuple:
"""
try:
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(
gigaam_url,
json={"filename": filename, "callback_url": callback_url},
json=payload,
timeout=15,
)
if resp.status_code == 202:

Loading…
Cancel
Save