Делаем управление светодиодом голосом с помощью arduino

Продажи и HR

Программный оператор

Робот для приема и обработки телефонных и интернет-заказов

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

В системе используются нейросети и машинное обучение, модуль синтеза речи. Блок распознавания речи построен на базе облачного сервиса 3i Speech Recognition, разработанного Консорциумом 3i Technologies.

SmartCalls

Сервис автообзвона с искусственным интеллектом

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

В компании заверяют, что звонок такого робота не отличается от звонка оператора колл-центра, при этом в три раза дешевле.

Sever.AI

Сервис подбора кандидатов на базе искусственного интеллекта

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

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

Исходный код

guessTheCard.ino
#include <Servo.h>
#include <EasyVR.h>
 
 
EasyVR easyvr(Serial);
Servo* srv;
 
// Номер пина для светодиода, индицирующего ожидание команды
const int LED_WAIT = 13;
 
// Номер группы команд
enum
{
    GROUP_MAIN = 1,
};
 
// Коды команд из группы 1
enum
{
    G1_SHIRT = ,
    G1_PEAR = 1,
    G1_ORANGE = 2,
};
 
// Соответствие команд индексам в массиве серв srv
enum
{
    // Если значение элемента перечисления не задано, то оно принимается
    // равным <значение предыдущего элемента>+1. Если элемент первый, то ему
    // присваивается значение 0.
    SRV_SHIRT,
    SRV_PEAR,
    SRV_ORANGE,
    // Эту константу держите всегда последней и не меняйте её значение:
    SRV_COUNT
};
 
// Соостветствие серв пинам
enum
{
    SRV_SHIRT_PIN  = 3,
    SRV_PEAR_PIN   = 5,
    SRV_ORANGE_PIN = 6
};
 
 
void setup(void)
{
    Serial.begin(9600);
 
    // Переводим на запись порт для индикации
    // активности микрофона
    pinMode(LED_WAIT, OUTPUT);
    digitalWrite(LED_WAIT, LOW);
 
    // Ожидание соединения с платой
    while(!easyvr.detect()) delay(1000);
 
    // Установка таймаута на распознавание
    easyvr.setTimeout(5);
 
    // Выбор языка (Английский)
    easyvr.setLanguage(EasyVR::ENGLISH);
 
    // Конфигурируем сервы
    srv = new ServoSRV_COUNT;
 
    srv  SRV_SHIRT .attach(  SRV_SHIRT_PIN );
    srv SRV_ORANGE .attach( SRV_ORANGE_PIN );
    srv   SRV_PEAR .attach(   SRV_PEAR_PIN );
 
    // По очереди протестируем все сервы
    srvSRV_SHIRT.write(90);
    delay(1000);
    srvSRV_SHIRT.write();
 
    delay(1000);
 
    srvSRV_ORANGE.write(90);
    delay(1000);
    srvSRV_ORANGE.write();
 
    delay(1000);
 
    srvSRV_PEAR.write(90);
    delay(1000);
    srvSRV_PEAR.write();
}
 
 
// Данная функция вызывается в случае успешного
// распознавания фразы
void action(int8_t group, int8_t idx)
{
    // Активируем серву, соответствующую распознанному коду
    switch (group)
    {
    case GROUP_MAIN
        switch (idx)
        {
        case G1_SHIRT
            srvSRV_SHIRT.write(90);
            delay(1000);
            srvSRV_SHIRT.write();
            break;
        case G1_PEAR
            srvSRV_PEAR.write(90);
            delay(1000);
            srvSRV_PEAR.write();
            break;
        case G1_ORANGE
            srvSRV_ORANGE.write(90);
            delay(1000);
            srvSRV_ORANGE.write();
            break;
        }
        break;
    }
}
 
 
void loop(void)
{
    int8_t idx;
 
    // Зажигаем светодиод для индикации режима ожидания команды
    digitalWrite(LED_WAIT, HIGH);
 
    // Запускаем процедуру распознавания
    easyvr.recognizeCommand(GROUP_MAIN);
 
    // Ожидаем окончание процесса
    while(!easyvr.hasFinished());
 
    // Тушим светодиод - либо таймаут, либо команда распознана
    digitalWrite(LED_WAIT, LOW);
 
    // Если убрать эту задержку, то мы перестанем видеть, когда заканчивается
    // один период ожидания команды и начинается второй. Если произнесение команды
    // придётся на границу двух периодов, то распознавание закончится неудачей.
    delay(500);
 
    // Получаем код распознанной команды
    idx = easyvr.getCommand();
 
    if(idx >= )
    {
        // Выполним действие по команде
        action(GROUP_MAIN, idx);
    }
    else
    {
        // Ошибка распознавания или таймаут
    }
}

Как работает такой умный дом?

Чтобы создать умный дом своими руками, потребуется навык Домовёнок Кузя. Через него можно не только контролировать умный дом, но и интегрировать виртуальные устройства напрямую в Яндекс.Алису. Это значит, что вам не придётся постоянно открывать навык, чтобы просто выключить лампочку. С микроконтроллером навык будет связываться через веб-хуки.

Для веб-хуков отлично подходит платформа Blynk — панель управления устройствами на Arduino и Raspberry Pi. Там вы сможете без труда создать графический интерфейс, через который можно будет управлять устройством по Wi-Fi (а ещё по Ethernet, USB, GSM и Bluetooth).

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

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

Сначала в программе необходимо определить контакты Arduino, на которых мы будем использовать последовательную связь (Rx и Tx).

Arduino

int TxD = 11;
int RxD = 10;

1
2

intTxD=11;

intRxD=10;

Затем установим 2-й и 3-й контакты платы Arduino (к ним подключены светодиоды) в режим вывода данных.

Arduino

pinMode(2, OUTPUT);
pinMode(3, OUTPUT);

1
2

pinMode(2,OUTPUT);

pinMode(3,OUTPUT);

Далее, в функции loop плата Arduino будет непрерывно проверять поступление данных от Bluetooth модуля (который, в свою очередь управляется с помощью голосовых команд) и в соответствии с ними управлять включением/выключением светодиодов. Все принимаемые команды мы будем сохранять в переменной “Value”.

Если значение этой переменной равно «all LED turn on», то мы будем включать оба светодиода. Аналогично этому при поступлении других голосовых команд мы будем соответствующим образом включать и выключать светодиоды в нашей схеме. Более подробно все эти процессы показаны на видео, приведенном в конце статьи.

Arduino

if (bluetooth.available())
{
value = bluetooth.readString();

if (value == «all LED turn on»){
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}

if (value == «all LED turn off»){
digitalWrite(2, LOW);
digitalWrite(3, LOW);
}

if (value == «turn on Red LED»){
digitalWrite(2, HIGH);
}

if (value == «turn on green LED»){
digitalWrite(3, HIGH);
}

if (value == «turn off red LED»){
digitalWrite(2, LOW);
}

if (value == «turn off green LED»){
digitalWrite(3, LOW);
}
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

if(bluetooth.available())

{

value=bluetooth.readString();

if(value==»all LED turn on»){

digitalWrite(2,HIGH);

digitalWrite(3,HIGH);

}

if(value==»all LED turn off»){

digitalWrite(2,LOW);

digitalWrite(3,LOW);

}

if(value==»turn on Red LED»){

digitalWrite(2,HIGH);

}

if(value==»turn on green LED»){

digitalWrite(3,HIGH);

}

if(value==»turn off red LED»){

digitalWrite(2,LOW);

}

if(value==»turn off green LED»){

digitalWrite(3,LOW);

}

}

Подключаемся методом webhooks к Умному дому Яндекса

Кузя

  1. Выбираем кнопку «Добавить правило GET».
  2. Заполняем «по вкусу». Можно похулиганить и дать устройству имя «Розетка Яндекс».
  3. Не забываем в поле «URL управления устройством, доступный из интернета» вставить ссылку на наш вебхук.
  4. Создаём ВТОРОЕ правило GET — одно на включение устройства, второе — на его выключение.
  5. Выбираем кнопку «Виртуальные устройства умного дома» и создаем новое устройство (у меня лучше всего работают «лампы»).
  6. Указываем ранее созданные «Правило на включение» и «Правило на выключение».
  7. Задаем имя устройства и комнату, в которой оно находится.

Приложение «Яндекс»

В приложении «Яндекс» (раздел «Устройства») находим навык «Домовенок Кузя». При первом запуске навык попросит авторизоваться. После авторизации нажимаем единственную кнопку «Обновить список устройств». Готово! После загрузки мы увидим наше устройство в списке.

Осталось сказать «Алиса, включи Розетку Яндекс» и услышать радостное пощелкивание реле.

Разновидности и характеристики

Блоками можно управлять по отдельности или с одного устройства

Для создания умного дома своими руками можно выбрать схему, на которую хватит денег или мастерства.

Разновидности подключения бытовых приборов и техники:

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

Классификация систем распознавания речи[править]

Системы распознавания речи классифицируются:

  • по размеру словаря (ограниченный набор слов, словарь большого размера);
  • по зависимости от диктора (дикторозависимые и дикторонезависимые системы);
  • по типу речи (слитная или раздельная речь);
  • по назначению (системы диктовки, командные системы);
  • по используемому алгоритму (нейронные сети, скрытые Марковские модели, динамическое программирование);
  • по типу структурной единицы (фразы, слова, фонемы, дифоны, аллофоны);
  • по принципу выделения структурных единиц (распознавание по шаблону, выделение лексических элементов).

Инструкция по настройке голосового управления с помощью Arduino

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

Инструменты и материалы

Для сборки системы управления голосом необходимо следующее:

  • сама плата микроконтроллера Arduino UNO;
  • мини – схема HC-05, на которой разведен модуль связи bluetooth для ардуино;
  • три резистора на 300-350 Ом;
  • светодиоды разных цветов – 3 шт.;
  • смартфон.

Порядок подключения комплектующих

Вначале необходимо подключить модульную плату, обеспечивающую связь по bluetooth, к ардуино. Контакт RXD от HC-05 присоединяем к клемме TXD контроллера, аналогичную модуля, с RXD Arduino. То есть, производим перекрестное подключение разъемов. Питание +3.3В и GND на сборке bluetooth подводится к аналогичным на плате контроллера.
Схема подключения HC-05 к Arduino UNO

Далее, подключаем исполнительный блок, управление голосом которым и будет осуществляться через ардуино. Общий контакт «земли» (GND) диодов соединяем с таким же на центральной плате. Потом каждый из светодиодов, второй ножкой, через резистор на 330 Ом с выходными цифровыми каналами контроллера (2-4).
Присоединение светодиодов

Настройка параметров

Следующий скетч, основу контролирующей системы, необходимо загрузить в сам микроконтроллер:

#INCLUDE ‘SoftwareSerial.h’ //возможно понадобится заменить одинарные кавычки ‘ на «<» и «>»

SOFTWARESERIAL BLU ( 0, 1 );

STRING VOICELONG;

INT GLED = 2; //Присоединен к контакту #2

INT YLED = 3; //Присоединен к контакту #3

INT RLED = 4; //Присоединен к контакту #4

VOID ALLON ( )

{

DIGITALWRITE ( RLED, HIGH );

DIGITALWRITE ( YLED, HIGH );

DIGITALWRITE ( GLED, HIGH );

}

VOID ALLOFF ( )

{

DIGITALWRITE ( RLED, LOW );

DIGITALWRITE ( YLED, LOW );

DIGITALWRITE ( GLED, LOW );

}

VOID SETUP ( )

{

SERIAL.BEGIN ( 9600 );

BLU.BEGIN ( 9600 );

PINMODE ( RLED, OUTPUT );

PINMODE ( YLED, OUTPUT );

PINMODE ( GLED, OUTPUT );

}

VOID LOOP ( )

{

WHILE ( SERIAL.AVAILABLE ( ) ) //Цикл чтения сигналов с bluetooth

{

DELAY ( 10 ); //Период ожидания чтения

CHAR A = SERIAL.READ ( ); //Читать из порта символ

IF ( A == ‘#’ )

{

BREAK; //Выйти из цикла, если обнаружено «#»

}

VOICELONG += A;

}

IF ( VOICELONG.LENGTH ( ) > 0 )

{

IF ( VOICE == «*POWER ON ALL LED» )

{

ALLON ( );

}

ELSE IF ( VOICE == «*POWER OFF ALL LED» )

{

ALLOFF ( );

}

ELSE IF ( VOICE == «*POWER ON RED» )

{

DIGITALWRITE ( RLED, HIGH );

}

ELSE IF ( VOICE == «*POWER ON YELLOW»)

{

DIGITALWRITE ( YLED, HIGH );

}

ELSE IF ( VOICE == «*POWER ON GREEN» )

{

DIGITALWRITE ( GLED, HIGH );

}

ELSE IF ( VOICE == «*POWER OFF RED» )

{

DIGITALWRITE ( RLED, LOW );

}

ELSE IF ( VOICE == «*POWER OFF YELLOW»)

{

DIGITALWRITE ( YLED, LOW );

}

ELSE IF ( VOICE == «*POWER OFF GREEN»)

{

DIGITALWRITE ( GLED, LOW );

}

VOICELONG=»»; //Сбросить переменную

          }

}Сама диалоговая часть с пользователем – приложение на смартфоне. Его можно найти в гугл-маркет по «BT VOICE CONTROL для ARDUINO» (BT VOICE CONTROL FOR ARDUINO) от SIMPLELABSIN.

Коммуникация сделанной схемы и смартфона производится при поданном на нее питании и выборе в меню программы BT Voice Control (верхний правый угол) «подключить робота». Откроется окно со списком коммуникационного оборудования – в нем нужно найти и выбрать HC-05.

Вот и все. Можно работать. Команды используются те, которые прописаны в коде скетча. К примеру, сказанное голосом «POWER ON GREEN» – включит зеленый светодиод.

История

Первое устройство для распознавания речи появилось в 1952 году, оно могло распознавать произнесённые человеком цифры. В 1962 году на ярмарке компьютерных технологий в Нью-Йорке было представлено устройство IBM Shoebox.

В 1963 году в США были презентованы разработанные инженерами корпорации «Сперри» миниатюрные распознающие устройства с волоконно-оптическим запоминающим устройством под названием «Септрон» (Sceptron, но произносится без «к»), выполняющие ту или иную последовательность действий на произнесённые человеком-оператором определённые фразы. «Септроны» годились для применения в сфере фиксированной (проводной) связи для автоматизации набора номеров голосом и автоматической записи надиктовываемого текста телетайпом, могли применяться в военной сфере (для голосового управления сложными образцами военной техники), авиации (для создания «умной авионики», реагирующей на команды пилота и членов экипажа), автоматизированных системах управления и др. В 1983 году был презентован интерактивный комплекс «умной авионики» для ударных вертолётов «Апач», распознающий команды и запросы пилота, преобразующий их в сигналы управления на бортовое оборудование и односложно отвечающий ему голосом относительно возможности реализации поставленной им задачи.

Коммерческие программы по распознаванию речи появились в начале девяностых годов. Обычно их используют люди, которые из-за травмы руки не в состоянии набирать большое количество текста. Эти программы (например, Dragon NaturallySpeaking (англ.)русск., VoiceNavigator (англ.)русск.) переводят голос пользователя в текст, таким образом, разгружая его руки. Надёжность перевода у таких программ не очень высока, но с годами она постепенно улучшается.

Увеличение вычислительных мощностей мобильных устройств позволило и для них создать программы с функцией распознавания речи. Среди таких программ стоит отметить приложение Microsoft Voice Command, которое позволяет работать со многими приложениями при помощи голоса. Например, можно включить воспроизведение музыки в плеере или создать новый документ.

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

Следующим шагом технологий распознавания речи можно считать развитие так называемых интерфейсов безмолвного доступа (silent speech interfaces, SSI). Эти системы обработки речи базируются на получении и обработке речевых сигналов на ранней стадии артикулирования. Данный этап развития распознавания речи вызван двумя существенными недостатками современных систем распознавания: чрезмерная чувствительность к шумам, а также необходимость четкой и ясной речи при обращении к системе распознавания. Подход, основанный на SSI, заключается в том, чтобы использовать новые сенсоры, не подверженные влиянию шумов в качестве дополнения к обработанным акустическим сигналам.

Оценка поведения

Формула успешного собеседования

Сервис индивидуальной подготовки к переговорам на основе ИИ

Сервис анализирует записанный кандидатом видеофайл с самопрезентацией, в котором человек рассказывает то, что планирует говорить во время собеседования. Нейронная сеть обрабатывает файл и дает оценку на основе опроса более 500 HR-специалистов из различных отраслей бизнеса. Разработчики утверждают, что нейросеть уже натренировалась на более 1000 видеофайлах с самопрезентациями и научилась рассчитывать процент вероятности прохождения собеседования.

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

RiskControl

Платформа оценки человеческих рисков

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

В программном комплексе используется Voice Lie Control — интеллектуальная система ведения опроса с контролем информативных признаков стресса и лжи на основе анализа параметров речи. Результат формируется сразу после завершения тестирования. Интерпретатор системы определяет уровень личностных рисков и реальных угроз на момент прохождения проверки, а также правдивость испытуемого при ответах на вопросы. 

Хотите рассказать о других московских системах распознавания и синтезирования речи или сервисах, в которых они применяются? Напишите нам!

На сайте ICT.Moscow формируется база цифровых решений, созданных разработчиками из Москвы. Московские компании и стартапы могут бесплатно размещать информацию о своих разработках.

Универсальные решения

Yandex SpeechKit

Сервис распознавания и синтеза речи

Сервис работает с аудио и текстами на четырех языках: русском, английском, украинском и турецком. Yandex SpeechKit складывает речь более чем из миллиона отдельных фонем, а интонация задается нейросетью, обученной на множестве примеров из реальной жизни. Для обмена данными с сервисом предусмотрен HTTP API.

Инфраструктура сервиса спроектирована с учетом высоких нагрузок, чтобы обеспечивать доступность и безотказную работу системы даже при большом количестве одновременных обращений. На основе SpeechKit работает Алиса — голосовой помощник Яндекса.

VoiceNavigator

IVR-система c голосовым управлением (ЦРТ)

Решение от ЦРТ автоматизирует предоставление услуг и справочной информации, увеличивает производительность контакт-центров и сокращает время перевода вызова на целевого оператора.

Применяется многими компаниями и организацями, включая РЖД, «МегаФон», МТС, МЧС России и др.

Платформа MIR

Платформа распознавания речи

В продукте применяются разработки «Ситроникс» в области преобразования речевого сигнала в цифровую информацию и технология понимания естественного языка, которая позволяет выделять смысловые объекты, анализировать эмоциональное состояние говорящего

Платформа распознавания речи MIR представлена в нескольких вариантах: облачный сервис и On-premise решение для установки на серверах экосистемы заказчика. Точность распознавания общей модели составляет 84%.

VoiceFabric

Сервис для озвучивания синтезированным голосом текстовой информации (ЦРТ)

Еще один сервис от ЦРТ. Он позволяет отказаться от услуг диктора и предзаписи звуковых роликов в IVR-меню, написанный текст преобразуется в звукозапись и озвучивается клиенту в телефонном разговоре. Используя синтезированные голоса, можно озвучивать книги, видеоролики, записывать голосовые открытки без потери «естественной» интонации. Voicefabric гарантирует грамотную расстановку ударений, правильное чтение сокращений, чисел, аббревиатур. Доступно 8 голосов (женских и мужских), которые умеют говорить на трех языках (русский, английский, казахский).

VOCO

Приложение для преобразования речи в текст (ЦРТ)

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

Распознавание осуществляется локально на компьютере пользователя. Voco.Professional и Voco.Enterprise позволяют осуществлять распознавание речи из аудиозаписей. Конвертация осуществляется в специальном плагине для редактора MS Word с отображением аудиозаписи в плеере и связью звука с распознанным текстом.

Умный Дом от Apple, Google и Amazon

Переломным моментом в развитии систем умного дома стал выход платформы HomeKit от Apple в 2014 году. Идея Хоумкит очень проста – предоставить пользователю единый центр управления устройствами умного дома от разных производителей. Вместо нескольких сторонних приложений на своём iPhone теперь вам нужно только одно приложение от Apple – Дом (Home).

Приложение Дом от Apple с добавленными HomeKit-устройствами от разных производителей

При этом всеми устройствами, добавленными в приложение Дом на айфоне, можно управлять голосовыми командами через персонального ассистента Siri даже без разблокировки телефона. Как же это удобно, просто сказать “Привет Siri, выключи свет” для того, чтобы выключить свет во всех комнатах, несмотря на то, что в гостиной у вас лампочки от Икея, а в спальне – от Philips. Фантастические фильмы про Железного Человека и его виртуального помощника, управляющего домом, становятся реальностью.

Возможность связывать воедино устройства разных производителей через голосового помощника стала настолько успешной у пользователей, что компания Amazon в конце 2014 года выпустила отдельный гаджет для дома с “живущим” в нём голосовым помощником – умную колонку Amazon Echo с ассистентом Alexa. Эта колонка может понимать голосовые команды и управлять бытовыми устройствами в доме.

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

В 2016, следом за Амазон, вышла умная колонка Google Home с голосовым помощником Google Ассистент. А позднее, в 2018-м году, Гугл выпустил приложение для управления своей платформой умного дома – Google Home. Компания Apple же представила свою колонку HomePod с встроенным помощником Siri. А затем и российская компания Яндекс выпустила свою Станцию с Алисой.

Умные колонки от Google, Apple и Amazon со встроенными голосовыми помощниками

Началась новая эпоха домашней автоматизации: три крупнейшие IT-корпорации взяли на себя роль ведущих разработчиков программного обеспечения для Умного Дома, начав задавать свои правила игры. Теперь Apple, Google и Amazon предоставляют программную часть Умного Дома, а производители техники теперь делают только то, что у них получается лучше всего – бытовые электроприборы. При этом оснащая их модулями для подключения к беспроводной сети умного дома (Wi-Fi или Zigbee). Выстраивается схема очень похожая на взаимодействие производителей телефонов и операционной системы Android, которую делает Google.

Получается, сегодня мы имеем 3 передовых конкурирующих между собой платформы для Умного Дома: HomeKit от компании Apple, Google Ассистент от компании Google и Amazon Alexa от Amazon. В России также развивается своя платформа Умного дома Yandex. И любая компания, которая занимается устройствами Умного Дома, должна сотрудничать, как минимум, с одной из этих платформ, интегрировать свои устройства в экосистемы этих компаний. Если производитель «железа» не будет сотрудничать с Apple и Google, то с ним, вероятно, произойдёт то же, что произошло с производителями мобильных телефонов, которые отказались от использования Android. Его приборы не смогут связываться с Siri и Google Ассистентом, и их не будут покупать.

Ведущие мировые производители бытовой электроники уже начали активно сотрудничать с Apple, Google и Amazon и активно выпускать совместимые с их системами приборы. Для того, чтобы покупатель мог легко отличить совместимые устройства от несовместимых, лидеры рынка придумали специальную пометку для сертифицированных «одобренных» товаров. Так, устройства совместимые с платформой HomeKit от Apple имею наклейку Works with HomeKit (работает с Apple HomeKit). Аналогична ситуация с умными устройствами, которые совместимы с Google, Amazon и Яндекс (Works with Google Assistant, Works with Amazon Alexa, Работает с Алиса).

Логотипы на упаковках одобренных и сертифицированных умных устройств

Именно совместимость устройств с экосистемами Эпл, Гугл, Амазон или Яндекс и делает умный дом современным. Поэтому сегодня каждый, кто хочет автоматизировать свой дом, должен выбрать одну из этих ведущих платформ, точно так же, как мы это делаем при выборе операционной системы телефона: Андроид или iOS.

Специальные решения

VoiceDigger

Система поиска информации в аудиозаписях по ключевым словам (ЦРТ)

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

Система может быть развернута на обычном ПК в качестве настольного приложения или на базе многопроцессорного комплекса с клиент-серверной архитектурой.

Voice2Med

Программа для голосового заполнения медицинской документации (ЦРТ)

Специализированный сервис для распознавание речи в текст в режиме реального времени. Особенностью продукта является наличие специализированных лексических русскоязычных словарей: врача-терапевта общей практики, лор-врача, врача-диагноста МРТ, КТ, УЗИ.

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

Применение

Основным преимуществом голосовых систем объявлялась дружественность к пользователю. Речевые команды должны были избавить конечного пользователя от необходимости использования сенсорных и иных методов ввода данных и команд.

  • Голосовое управление
  • Голосовые команды
  • Голосовой ввод текста
  • Голосовой поиск

Успешными примерами использования технологии распознавания речи в мобильных приложениях являются: ввод адреса голосом в Яндекс.Навигаторе, голосовой поиск Google Now.

Помимо мобильных устройств, технология распознавания речи находит широкое распространение в различных сферах бизнеса:

  • Телефония: автоматизация обработки входящих и исходящих звонков путём создания голосовых систем самообслуживания в частности для: получения справочной информации и консультирования, заказа услуг/товаров, изменения параметров действующих услуг, проведения опросов, анкетирования, сбора информации, информирования и любые другие сценарии;
  • Решения «Умный дом»: голосовой интерфейс управления системами «Умный дом»;
  • Бытовая техника и роботы: голосовой интерфейс электронных роботов; голосовое управление бытовой техникой и т.д;
  • Десктопы и ноутбуки: голосовой ввод в компьютерных играх и приложениях;
  • Автомобили: голосовое управление в салоне автомобиля — например, навигационной системой;
  • Социальные сервисы для людей с ограниченными возможностями.

Применение

Основным преимуществом голосовых систем объявлялась дружественность к пользователю. Речевые команды должны были избавить конечного пользователя от необходимости использования сенсорных и иных методов ввода данных и команд.

  • Голосовое управление
  • Голосовые команды
  • Голосовой ввод текста
  • Голосовой поиск

Успешными примерами использования технологии распознавания речи в мобильных приложениях являются: ввод адреса голосом в Яндекс.Навигаторе, голосовой поиск Google Now.

Помимо мобильных устройств, технология распознавания речи находит широкое распространение в различных сферах бизнеса:

  • Телефония: автоматизация обработки входящих и исходящих звонков путём создания голосовых систем самообслуживания в частности для: получения справочной информации и консультирования, заказа услуг/товаров, изменения параметров действующих услуг, проведения опросов, анкетирования, сбора информации, информирования и любые другие сценарии;
  • Решения «Умный дом»: голосовой интерфейс управления системами «Умный дом»;
  • Бытовая техника и роботы: голосовой интерфейс электронных роботов; голосовое управление бытовой техникой и т.д;
  • Десктопы и ноутбуки: голосовой ввод в компьютерных играх и приложениях;
  • Автомобили: голосовое управление в салоне автомобиля — например, навигационной системой;
  • Социальные сервисы для людей с ограниченными возможностями.

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

Arduino

#include «Talkie.h»
#include «Vocab_US_Large.h»
#include «Vocab_Special.h»
Talkie voice;
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);
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

#include «Talkie.h»
#include «Vocab_US_Large.h»
#include «Vocab_Special.h»

Talkievoice;

voidsetup(){

}

voidloop(){

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);

}

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

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

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

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

Arduino

#include «Talkie.h»
#include «Vocab_US_Large.h»
#include «Vocab_Special.h»

1
2
3

#include «Talkie.h»
#include «Vocab_US_Large.h»
#include «Vocab_Special.h»

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

Arduino

Talkie voice;

1 Talkievoice;

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

Arduino

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);
}

1
2
3
4
5
6
7
8
9
10
11

voidsetup(){

}

voidloop(){

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);

}

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

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

Прежде чем мы сможем запустить нашу программу на Python, нам необходимо установить две библиотеки — распознавание речи и PyAudio. Чтобы установить эти две библиотеки, вам нужно запустить следующие две команды в окне терминала:

$ sudo pip install SpeechRecognition
$ sudo pip install PyAudio

Если у вас возникли проблемы с установкой PyAudio, вы можете установить ео, используя следующую последовательность инструкций:

$ sudo apt-get install git
$ sudo git clone http://people.csail.mit.edu/hubert/git/pyaudio.git
$ sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
$ sudo apt-get install python-dev
$ cd pyaudio
$ sudo python setup.py install

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

$ cd /etc/modprobe.d
$ sudo nano alsa-blacklist.conf

Nano — простой текстовый редактор для терминала, и когда он загружается, вам нужно только ввести одну строку:

blacklist snd_bcm2835

Нажмите Ctrl + X, чтобы выйти из nano и сохранить файл с именем alsa-blacklist.conf. Этот простой файл отключает аудиосистему Broadcom от Raspberry Pi, поэтому единственной аудиосистемой, доступной на Pi, является звуковая карта USB.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий