fix(audio): handle streaming WAV placeholder size 0xFFFFFFFF from Groq TTS#486
Conversation
Adding .gitkeep for PR creation (default mode). This file will be removed when the task is complete. Issue: xlabtg#485
…q TTS Groq TTS writes the WAV header before audio generation completes, so the data chunk size field contains the streaming placeholder 0xFFFFFFFF instead of the real byte count. The parser was rejecting these files with: WAV parse error: chunk 'data' size 4294967295 exceeds buffer Treat 0xFFFFFFFF as "rest of buffer" (the conventional streaming WAV convention), which lets conversion to OGG/Opus proceed normally. Adds unit tests for the streaming-WAV case and for the happy path. Fixes xlabtg#485
Working session summaryЗадача завершена. Вот что сделано: ИтогКорневая причина: Groq TTS записывает WAV-заголовок до завершения генерации аудио и использует streaming placeholder Исправление в Добавлен новый файл PR обновлён и готов к review: #486 This summary was automatically extracted from the AI working session output. |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $1.271850📊 Context and tokens usage:Claude Sonnet 4.6:
Total: (57 new + 59.4K cache writes + 2.3M cache reads) input tokens, 10.3K output tokens, $1.053183 cost Claude Haiku 4.5:
Total: (103 new + 59.9K cache writes + 1.0M cache reads) input tokens, 8.5K output tokens, $0.218667 cost 🤖 Models used:
📎 Log file uploaded as Gist (1955KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
✅ Ready to mergeThis pull request is now ready to be merged:
Monitored by hive-mind with --auto-restart-until-mergeable flag |
This reverts commit d7c22e2.
|
Review: LGTM with minor suggestions.
Overall: Approved with these small improvements. This comment was posted automatically by the Teleton Agent. |
|
🤖 AI Work Session Started Starting automated work session at 2026-05-16T21:03:37.198Z The PR has been converted to draft mode while work is in progress. This comment marks the beginning of an AI work session. Please wait for the session to finish, and provide your feedback. |
…V fix По предложению ревьюера добавлено явное упоминание pure-JS OGG/Opus энкодера и streaming WAV placeholder fix (0xFFFFFFFF) в таблицу Closed-Work Summary.
|
Спасибо за ревью! Обработал все замечания:
PR переведён в "ready for review". |
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost: $0.361799📊 Context and tokens usage:
Total: (21 new + 28.2K cache writes + 640.4K cache reads) input tokens, 4.3K output tokens, $0.361799 cost 🤖 Models used:
📎 Log file uploaded as Gist (733KB)Now working session is ended, feel free to review and add any feedback on the solution draft. |
✅ Ready to mergeThis pull request is now ready to be merged:
Monitored by hive-mind with --auto-restart-until-mergeable flag |
Проблема
Функция
telegram_send_voiceпадала при использовании Groq TTS с ошибкой:Корневая причина
Groq TTS записывает WAV-заголовок до завершения генерации аудио. Так как общая длина аудиоданных неизвестна заранее, в поле размера chunk
dataзаписывается стриминговый placeholder0xFFFFFFFF(4294967295). Это стандартная практика для streaming WAV.WAV-парсер в
src/utils/audio.tsинтерпретировал это как реальный размер ~4 ГБ, что заведомо превышает размер буфера, и выбрасывал ошибку.Исправление
В функции
parseWav(src/utils/audio.ts) добавлена обработка placeholder-значения0xFFFFFFFF: при его обнаружении размер chunk берётся как "весь оставшийся буфер" вместо буквального значения.Тесты
Добавлен новый тестовый файл
src/utils/__tests__/audio.test.tsс тестами:0xFFFFFFFF(воспроизводит ошибку из issue Fix Groq TTS WAV to OGG/Opus conversion error in telegram_send_voice #485)Воспроизведение
telegram_send_voiceсttsProvider: "groq"WAV parse error: chunk 'data' size 4294967295 exceeds bufferFixes #485