Коду не удается получить файл voice телеграмм сообщения
Подрубил ChatGPT к коду, но не удается конвертировать голосовое сообщение в текст т.к в самом начале фейлится на получении файла
@dp.message_handler(content_types=['text', 'voice'])
async def echo_msg(message: types.Message):
username = message.from_user.username
voice_file = None
# Если это голосовое сообщение, распознаем его и сохраняем текстовое сообщение
if message.voice:
# Получаем файл с голосовым сообщением
voice_note = message.voice
ogg_file = 'temp.ogg'
voice_note.download(ogg_file)
if os.path.exists(ogg_file):
with open(ogg_file, 'rb') as f:
ogg_data = f.read()
opus_data = pyogg.decode(ogg_data)
pcm_data = pyogg.get_pcm(opus_data)
r = sr.Recognizer()
text = r.recognize_google(pcm_data)
user_message = text
os.remove(ogg_file)
else:
user_message = "скажи - мне Не удалось распознать голосовое сообщение"
# Если это текстовое сообщение
elif message.text:
user_message = message.text
# Если это первое сообщение от пользователя, новый список для хранения сообщений
if username not in messages:
messages[username] = []
# Добавить сообщение пользователя в список сообщений
messages[username].append({"role": "user", "content": user_message})
messages[username].append({"role": "system", "content": "Вы - полезный помощник."})
# Записать сообщение пользователя в журнал
logging.info(f'{username}: {user_message}')
# Проверь, является ли это сообщение ответом на предыдущее сообщение от бота.
should_respond = not message.reply_to_message or message.reply_to_message.from_user.id == bot.id
# Если это новое сообщение или сообщение, на которое бот должен ответить.
if should_respond:
# Отправить сообщение о том, что бот пишет сообщение
typing_message = await message.reply("Печатает сообщение...")
# OpenAI для генерации ответа
p.s изменил немного код, но теперь он просто игнорирует голосовые и отправляет чату команду не удалось распознать текст
# Если это голосовое сообщение, распознаем его и сохраняем текстовое сообщение
if message.voice:
# Получаем файл с голосовым сообщением
voice_note = message.voice
# Получаем объект файла голосового сообщения
file_id = message.voice.file_id
# Получаем путь к файлу голосового сообщения
file = await bot.get_file(file_id)
file_path = file.file_path
# Загружаем файл голосового сообщения и сохраняем его на диск
voice_note = await bot.download_file(file_path)
if os.path.exists(file_path):
with open(file_path, 'rb') as f:
ogg_data = f.read()
opus_data = pyogg.decode(ogg_data)
pcm_data = pyogg.get_pcm(opus_data)
r = sr.Recognizer()
text = r.recognize_google(pcm_data)
user_message = text
os.remove(file_path)
else:
user_message = "скажи - мне Не удалось распознать голосовое сообщение"