[00:00] Speaker 1:...
[05:01] Speaker 2:...
Если они будут говорить в одно и то же время в какой -то момент, то оба появятся в транскрипте в этом HR/MIN/Second.
любая помощь. < /p>
async def once_done(sink: discord.sinks, channel: discord.TextChannel, *args):
meeting_start = connections.get(channel.guild.id, {}).get("meeting_start", 0)
user_start_times = connections.get(channel.guild.id, {}).get("user_start", {})
await channel.send("
await sink.vc.disconnect()
words_list = []
for user_id, audio in sink.audio_data.items():
payload = {"buffer": audio.file.read()}
response = deepgram.listen.rest.v("1").transcribe_file(payload, options)
words = response["results"]["channels"][0]["alternatives"][0]["words"]
words = [word.to_dict() for word in words]
if words:
first_word_time = words[0]["start"]
if user_id not in user_start_times:
user_start_times[user_id] = first_word_time
user_offset = user_start_times[user_id] - meeting_start
for word in words:
words_list.append({
"word": word["word"],
"start": word["start"] + user_offset,
"end": word["end"] + user_offset,
"punctuated_word": word["punctuated_word"],
"speaker": user_id,
})
words_list.sort(key=lambda x: x["start"])
transcript = []
current_speaker = None
current_segment = {"speaker": None, "start": None, "end": None, "text": ""}
for word in words_list:
speaker = word["speaker"]
if (speaker != current_speaker or
(current_segment["end"] is not None and word["start"] - current_segment["end"] > 2)):
if current_speaker is not None:
transcript.append(current_segment)
current_speaker = speaker
current_segment = {
"speaker": speaker,
"start": word["start"],
"end": word["end"],
"text": word["punctuated_word"]
}
else:
current_segment["text"] += " " + word["punctuated_word"]
current_segment["end"] = word["end"]
if current_segment["speaker"] is not None:
transcript.append(current_segment)
with open("transcript.txt", "w") as f:
for segment in transcript:
start_minutes = int(segment["start"] // 60)
start_seconds = int(segment["start"] % 60)
end_minutes = int(segment["end"] // 60)
end_seconds = int(segment["end"] % 60)
f.write(f"({start_minutes}:{start_seconds:02d} - {end_minutes}:{end_seconds:02d}) {segment['speaker']}:\n{segment['text']}\n\n")
await channel.send(file=discord.File("transcript.txt"))
await channel.send("
Подробнее здесь: https://stackoverflow.com/questions/794 ... iscord-bot