Аудио трансляция текста в речь с Raspberry Pi

  1. Обзор проекта
  2. Raspberry Pi Audio Setup
  3. Шаг 0: Установка программного обеспечения и загрузка драйверов
  4. Шаг 1. Подключение и обнаружение аудио оборудования
  5. Шаг 2. Включите аудиоустройство USB в ALSA
  6. Шаг 3: Тестирование аудио конфигурации
  7. Шаг 4: Выбор аудио выхода
  8. Шаг 5: Тестирование аудио
  9. Ресурсы проекта (Инструменты и SDK)
  10. Настройка аппаратного и программного обеспечения
  11. Настройка программного обеспечения
  12. Приложение звукового вещания
  13. Тестирование аудио трансляции
  14. Код прохождение
  15. Отправка запросов на трансляцию
  16. Воспроизведение аудио
  17. Завершение

В этом уроке мы продемонстрируем, как использовать мультимедийные возможности Raspberry Pi для размещения службы трансляции аудио в формате text-to-voice. Например, наша демонстрационная версия может быть установлена ​​в качестве системы оповещения или даже в качестве сопроводительного устройства звукового оповещения с цифровым табло.

Обзор проекта

Служба аудиовещания Raspberry Pi работает как одноранговое приложение на основе потоков данных PubNub , С одной стороны, у нас есть запрашивающий узел, который отправляет запрос на аудио трансляцию. А с другой стороны, на Raspberry Pi работает приложение вещателя. Запрашивающая сторона отправляет текстовое предложение внутри полезной нагрузки PubNub, а вещатель преобразует его в речь и отправляет его на аудиовыход Raspberry Pi.

Raspberry Pi Audio Setup

Нам нужно сначала настроить аудио драйвер для Raspberry Pi. Для этого приложения мы используем стандартную звуковую карту USB, которая подключается к одному из портов USB Raspberry Pi. Мы будем использовать стандартную настольную речь от Lenovo, но вы можете использовать любую голосовую систему, какую захотите.

Мы будем использовать стандартную настольную речь от Lenovo, но вы можете использовать любую голосовую систему, какую захотите

На следующем шаге мы настроим звуковое устройство на Raspberry Pi и направим вывод звука на звуковую карту USB.

Шаг 0: Установка программного обеспечения и загрузка драйверов

Raspbian OS следует за Advanced Sound Sound Architecture (ALSA) для управления аудиоустройствами. Нам нужно установить несколько пакетов, чтобы протестировать звуковое устройство через ALSA. Используя утилиту apt-get, установите следующие пакеты (для установки этих пакетов вам потребуются права администратора)

apt-get install alsa-utils apt-get install mpg321 apt-get install lame

Загрузите звуковой драйвер следующим образом:

modprobe snd-bcm2835

Шаг 1. Подключение и обнаружение аудио оборудования

Убедитесь, что Raspberry Pi выключен. Подключите звуковую карту USB к одному из USB-портов Pi и включите Pi. После загрузки ОС Raspbian убедитесь, что аудиооборудование обнаружено. Чтобы проверить это, войдите в терминал (через приложение SSH или LXTerminal) и введите команду 'lsusb'.

Чтобы проверить это, войдите в терминал (через приложение SSH или LXTerminal) и введите команду 'lsusb'

Как видите, последнее устройство в списке портов USB - это звуковая звуковая карта.

Шаг 2. Включите аудиоустройство USB в ALSA

По умолчанию звуковой драйвер Raspberry Pi настроен на использование встроенного аудиоустройства PCM. Поскольку мы используем внешнюю звуковую карту USB, нам необходимо выполнить настройку конфигурации, чтобы ALSA узнала о нашей внешней звуковой карте USB.

Файл конфигурации находится по пути:

/etc/modprobe.d/alsa-base.conf

Откройте этот файл и измените значение индекса snd-usb-audio на 0.

Сохраните файл и перезагрузите Raspberry Pi, чтобы новые настройки вступили в силу.

Шаг 3: Тестирование аудио конфигурации

После перезапуска Raspberry Pi, запустите следующую команду из терминала, чтобы увидеть текущую конфигурацию аудио:

$ amixer $ amixer

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

Шаг 4: Выбор аудио выхода

Далее нам нужно выбрать аудиовыход для использования Raspberry Pi. Откройте инструмент настройки raspi-config из командной строки и выполните следующую процедуру:

Выберите последовательность меню «Дополнительные параметры»> «Аудио» и выберите «Авто»

После выбора режима «Авто» нажмите клавишу со стрелкой вправо, чтобы выбрать кнопку <Ok> и выйдите из списка параметров, затем выберите «Готово», чтобы выйти из инструмента настройки.

Это позволит Raspberry Pi автоматически определять вывод звука и использовать аудио-разъем HDMI или USB в зависимости от того, какой из них подключен.

Шаг 5: Тестирование аудио

С настройкой звукового устройства пришло время протестировать приложение. Подключите динамики к разъему динамика на звуковой карте и воспроизведите один из тестовых звуковых файлов, предоставляемых Raspbian OS.

aplay /usr/share/scratch/Media/Sounds/Vocals/Singer1.wav aplay /usr/share/scratch/Media/Sounds/Vocals/Singer1

Если бы все прошло хорошо, вы бы услышали быстрый клип голоса оперного певца. Если громкость звука слишком высокая или низкая, ее можно отрегулировать с помощью утилиты «alsamixer».

Если громкость звука слишком высокая или низкая, ее можно отрегулировать с помощью утилиты «alsamixer»

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

1. Используйте утилиту для тестирования динамика, чтобы воспроизвести синусоидальный сигнал через выход USB

Акустический тест -t sine -f 440 -c 2 -s 1 Акустический тест -t sine -f 440 -c 2 -s 1

2. Кроме того, вы также можете запустить утилиту mpg321 для проверки и воспроизведения mp3-файла.

Ресурсы проекта (Инструменты и SDK)

Мы собираемся использовать следующие инструменты и SDK для этого приложения:

Настройка аппаратного и программного обеспечения

Установка оборудования и драйверов

Настройте Raspberry Pi с помощью WiFi-ключа и звуковой карты USB и подключите динамики к звуковой карте. Затем настройте звуковой драйвер и настройку звука, как указано выше. Убедитесь, что вы слышите сэмпл из динамика.

Настройка программного обеспечения

Программное обеспечение для преобразования текста в речь

Чтобы преобразовать текст в речь, установите утилиту «ESpeak».

apt-get установить espeak

Чтобы проверить espeak, вызовите команду espeak с некоторым текстом.

espeak "Hello World"

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

Приложение звукового вещания

Во-первых, проверьте репозиторий проекта GitHub для полного кода , Приложение состоит из двух сценариев Python, Requester.py и Broadcaster.py. Requester.py может работать на любом ПК или компьютере, если на нем установлен Python 2.7 с SDK PubNub Python. Broadcaster.py работает на Pi, под Raspbian OS.

Чтобы протестировать это приложение, у нас есть пример сообщения, сохраненного в виде текстового файла с именем message.txt (также в GitHub). Слова сообщения, содержащиеся в этом файле, - это те слова, которые в конечном итоге воспроизводятся вещателем Пи.

Тестирование аудио трансляции

Теперь давайте проверим наше приложение! Запустите скрипт вещателя на терминальной консоли Пи:

python Broadcaster.py

Запустите скрипт-запросчик на вашем ПК. Перед этим убедитесь, что выполнены предварительные условия для Python и PubNub Python SDK, а файл message.txt находится по тому же пути, что и Requester.py.

python Requester.py

Вот как будет воспроизводиться звуковая речь с аудиовыхода USB Pi.

Хотя аудио речевой вывод, сгенерированный из espeak, довольно «роботизирован», мы можем получить лучшую производительность и более естественное ощущение, попробовав одну из коммерческих программ синтеза текста в речь.

Код прохождение

Настройка PubNub

Оба скрипта Python используют PubNub Pub / Sub Messaging для обмена информацией. В этом приложении мы использовали два канала PubNub, один для отправки запроса на широковещание, а второй для получения ответа и указания для завершения широковещания.

Отправка запросов на трансляцию

Что касается запрашивающей стороны, то содержимое файла message.txt разбивается на предложения, чтобы обеспечить равномерный интервал между речевым выводом при трансляции сообщения. Каждое предложение отправляется как запрос широковещания, а в конце отправляется сигнал завершения, указывающий конец широковещания.

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

Воспроизведение аудио

В конце вещателя все действия происходят внутри обратного вызова. После получения запроса широковещания от запрашивающей стороны вещатель вызывает утилиту espeak TTS.

Когда espeak завершает трансляцию текстового предложения, скрипт вещателя отправляет сообщение с положительным подтверждением обратно запрашивающей стороне. В случае ошибки отправляется отрицательное подтверждение.

Завершение

Если вы хотите попробовать приложение самостоятельно, разветвите репозиторий GitHub и получите файлы прикладных программ и сценарий широковещательного сообщения, настройте аппаратное и программное обеспечение, и все готово. Чтобы добавить веселья в эксперимент, вы можете изменить сценарий трансляции или создать собственное сообщение и слушать его во время трансляции.

Вот и все для этого урока! Тем не менее, будучи огромными поклонниками Raspberry Pi, у нас есть десятки великолепных учебных пособий для Raspberry Pi, включая умный дом, управление движением, подключенную машину и многое другое. Проверь их!