Используем движок Microsoft Edge для прослушивания текстов и сохранения озвучки в mp3 фаил.
Большинство приложений для озвучки текста на Android объединяет одна черта: они либо стоят как подписка на Netflix, либо предлагают слушать «железный» голос робота, от которого через пять минут начинает болеть голова. Корпорации вроде Google или Microsoft имеют отличные нейросетевые движки, но в мобильные системы отдают их по остаточному принципу, приберегая качество для платных облачных платформ.
Мы пойдем другим путем. В браузере Microsoft Edge есть функция «Прочесть вслух», которая работает на базе отличных нейросетевых моделей. Разработчики сообщества давно вытащили этот механизм в отдельную Python-библиотеку edge-tts. Она позволяет скармливать движку тексты объемом до 60 000 знаков за раз и получать на выходе чистый, живой звук.
Для реализации нам не понадобится подписка или мощное железо — только эмулятор терминала Termux и немного терпения для разовой настройки.
Подготовка фундамента в Termux
Первым делом нужно установить сам Termux. Важный момент: версию из Google Play ставить нельзя, она давно не обновляется и не даст нам установить нужные пакеты. Актуальная сборка живет только на F-Droid.
Помимо терминала, нам понадобится пакет Termux:API. Он нужен, чтобы скрипт мог забирать текст напрямую из буфера обмена вашего смартфона. После установки Termux:API обязательно зайдите в настройки Android, найдите это приложение и дайте ему разрешение на «Отображение поверх других окон». Без этого магия копирования не сработает.
Запускаем Termux и последовательно вводим команды для обновления системы и установки зависимостей:
pkg update && pkg upgrade -y
pkg install python mpv termux-api nano -y
Мы ставим Python для запуска самого движка, mpv для воспроизведения аудиопотока и termux-api для связи с системой. Весь набор весит копейки по сравнению с любым коммерческим «комбайном» для чтения книг.
Установка и настройка нейросетевого движка
Теперь ставим саму библиотеку, которая будет общаться с серверами Microsoft:
pip install edge-tts
Движок готов. Можно запустить его вручную, прописывая длинные команды, но это неудобно. Наша цель — сделать так, чтобы озвучка запускалась одной короткой командой. Для этого мы создадим «алиас» (сокращение) в конфигурационном файле оболочки.
Вводим следующую конструкцию (можно скопировать целиком):
echo "alias read='edge-tts --voice ru-RU-DmitryNeural --text \"\$(termux-clipboard-get)\" --write-media - 2>/dev/null | mpv - 2>/dev/null'" >> ~/.bashrc && source ~/.bashrc
Что здесь происходит: мы создали команду read. При ее вводе Termux берет текст из вашего буфера обмена, отправляет его в нейросеть Microsoft (голосом Dmitry), получает аудиопоток и тут же начинает его играть через плеер mpv. Все лишние технические сообщения (ошибки или логи) скрываются, чтобы не мусорить в консоли.
Если вам больше нравится женский голос, просто замените в команде DmitryNeural на SvetlanaNeural.
Как этим пользоваться на практике
Алгоритм работы теперь выглядит максимально просто. Вы находите интересную статью в браузере или открываете документ, выделяете нужный фрагмент (хоть целую главу книги) и нажимаете «Копировать».
После этого открываете Termux, пишете read и нажимаете Enter. Через секунду начнется чтение. Смартфон можно заблокировать и убрать в карман — воспроизведение продолжится в фоновом режиме.
Чтобы остановить чтение, достаточно нажать Ctrl + C (в Termux для этого удобно использовать специальную панель над клавиатурой или клавишу громкости вниз + C).
Да, интерфейс здесь отсутствует как класс. Но в этом и есть инженерная элегантность: у вас в кармане мощнейший инструмент синтеза речи, который не просит денег, не показывает рекламу и не собирает телеметрию о том, что именно вы слушаете.
Единственный нюанс — зависимость от интернета. Поскольку расчеты нейросети происходят на серверах Microsoft, без сети команда выдаст ошибку. Но в городских условиях это редко становится проблемой.
Этот костыль из нескольких строк кода работает стабильнее многих приложений из стора, просто потому что здесь нечему ломаться. Вы используете прямой канал к API, минуя маркетинговые надстройки и ограничения.
Как сохранить озвучку в файл MP3
Слушать текст в реальном времени удобно, но для монтажа видео или прослушивания в офлайн-плеере нужен физический файл. По умолчанию Termux живет в своей «песочнице», и файлы из него не видны обычным приложениям Android. Чтобы выгрузить аудио в общую папку «Загрузки», нужно сделать два простых шага.
Сначала даем терминалу доступ к внутренней памяти смартфона. Введите команду:
termux-setup-storage
На экране появится стандартный системный запрос — подтвердите его. Теперь в домашней директории терминала появилась папка storage, которая ведет напрямую к вашим файлам.
Чтобы не вводить длинные пути каждый раз, создадим еще один алиас для сохранения. Скопируйте эту строку:
echo "alias save='edge-tts --voice ru-RU-DmitryNeural --text \"\$(termux-clipboard-get)\" --write-media ~/storage/downloads/voice.mp3'" >> ~/.bashrc && source ~/.bashrc
Теперь механика меняется: вы копируете текст, заходите в Termux и пишете save. Через несколько секунд в системной папке Downloads появится файл voice.mp3. Его подхватит любой плеер, монтажная программа или телеграм-бот.
Это классический пример того, как открытый софт дает бесплатно то, за что коммерческие сервисы просят «премиум-подписку с функцией экспорта». Здесь вы сами контролируете битрейт и место сохранения, не дожидаясь милости от разработчиков очередного облачного конвертера.
Экспериментируйте с автоматизацией, пока корпорации не спрятали все полезные API за двухфакторную авторизацию. С какими голосами или сервисами озвучки вы пробовали работать раньше и что в них бесило больше всего?
Источник: edge-tts на GitHub
🔔 Подписывайтесь, чтобы превращать свои устройства из потребительских игрушек в рабочие инструменты. Больше приемов цифровой независимости — на моем канале. 📰