fix: decode opus manually and use json audio transcription
This commit is contained in:
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user