This commit is contained in:
2024-09-19 19:09:44 +02:00
parent 0ce3710b29
commit 49f393fc47
+16 -8
View File
@@ -32,8 +32,11 @@ SAMPLE_WIDTH = OpusDecoder.SAMPLE_SIZE // OpusDecoder.CHANNELS
SAMPLING_RATE = OpusDecoder.SAMPLING_RATE
#rotate file after there is 0.5s between last received pcm for user.
#delete messsages after user disconnect
logger = logging.getLogger("discord")
location = "/home/pi/Conjurer/"
location = "/home/pi/Conjurer/transcripts/"
class WaveWriter:
@@ -43,7 +46,7 @@ class WaveWriter:
self.present_file_id = 0
self.file_name_past = None
self.file_name_present = location + self.username + str(self.present_file_id)
self.file_name_present = location + self.username + "_" + str(self.present_file_id)
self.transcript_file_present : wave.Wave_write = wave.open(
self.file_name_present, "wb"
)
@@ -51,7 +54,7 @@ class WaveWriter:
self.transcript_file_present.setsampwidth(SAMPLE_WIDTH)
self.transcript_file_present.setframerate(SAMPLING_RATE)
self.file_name_future = location + self.username + str(self.present_file_id + 1)
self.file_name_future = location + self.username + "_" + str(self.present_file_id + 1)
self.transcript_file_future : wave.Wave_write = wave.open(
self.file_name_future, "wb"
)
@@ -66,9 +69,7 @@ class WaveWriter:
self.present_file_id += 1
self.file_name_present = self.file_name_future
self.transcript_file_present = self.transcript_file_future
self.transcript_file_future = (
location + self.username + str(self.present_file_id + 1)
)
self.file_name_future = location + self.username + "_" + str(self.present_file_id + 1)
self.transcript_file_future : wave.Wave_write = wave.open(
self.file_name_future, "wb"
)
@@ -106,12 +107,15 @@ class SRBuffer(voice_recv.AudioSink):
def on_user_disconnect(self,username):
self.wavewriter[username].cleanup()
self.wavewriter.pop(username)
def rotate_user(self,username):
self.wavewriter[username].rotate()
def wants_opus(self) -> bool:
return False
def write(self, user, data) -> None:
logger.info("user: %s", user)
self.wavewriter[str(user.id)].writeframes(data.pcm)
def cleanup(self) -> None:
@@ -160,10 +164,14 @@ class Transcriber(commands.Cog):
async def on_voice_state_update(self, user, before, after):
if before.channel is None:
logger.info("User %s connected to channel %s", user, after.channel.name)
self.wsink.on_user_connect(user.id)
elif after.channel is None:
logger.info("User %s disconnected from channel %s", user, before.channel.name)
self.wsink.on_user_disconnect(user.id)
elif after.self_mute or after.mute:
self.wsink.rotate_user(user.id)
else:
logger.info("User VC status changed %s", user)
logger.info("User VC status changed %s", user.id)
logger.info("Before %s", before)
logger.info("After %s", after)