fix(coach): use nova-2-general for ar/tr STT to avoid 400 errors

This commit is contained in:
chahinebrini 2026-05-30 02:14:16 +02:00
parent 6d59bfd62b
commit d31d5b3b83

View File

@ -83,31 +83,39 @@ export default defineEventHandler(async (event) => {
buffer.length,
);
// Deepgram language mapping. WICHTIG: model=nova-3, NICHT nova-2 —
// nova-2 unterstützt weder Arabisch (ar) noch Türkisch (tr) und antwortet
// dafür mit 400 "No such model/language/tier combination" → leeres
// Transcript / Fehler beim Client ("kein Text nach Speech"). nova-3 deckt
// alle hier gelisteten Sprachen als diskrete Codes ab (inkl. ar + tr),
// ohne Regression für de/en/fr/es/pt/it. Verifiziert gg. Deepgram-Doc
// models-languages-overview (2026-05).
// Deepgram language mapping.
// Live-Diagnose (2026-05-30): nova-3 lehnt language=ar (und tr) mit
// 400 "No such model/language/tier combination found" ab — entgegen
// der vorherigen Annahme. Fallback für ar/tr: nova-2-general
// (multilingual auto-detect). Für alle anderen Sprachen bleibt nova-3
// (bessere Genauigkeit, diskrete language-codes).
const deepgramLang =
language &&
["de", "en", "tr", "ar", "fr", "es", "pt", "it"].includes(language)
? language
: "de";
const needsGeneralModel = ["ar", "tr"].includes(deepgramLang);
const deepgramUrl = needsGeneralModel
? "https://api.deepgram.com/v1/listen?model=nova-2-general"
: `https://api.deepgram.com/v1/listen?language=${deepgramLang}&model=nova-3`;
console.log(
"[transcribe] language:",
deepgramLang,
"model:",
needsGeneralModel ? "nova-2-general" : "nova-3",
);
try {
const response = await fetch(
`https://api.deepgram.com/v1/listen?language=${deepgramLang}&model=nova-3`,
{
method: "POST",
headers: {
Authorization: `Token ${config.deepgramApiKey}`,
"Content-Type": blobType,
},
body: buffer,
const response = await fetch(deepgramUrl, {
method: "POST",
headers: {
Authorization: `Token ${config.deepgramApiKey}`,
"Content-Type": blobType,
},
);
body: buffer,
});
const result = await response.json();