tried to fix transcibe failures

This commit is contained in:
RubenRWU
2026-04-07 15:28:56 +02:00
parent d1866508ca
commit 6ce8d34317
2 changed files with 32 additions and 10 deletions

41
main.py
View File

@@ -108,15 +108,8 @@ def is_azure_direct_upload_supported(file_path: Path, fmt: str) -> bool:
".mp3",
".ogg",
".flac",
".webm",
".wma",
".aac",
".amr",
".speex",
".m4a",
".mp4",
}
supported_formats = {"wav", "mp3", "ogg", "flac", "webm"}
supported_formats = {"wav", "mp3", "ogg", "flac"}
return file_path.suffix.lower() in supported_exts or fmt in supported_formats
@@ -150,6 +143,15 @@ def _build_azure_definition() -> dict:
},
"profanityFilterMode": os.getenv("AZURE_SPEECH_PROFANITY_MODE", "Masked"),
}
locales_raw = (
os.getenv("AZURE_SPEECH_LOCALES", "").strip()
or os.getenv("AZURE_SPEECH_LOCALE", "").strip()
)
if locales_raw:
locales = [item.strip() for item in locales_raw.split(",") if item.strip()]
if locales:
definition["locales"] = locales
prompt = os.getenv("AZURE_SPEECH_LLM_PROMPT", "").strip()
if prompt:
definition["enhancedMode"]["prompt"] = [prompt]
@@ -175,7 +177,17 @@ def _encode_multipart_form(fields: dict[str, str], file_field: str, file_path: P
body.extend(value.encode("utf-8"))
body.extend(b"\r\n")
mime_type = "audio/wav" if file_path.suffix.lower() == ".wav" else "application/octet-stream"
mime_types = {
".wav": "audio/wav",
".mp3": "audio/mpeg",
".ogg": "audio/ogg",
".flac": "audio/flac",
".webm": "audio/webm",
".aac": "audio/aac",
".m4a": "audio/mp4",
".mp4": "audio/mp4",
}
mime_type = mime_types.get(file_path.suffix.lower(), "application/octet-stream")
body.extend(f"--{boundary}\r\n".encode("utf-8"))
body.extend(
(
@@ -244,7 +256,16 @@ def _format_azure_transcript(result: dict) -> str:
if merged_text:
return f"SPRECHER: {merged_text}"
raise RuntimeError("Azure Speech lieferte kein Transkript zurück")
diagnostics = {
"durationMilliseconds": result.get("durationMilliseconds"),
"keys": sorted(result.keys()),
}
preview = json.dumps(result, ensure_ascii=False)[:1200]
raise RuntimeError(
"Azure Speech lieferte kein Transkript zurück. "
f"Diagnose={json.dumps(diagnostics, ensure_ascii=False)} "
f"Antwort={preview}"
)
def transcribe_audio(file_path: Path) -> str: