Синтезатор речи для вашего Arduino

Синтезатор речи для вашего Arduino

Автор Instructables под ником Utsource рассказывает, как пользоваться библиотекой Talkie, позволяющей синтезировать речь при помощи Arduino. Это не тот синтезатор речи, которым вы, возможно, пользуетесь на своём смартфоне, планшете или ПК, и который может озвучить любой текст. Набор слов здесь фиксированный, но их больше тысячи (это в сумме, предусмотрены несколько подключаемых словарей). Данная библиотека реализует программно алгоритм синтеза, реализованный в своё время аппаратно в чипах фирмы TI.

Библиотека Talkie лежит здесь, также её можно скачать через менеджер библиотек, введя её название в строку поиска. Мастер показывает это на скриншоте:

Синтезатор речи для вашего Arduino

Для работы библиотеки не требуется расширение ОЗУ, ПЗУ, добавление каких-либо аппаратных синтезаторов. Синтез речи полностью программный, звуковой сигнал выводится при помощи ШИМ на выход 3. Туда можно просто подключить динамическую головку через резистор, а можно воспользоваться дополнительным усилителем. Во втором случае желателен ФНЧ между Arduino и усилителем, но мастер обходится без него. При мощном усилителе ФНЧ становится обязательным. Усилитель может быть выполнен на любой элементной базе, мастер выбирает микросхему LM386. Схему включения он берёт стандартную, понятно, что показанные на ней микрофон и нагрузочный резистор для него не понадобятся — источником сигнала будет Arduino.

Синтезатор речи для вашего Arduino

Эту схему он моделирует в программе Fritzing:

Синтезатор речи для вашего Arduino

И собирает на макетной плате типа breadboard:

Синтезатор речи для вашего Arduino

Чтобы проверить библиотеку в действии, мастер открывает в Arduino IDE редактор скетчей:

Синтезатор речи для вашего Arduino

И набирает такой код:

#include "Talkie.h" //Talkie.h is used to initialize this library and set the Digital pin 3 of Arduino as output pin

#include "Vocab_US_Large.h" //Vocab_US_Large.h is used to use the alerts

#include "Vocab_Special.h" //Vocab_Special.h is used to use the pause

Talkie voice; //define an object ‘value’ to use the commands

void setup() {
}
void loop() {
voice.say(spPAUSE2);
voice.say(sp2_DANGER);
voice.say(sp2_DANGER);
voice.say(sp3_STORM);
voice.say(sp3_IN);
voice.say(sp3_THE);
voice.say(sp3_NORTH);
/*The first command voice.say(spPAUSE2) is to take a short pause while repeating the alert message. And the next commands are just simple words that imply: DANGER DANGER STORM IN THE NORTH.*/
}

Программа подключает ранее установленную библиотеку Talkie и два словаря, один из которых нужен для получения паузы между словами. Никаких знаков препинания этот синтезатор речи не понимает, как и сокращений вроде ЗПТ и ТЧК. При запуске программы он произнесёт монотонно фразу «опасность опасность буря с северной стороны».

Библиотека подойдёт ардуинщикам, не желающим приобретать довольно дорогие дисплеи. Заняв динамической головкой, без усилителя или с таковым, всего одну «ногу», можно реализовать вывод в виде речи довольно длинных фраз, а если занять ещё несколько «ног» кнопками — то и меню, в т.ч. многоуровневые.

Источник

barlialesmi

Наверх