R
Rezinkin
Назад к блогу

Edge TTS: бесплатный синтез речи для ботов

4 мин
PythonTTSTelegram

Зачем нужен TTS в боте

Голосовые ответы делают бота удобнее: можно слушать ответ на ходу, за рулём или на тренировке. Пользователь отправляет голосовое сообщение — логично, что бот тоже может ответить голосом. Оставалось выбрать движок синтеза речи с хорошим качеством русского голоса и, желательно, бесплатный.

Сравнение вариантов

Я рассмотрел три варианта:

  • Google Cloud TTS — отличное качество, но платный ($4 за 1 млн символов для WaveNet)
  • Amazon Polly — хорошие голоса, но тоже платный и требует AWS-аккаунт
  • edge-tts — использует API Microsoft Edge, бесплатный, отличное качество русских голосов

Выбор пал на edge-tts: библиотека асинхронная, не требует API-ключей и поддерживает десятки русских голосов с разной интонацией. Качество на уровне коммерческих решений.

Интеграция с aiogram

Интеграция оказалась простой. Вызываем edge_tts.Communicate с нужным текстом и голосом, сохраняем результат в MP3-файл. Но Telegram ожидает голосовые сообщения в формате OGG Opus. Для конвертации использую ffmpeg через subprocess: ffmpeg -i input.mp3 -c:a libopus output.ogg. Весь процесс — генерация и конвертация — занимает 1–2 секунды для типичного ответа.

Результат

Бот теперь отвечает голосом с естественной интонацией. Пользователи могут выбрать предпочитаемый голос через настройки. Решение полностью бесплатное, не требует внешних API-ключей и работает стабильно. Единственное ограничение — зависимость от доступности Edge API, но за несколько месяцев эксплуатации проблем не было ни разу.