Перевод голоса в текст используя Deepgram
В этом посте мы добавим в Telegram-бота разспознование голоса через сервис Deepgram
Реклама
В посте "AIOgram3 16. Перевод голосовых сообщений в текст" в бота был добавлен перевод голосовых сообщений в текст используя API SpeechFlow, которое предоставляет 5 часов расшифровки в месяц.
В комментариях к посту, Timofei Ryko
подсказал новый сервис - Deepgram, предоставляющий в бесплатном тарифе 200$, которого хватит примерно на 750 часов распознавания. Регистрация предельно простая. В личном кабинете получаем API-ключ, важно сохранить его сразу, т.к. он отображается всего раз.
Давайте заменим старый сервис на новый в нашем боте:
- Установим библиотеку для работы с сервисом:
pip install deepgram-sdk
Добавляем секретный ключ в .env
и прописываем соответствующее поле в pydantic-settings-модели
.
В функции check_message()
сносим старую обработку голосового сообщения и добавляем новую:
deepgram = DeepgramClient(api_key=secrets.deepgram_key.get_secret_value())
file = await bot.get_file(message.voice.file_id)
file_data: BytesIO = await bot.download_file(file.file_path)
payload: FileSource = {"buffer": file_data.read()}
options = PrerecordedOptions(model="nova-2", smart_format=True, language="ru-RU")
response = await deepgram.listen.asyncrest.v("1").transcribe_file(payload, options)
await message.reply(f"<pre><code>{response.results.channels[0].alternatives[0].transcript}</code></pre>")
Получаем файл голосового сообщения в буфер обмена и отправляем его в сервис. Затем полученный результат отправляем в ответ на голосовое сообщение.
Полный код бота доступен в нашем репозитории для подписчиков Boosty.
Все статьи