Преобразователь текста в речь на Arduino Uno

Система преобразования текста в речь (Text-to-speech system – TTS) преобразует обычный текст в человеческую речь. В настоящее время подобные системы находят широкое применение – в общественном транспорте, голосовых помощниках, смартфонах, навигационных меню автомобилей и т.д. Подобная система есть даже в известном редакторе Microsoft Word – в нем вы можете прослушать написанный текст.

В данной статье мы рассмотрим создание преобразователя текста в речь на основе платы Arduino Uno.

Внешний вид преобразователя текста в речь на основе платы Arduino Uno

Общие принципы создания системы преобразования текста в речь

Первым шагом в создании системы преобразования текста в речь является предварительная обработка, или нормализация. На этом шаге осуществляется преобразование символов, чисел и аббревиатур в слова, которые понимает машина (микроконтроллер). Например, в результате данной операции символ ‘?’ преобразуется в последовательность слов “question mark”.

На втором шаге в подобных системах осуществляется преобразование нормализованного текста в фонемные или фонетические интерпретации (представления). Фонемы представляют собой маленькие части разговорных слов, то есть это звуки, которые формируют предложения. Этот шаг достаточно важен – он нужен для того чтобы машина могла говорить слова так же, как и человек.

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

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Громкоговоритель.
  3. Усилитель (можно использовать схему, приведенную в данной статье).
  4. Стабилизированный источник питания.
  5. Соединительные провода.

Схема проекта

В нашем проекте преобразования текста в речь на основе платы Arduino Uno мы использовали схему усилителя (чтобы получить чистый звук и снизить уровень шумов), приведенную на следующем рисунке. Усилитель построен на основе микросхемы LM386. Потенциометр 100 кОм в схеме усилителя служит для настройки качества звука.

Схема усилителя а основе микросхемы LM386

Но вы можете использовать любой свой похожий усилитель (если он у вас имеется).

Схема преобразователя текста в речь на основе платы Arduino Uno представлена на следующем рисунке.

Схема преобразователя текста в речь на основе платы Arduino Uno

В представленной схеме необходимо подать питающее напряжение на схему усилителя, а цифровой контакт 3 платы Arduino подключить к резистору 10 кОм. Землю Arduino необходимо подключить к общей земле схемы. Отрицательный контакт громкоговорителя подключается к земле (общему проводу) схемы, а его положительный контакт – к конденсатору 220 мкФ.

Внешний вид собранной конструкции проекта показан на следующем рисунке.

Внешний вид собранной конструкции проекта

Объяснение программы для Arduino

Полный текст программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Программа для нашего преобразователя текста в речь на основе Arduino будет достаточно простой поскольку мы будем использовать специальную библиотеку для этих целей. Эта библиотека называется Talkie и ее можно добавить в менеджер библиотек Arduino IDE. Чтобы сделать это, откройте пункт меню Sketch->Include Library->Manage Libraries.

Открытие менеджера библиотек в Arduino IDE

После выполнения этой команды у вас откроется менеджер библиотек. Введите в его строке поиска Talkie и потом нажмите кнопку установки библиотеки.

Поиск и установка библиотеки Talkie

Библиотека Talkie очень удобна для решения нашей задачи. Она содержит более 1000 слов и команд, а также несколько примеров, демонстрирующих ее работу.

Вы можете попробовать некоторые из команд, присутствующих в этой библиотеке. Для этого откройте Documents\Arduino\libraries\Talkie\src, после этого откройте заголовочные файлы, из которых вы можете взять необходимые вам команды предупреждений/уведомлений. Существуют и другие библиотеки для преобразования текста в речь: jscrane TTS library, google TTS library и т.д. Вы также можете попробовать и их если у вас возникнет такое желание.

Первым делом в программе подключим заголовочные файлы библиотек. Talkie.h используется для инициализации библиотеки и установки режима работы на вывод данных для цифрового контакта 3 платы Arduino. Vocab_US_Large.h используется для работы с используемыми нами предупреждениями/уведомлениями (alerts), а Vocab_Special.h используется для работы с используемыми нами паузами.

Затем определим объект ‘voice’ для использования команд работы со звуком.

Далее в функции void loop() первой командой будет voice.say(spPAUSE2) – с ее помощью реализуется небольшая пауза между звуковыми сообщениями. Следующие команды позволяют произвести с помощью громкоговорителя следующую последовательность слов: DANGER DANGER STORM IN THE NORTH.

После того как вы соберете схему, загрузите программу в плату Arduino и подадите питание на схему вы услышите передаваемую нами в программе фразу (предупреждение). Если качество звука не очень хорошее, отрегулируйте его с помощью потенциометра в схеме усилителя. Также убедитесь в том, что на плату Arduino подается питание, а ее земля подключена к общей земле схемы.

Исходный код программы (скетча)

Видео, демонстрирующее работу проекта

(Проголосуй первым!)
Загрузка...
166 просмотров


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *