- Verschifft
- 29. September 2026 um 02:32 UTC
- Autor
- Kamo
- Ausschuss
- 16db29f
Der Adapter fest codierte output_format=mp3_44100_128 bei jedem Aufruf, also ein Anrufer E5 für wav (oder Kamoai-Stimme fragen nach pcm, auf jedem Anruf) noch bekam mp3 zurück - eine zusätzliche lossy Decode plus eine Neuinszenierung auf dem Anrufpfad, und ein Stille Vertragsverletzung für jeden anderen Anrufer von /api/ai/v1/audio/speech. synthesize() bildet jetzt AudioControllers Antwort_format auf ElevenLabs' eigene Karten ab output_format: pcm/wav beide fetch pcm_24000 (AIServices eigene PCM-Convention, passend zu kamoai-voice's hardcoded 24 kHz decode) mit winköpft in einem echten RIFF/WAVE Header hier (ElevenLabs sendet nie einen), mp3 hält mp3_44100_128, Opus Maps zu opus_48000_128 und eine explizite ulaw Karten zu ulaw_8000. Ein Format ElevenLabs können nicht sprechen (Aac, flac) wird vorne abgelehnt, so dass der Router fällt zurück zu einem Modell, das kann, anstatt stillschweigend mismapping es zu mp3. Die deklarierte mimeType jetzt immer passt die Bytes zurückgegeben, nicht was Content-Type der Anbieter hat zufällig gesendet. Kamoai-Voice fragt bereits nach pcm und liest den deklarierten Content-Type von AIService anstatt ihrer eigenen Forderung zu vertrauen, so dass dort keine Änderung nötig war: real, Matchrate PCM jetzt anstelle eines decoded-und-reampled mp3. Tests (SpeechVendorFamiliesTest, rot dann grün gegen eine gefälschte ElevenLabs server): jede response_format-Karte zum rechten output_format, der wav Wrapper ist ein gültiger 44-Byte RIFF/WAVE Header um die unberührten PCM-Bytes, ein nicht unterstütztes Format wird vor jedem HTTP-Aufruf abgelehnt und mp3 ist unverändert.
