Найти в Дзене
Цифровая Переплавка

Используем онлайн-движок Microsoft Edge для TTS без самого Edge: обзор edge-tts

В эпоху голосовых ассистентов, подкастов и автоматических озвучек сделать «человеческое» звучание текста стало проще, чем когда-либо. Обычно для этого требуется подключение к облачному сервису с API-ключами или установка громоздких пакетов. Но оказывается, есть альтернатива, которая не требует ни Edge-браузера, ни официального API: проект edge-tts на Python. Если вы когда-нибудь пробовали озвучку от Microsoft, то, вероятно, сталкивались с привязкой к Windows или к браузеру Edge. В edge-tts этого нет — библиотека умеет «договариваться» с облачным TTS-сервисом (Text-to-Speech - перевод из текста в речь) Microsoft, не устанавливая лишних компонентов. Есть много сервисов с качественным TTS, но они почти всегда хотят от вас зарегистрировать учетную запись, получить ключ и оплачивать подписку. Здесь же edge-tts не просит никаких ключей — всё работает «из коробки», хотя и следует помнить, что это, по сути, «задняя дверь» к публичному движку Edge. Достаточно одной команды: pip install edge-tts
Оглавление

В эпоху голосовых ассистентов, подкастов и автоматических озвучек сделать «человеческое» звучание текста стало проще, чем когда-либо. Обычно для этого требуется подключение к облачному сервису с API-ключами или установка громоздких пакетов. Но оказывается, есть альтернатива, которая не требует ни Edge-браузера, ни официального API: проект edge-tts на Python.

Почему это может быть интересно

🔊 Подключение без Microsoft Edge или Windows

Если вы когда-нибудь пробовали озвучку от Microsoft, то, вероятно, сталкивались с привязкой к Windows или к браузеру Edge. В edge-tts этого нет — библиотека умеет «договариваться» с облачным TTS-сервисом (Text-to-Speech - перевод из текста в речь) Microsoft, не устанавливая лишних компонентов.

💡 Без API-ключей

Есть много сервисов с качественным TTS, но они почти всегда хотят от вас зарегистрировать учетную запись, получить ключ и оплачивать подписку. Здесь же edge-tts не просит никаких ключей — всё работает «из коробки», хотя и следует помнить, что это, по сути, «задняя дверь» к публичному движку Edge.

🛠️ Простая установка

Достаточно одной команды:

pip install edge-tts

или, если вы предпочитаете pipx:

pipx install edge-tts

и вы уже можете вызывать и команду edge-tts, и отдельные модули Python.

Ключевые возможности

🎙️ Озвучка текста:

Простейший сценарий:

edge-tts --text "Привет, мир!" --write-media hello.mp3

Библиотека сгенерирует hello.mp3 с голосом по умолчанию. Если же вы хотите сразу услышать результат, есть утилита edge-playback:

edge-playback --text "Привет, мир!"

Для неё, правда, понадобится установленный проигрыватель mpv.

🗣️ Выбор голоса:

Чтобы посмотреть все доступные голоса, запустите:

edge-tts --list-voices

Отобразятся имена, пол, языки и т.д. А для выбора голоса указываем --voice:

edge-tts --voice ru-RU-SvetlanaNeural --text "Здравствуйте!"

Количество голосов внушительно: от арабского до японского, от русского до испанского.

⚙️ Настройки тембра, скорости, громкости:

Разнообразить речь можно опциями --rate, --pitch и --volume. Например:

edge-tts --rate=-50% --pitch=-50Hz --volume=-30% \
--text "Низкий и медленный голос" --write-media low_voice.mp3

Обратите внимание: для отрицательных значений нужно использовать форму --option=-50%, чтобы не спутать это с «минусом» в аргументах командной строки.

🗂️ Субтитры (SRT) и озвучка:

Проект умеет создавать файлы субтитров (SRT), которые легко потом синхронизировать. Достаточно передать --write-subtitles mysub.srt. Например:

edge-tts --text "Текст для озвучки" \
--write-media myaudio.mp3 \
--write-subtitles myaudio.srt

Выполняется разбивка на сегменты, и вы получаете субтитры, которые можно использовать при воспроизведении.

Как это работает под капотом

  • Прямая отправка запросов к публичному endpoint, на который ссылается браузер Edge.
  • Формирование SSML (но в очень ограниченном варианте). Проект искусственно не «хакует» движок, он лишь повторяет те запросы, которые отсылает сам Edge.
  • Ограничения: В ранних версиях edge-tts пытались поддерживать кастомное SSML (Speech Synthesis Markup Language - Язык разметки для синтеза речи) такие как дополнительные тэги <prosody> и прочее, но Microsoft блокировала любые «подпорки», которые не генерирует Edge. Поэтому теперь вы не сможете «задать» произвольный синтез, но базовые настройки скорости, громкости и тона есть, что покрывает большую часть сценариев.

Использование в Python-сценариях

Если вы хотите сделать свой бота или инструмент для озвучки, можно импортировать:

import edge_tts

async def speak_text(text):
tts = edge_tts.Communicate(text, voice="ru-RU-SvetlanaNeural")
await tts.save("speech_output.mp3")

Запускать это нужно в асинхронном контексте (либо поддерживать цикл в asyncio). Примеры смотрите в разделе/examples репозитория.

Личный взгляд и плюсы/минусы

Плюсы:

  • 🦾 Универсальность: Работает на всех платформах (Linux, macOS, Windows), не требует установки Edge.
  • Богатство голосов: Можно выбрать акценты, языки, женский/мужской голос.
  • 🌐 Отсутствие ключей: Вы не «привязаны» к лицензиям и сложным подпискам.

⚠️ Минусы:

  • 🚫 Небольшие ограничения SSML: Нельзя использовать расширенные теги (например, несколько <prosody>).
  • 💻 Зависимость от сторонней политики: Microsoft может в любой момент изменить внутренние API, и проекту придётся адаптироваться.
  • 📜 Проблемы правовой стороны: Такой способ доступа технически не «взлом», но остаётся вопрос согласованности с лицензией сервиса.

Резюме

edge-tts — отличный вариант, если вам нужна качественная голосовая озвучка на многих языках без внедрения крупных SDK, без платы за ключи и без сложных ограничений. Это своего рода «прослойка» между Python-средой и публичной TTS-инфраструктурой Microsoft Edge.

Если вам интересно подробнее:

Попробуйте, и, возможно, edge-tts станет для вас незаменимым инструментом в мире автоматизации и формировании аудиоконтента.