{"repo":"NousResearch/hermes-agent","public_id":"36131","display_label":"TTS audio container mismatch and Opus conversion patches","summary":"Several TTS providers (Edge, Piper, MiniMax, xAI) were saving non-Opus audio under .ogg extensions, breaking Telegram voice bubbles and on-device transcription. Patches add magic-byte container detection and proper transcoding to Opus before delivery.","subsystem":"agent/transports","counts":{"members":11,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":3,"merged_prs":1,"attempt_prs":7},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":73507},"resolution":{"state":"partially_resolved","by":"pr-73507"},"freshness":{"state":"verified","last_verified_at":"2026-07-28T18:52:45+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_PARTIAL","link_density":0.15854545454545452},"fix_edges":[{"issue_number":36131,"pr_number":73507,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true},{"issue_number":70735,"pr_number":73507,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":36131,"title":"[BUG]Audio attachments cached with wrong .ogg extension (real format MP4/QuickTime+AAC) → on-device transcription fails","url":null,"state":"closed"},{"kind":"issue","number":57048,"title":"Edge TTS provider silently saves MP3 bytes under a .ogg extension when given an explicit .ogg output_path (breaks Telegram voice bubbles)","url":null,"state":"closed"},{"kind":"issue","number":58845,"title":"[Bug]: Piper TTS writes raw WAV to .ogg output path — Opus conversion skipped, Telegram shows 0-second voice bubble","url":null,"state":"closed"},{"kind":"pr","number":36166,"title":"fix(gateway): sniff cached audio container type","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"156edc5ded","number":0},{"kind":"commit","value":"a1582a75ae","number":0},{"kind":"pr","value":"#73507","number":73507}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":36179,"title":"fix(gateway): sniff audio magic bytes in cache_audio_from_bytes to fix wrong .ogg extension","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#36166","number":36166},{"kind":"pr","value":"#36176","number":36176}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":57069,"title":"fix(tts): convert Edge TTS MP3 to Opus when caller supplies .ogg path","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#20882","number":20882},{"kind":"pr","value":"#20882","number":20882},{"kind":"pr","value":"#57048","number":57048}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":57080,"title":"fix(tts): convert explicit Edge OGG output","url":null,"state":"closed","close_reason":{"category":"stale_abandoned","implication":"active"},"merged":false},{"kind":"pr","number":57190,"title":"fix(tts): transcode edge ogg output paths","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#73072","number":73072}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":58848,"title":"fix(tts): convert Piper WAV-in-OGG to real Opus on Telegram","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#73072","number":73072}],"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":59196,"title":"fix(tts): convert Piper raw WAV to Opus before sending as .ogg","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#58848","number":58848},{"kind":"pr","value":"#58845","number":58845},{"kind":"pr","value":"#58848","number":58848},{"kind":"pr","value":"#59092","number":59092}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":73507,"title":"fix(gateway): central magic-byte container detection for all inbound audio","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["contributors/emails/[redacted:email]","contributors/emails/[redacted:email]","gateway/platforms/base.py","gateway/platforms/signal.py","plugins/platforms/telegram/adapter.py","tests/gateway/test_document_cache.py","tests/gateway/test_extract_local_files.py","tests/gateway/test_platform_base.py","tests/gateway/test_signal.py","tests/gateway/test_telegram_documents.py","tests/tools/test_audio_container.py","tests/tools/test_send_message_tool.py","tests/tools/test_transcription_tools.py","tools/audio_container.py","tools/send_message_tool.py","tools/transcription_tools.py","tools/tts_tool.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}