Faire parler la Raspberry

Как заставить Raspberry Pi читать текст с помощью eSpeak.

Обновлено 5 ноября 2019 - 0 Комментарии - , , ,

ⓘ Эта статья могла быть частично или полностью переведена с помощью автоматических средств. Приносим извинения за возможные ошибки.

В вычислительной технике проблема пользовательского интерфейса, вероятно, одна из самых сложных. Это, именование вещей и аннулирование кеша …

Самый простой способ представить информацию человеку с компьютера — это обычно использовать зрение. Но для этого вам понадобится экран, который громоздкий, дорогой и поэтому не очень подходит для использования на борту.

В этом уроке мы увидим, как использовать слух пользователя, а не зрение, заставив 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 предлагают хороший компромисс между простотой использования, скоростью выполнения и эффективностью.

доля
Новостная рассылка
Автор:
Raspberry Pi FR
Присоединяйтесь к сообществу Raspberry Pi
Компьютер за 35 долларов уже продано 10 миллионов копий
КУПИТЬ НОВУЮ RASPBERRY PI 4
Связанные руководства
Создайте SD-карту в Windows, Mac или Linux с помощью Raspberry Pi Imager. Создайте SIN с помощью малины Пи и самбы. Как управлять серводвигателем с Raspberry Pi Установите Shadow на Odroid, как сделать игровой ПК с (почти) Raspberry Pi! Цена Raspberry Pi 4 версии 2 ГБ ОЗУ упала до 35 долларов!
Комментариев нет
доля
Подписаться на новости
Подпишитесь на рассылку новостей.
Тебе понравилась эта статья ?
Подпишитесь и будьте в курсе!