Как заставить Raspberry Pi читать текст с помощью eSpeak.
Комментарииⓘ Cet article peut avoir été partiellement ou totalement traduit à l'aide d'outils automatiques. Nous nous excusons des erreurs que cela pourrait engendrer.
В вычислительной технике проблема пользовательского интерфейса, вероятно, одна из самых сложных. Это, именование вещей и аннулирование кеша …
Самый простой способ представить информацию человеку с компьютера — это обычно использовать зрение. Но для этого вам понадобится экран, который громоздкий, дорогой и поэтому не очень подходит для использования на борту.
В этом уроке мы увидим, как использовать слух пользователя, а не зрение, заставив Raspberry Pi произносить текст с помощью программного обеспечения eSpeak, которое называется преобразованием текста в речь.
Оборудование, которое заставит Raspberry Pi говорить
Чтобы заставить Raspberry Pi говорить, нам понадобится следующее оборудование:
Установите eSpeak на Raspberry Pi
Чтобы заставить Raspberry Pi говорить, мы будем использовать программное обеспечение eSpeak, программное обеспечение для преобразования текста в речь с открытым исходным кодом.
Принцип eSpeak заключается в следующем: вы даете ему некоторый текст (строку символов, файл и т. Д.), И он разбивает его на фонемы (самые маленькие звуки, составляющие разговорный язык), а затем используйте весь набор методы преобразования этих фонем в настоящие звуковые файлы.
Установить eSpeak на Raspberry Pi довольно просто, поскольку он уже присутствует в репозиториях. Итак, нам просто нужно обновить репозитории и попросить установить eSpeak:
sudo apt update sudo apt install espeak -y
Прочтите предложение с eSpeak
Теперь, когда eSpeak установлен, мы сможем заставить его прочитать первое предложение. Но перед этим мы убедимся, что звук выходит через порт Jack нашего Raspberry Pi и достигает наших динамиков.
Для этого запустите команду sudo raspi-config, затем перейдите в «Дополнительные параметры», «Аудио», «Усиление разъема 3,5 мм (« наушники ») и, наконец,« Готово ».
Создадим папку espeak
в каталоге пользователя загрузите аудиофайл и воспроизведите его, чтобы убедиться, что все работает правильно:
mkdir /home/pi/espeak cd /home/pi/espeak wget https://raspberry-pi.fr/download/espeak/test.mp3 -O test.mp3 ffplay -nodisp test.mp3
Вы должны услышать игру до мажор.
Теперь, когда мы знаем, что динамики работают, мы попросим eSpeak произнести фразу: «Малина сидит на стуле моего деда». Для этого мы используем команду ниже:
espeak -a 200 -v fr+f3 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
Что дает нам что-то вроде этого …
Давайте немного обойдем команду, чтобы попытаться понять:
espeak
запустить программу espeak-a 200
указывает громкость, используемую для звука. Диапазон значений от 0 до 200, по умолчанию — 100.-v fr+f3
говорит нам, какой язык использовать.fr
соответствует французскому языку,+f3
указывает на то, что мы хотим использовать третью вариацию женского голоса, предложенную eSpeak. Не забудьте адаптировать языковой код к вашему тексту.- Предложение в кавычках будет озвучено eSpeak. Вместо этого мы могли бы также попросить его случайно прочитать текстовый файл.
-f le_chemin/du/fichier.txt
. --stdout
сообщает eSpeak, что вместо прямого воспроизведения звука он должен отправлять сгенерированные данные на стандартный вывод терминала.| aplay
указывает, что вывод, сгенерированный eSpeak, будет перенаправлен на ввод программы aplay, которая является программой для воспроизведения аудиофайлов в формате Wave, генерируемых eSpeak. Обратите внимание, что вместо этого мы могли бы использовать> mon_fichier.wav
для сохранения аудиовыхода в файл.
Как видите, звук воспроизводит не eSpeak, а игра. Причина этого очень проста, в некоторых версиях на Raspberry Pi была ошибка espeak …
Если вы попытаетесь заставить eSpeak говорить напрямую, вы получите ошибки, связанные с Alsa, звуковым сервером Raspberry Pi. Поэтому самое простое решение — отправить данные в игру, которая сама по себе работает отлично. В конце концов, это работает, и это все, что имеет значение.
Улучшите голос eSpeak, установив MBROLA на Raspberry.
Как видите, голоса, генерируемые eSpeak, абсолютно грязные. Не паникуйте, у нас есть решение, как это исправить.
Я упомянул в начале статьи, что eSpeak может генерировать фонемы, эти звуковые фрагменты, составляющие разговорный язык. Оказывается, есть и другие программы, которые могут читать и произносить эти фонемы более убедительно, чем eSpeak!
В нашем случае мы будем использовать программное обеспечение MBROLA, всемирный совместный проект, инициированный Политехническим факультетом Монса, Бельгия, который направлен на создание огромной базы данных для синтеза речи.
Как ни странно, программное обеспечение MBROLA недоступно в репозиториях Raspbian, в то время как языковые данные есть. Следствием этого является невозможность установки этих языковых данных …
Не волнуйтесь, у нас есть решение! Действительно, добрая душа была достаточно любезна, чтобы создать пакет MBROLA для самой Raspberry Pi, и поэтому мы решили создать зеркало на сайте.
Итак, мы загрузим и установим этот пакет с помощью следующих команд:
cd ~/espeak wget https://raspberry-pi.fr/download/espeak/mbrola3.0.1h_armhf.deb -O mbrola.deb sudo dpkg -i mbrola.deb
И теперь, когда MBROLA установлена, мы сможем загружать нужные языковые файлы. Так что для меня это будет mbrola-fr1
, то есть первый французский голос. Адаптируйте команду к своему языку.
sudo apt install mbrola-fr1 -y
Все, что нам нужно сделать сейчас, это взять наш предыдущий заказ eSpeak и адаптировать его для генерации фонем и дать их прочитать MBROLA. Это даст нам команду ниже.
espeak -a 200 -v mb-fr1 -s 150 "Les framboises sont perchées sur le tabouret de mon grand-père." --stdout | aplay
Что дает нам звук ниже:
Вы найдете некоторые из тех же настроек, что и раньше, но с двумя изменениями:
-v mb-fr1
указывает, что мы хотим использовать MBROLA для создания аудиофайлаmb
, и французский голос номер 1-fr1
.-s 150
указывает ему, что мы хотим генерировать файл со скоростью 150 слов в минуту. По умолчанию — 165, но я считаю, что это немного быстро, по крайней мере, для французского.
Как и раньше, вы, конечно, можете изменить команду, чтобы создать файл, прочитать текст из текстового файла и т. Д.
Комбинируя эти команды с такими вещами, как считывание меток RFID и т.п., вы можете легко создавать автомобильные системы с относительно полными интерфейсами.
Конечно, мы все еще далеки от человеческого голоса и знаем, что существуют более совершенные механизмы преобразования текста в речь, такие как TTS от Mozilla, разработанные в рамках проекта Common Voice. Тем не менее, MBROLA и eSpeak предлагают хороший компромисс между простотой использования, скоростью выполнения и эффективностью.