fix: decode opus manually and use json audio transcription

This commit is contained in:
2026-06-08 06:29:29 +00:00
parent e6aac63aca
commit a191bcd1eb
4 changed files with 114 additions and 37 deletions
+2 -24
View File
@@ -10,8 +10,6 @@ from pathlib import Path
import discord
from discord import app_commands
from discord.ext import commands, voice_recv
from discord.ext.voice_recv import opus as voice_recv_opus
from discord.opus import OpusError
from dotenv import load_dotenv
import config
@@ -19,28 +17,8 @@ from helpers import chunk_message, command_channel_error
from openrouter_client import summarize, transcribe
from voice import MeetingRecorder
log = logging.getLogger(__name__)
_original_decode_packet = voice_recv_opus.PacketDecoder._decode_packet
def _safe_decode_packet(self, packet):
try:
return _original_decode_packet(self, packet)
except OpusError as exc:
log.warning("Dropping corrupted opus packet for ssrc %s: %s", self.ssrc, exc)
if packet:
return packet, b""
try:
next_packet = self._buffer.peek_next()
if next_packet is not None:
return packet, self._decoder.decode(next_packet.decrypted_data, fec=True)
return packet, self._decoder.decode(None, fec=False)
except Exception:
return packet, b""
voice_recv_opus.PacketDecoder._decode_packet = _safe_decode_packet
logging.getLogger("discord.ext.voice_recv.reader").setLevel(logging.WARNING)
logging.getLogger("discord.ext.voice_recv.gateway").setLevel(logging.WARNING)
load_dotenv()