feat: ElevenLabs-Voice-Liste + Fehlerdetails in Audio-Batch-Ergebnissen

- GET /api/tts-settings/voices/available listet die Account-Stimmen
  (Grundlage für Voice-Auswahl im CMT statt Freitext-IDs)
- Audio-Batch/-Fill-Fehler enthalten jetzt das ElevenLabs-Detail
  (z.B. voice_not_found) statt nur 'ElevenLabs error'

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 21:00:27 +02:00
parent 985119bb03
commit f5b69a9213
4 changed files with 27 additions and 4 deletions

View File

@@ -4,6 +4,7 @@ const { query } = require('../db');
const { LANGS } = require('../lib/translate');
const { loadPairContext, computeReadiness, loadPairContent } = require('../lib/pairContent');
const { enqueue, loadPairs, collectAudioUnits, generateWithBackoff, translatePair } = require('../lib/pipeline');
const { describeError } = require('./audios');
const { PLACEHOLDER_RE } = require('../lib/placeholders');
// ── Objekt-Wort-Erkennung in Sätzen (für die manuelle Zuweisung beim Review) ──
@@ -233,7 +234,7 @@ router.post('/picture/:id/audio-fill', async (req, res, next) => {
try { await generateWithBackoff(u); result.generated++; }
catch (err) {
result.failed++;
result.errors.push({ source: `${u.source_table}/${u.source_field}/${u.language}`, error: err.message });
result.errors.push({ source: `${u.source_table}/${u.source_field}/${u.language}`, error: describeError(err) });
}
}
res.json(result);