Управління голосовими командами на базі модуля розпізнавання голосу FZ0475

  1. список радіоелементів

А пам'ятаєте, як кілька років тому (а може бути і зараз) була популярна ідея управління світлом в кімнаті за допомогою ударів в долоні? А, адже, це дуже зручно, лежиш у ліжку, лінь встати і плескання в долоні вимикається світло або заходимо додому, темно, намацати вимикач довго, а тут з самого порога бавовна або два і світло вже горить. Мені здається, що ця концепція актуальна до сих пір, але до неї можна застосувати вже більш високі технології в порівнянні з тими, що були 5 років, 10 років тому. Тепер за порівняно невелику суму можна купити кілька деталей і запрограмувати конструкцію на подібні функції, про що піде мова нижче.

У цій статті розглянемо модуль, призначений для розпізнавання голосових команд (в тому числі і просто голосу в рамках записаної голосової команди) - Voice recognition module V3.1 (V3) або таку поширену кодування назву FZ0475 .

У комплект поставки входить сам модуль (друкована плата дуже хорошої якості), мікрофон на гнучкій ніжці з роз'ємом 3,5 мм jack і кутові PLS контакти з кроком 2,56 мм для плати модуля (їх можна не використовувати, якщо підключатися до контактів модуля іншим способом).

На сьогоднішній день існує декілька видів модулів з аналогічним функціоналом різних виробників і розробників або виконань. Даний модуль розпізнавання голосу, на мій погляд, має якийсь баланс між вартістю, функціоналом, зручністю. Найбільш сильним і істотно більш дорогим буде модуль EasyVR. Більш дешевими і незручними будуть модулі на базі LD3320 (незручні як мінімум тому, що нормальне опису на них знайти не просто, а в іншому це вже суб'єктивно).

Характеристики модуля Voice recognition module V3.1 (V3):

  • Напруга харчування - 5 вольт
  • Струм - до 40 мА
  • Інтерфейси - UART, GPIO
  • Точність розпізнавання - 99% (в ідеальних умовах)
  • Дальність дії - залежить від використовуваного мікрофона, для штатного мікрофона з комплекту дальність складає 0,5 - 1 метр максимальної відстані при досить гучному голосі, якщо ж голос тихий, то доведеться підносити мікрофон ближче до рота

Модуль представляє собою невелику акуратну плату, на якій розташовані головний мікроконтролер (чорна пляма), роз'єм jack 3,5 мм для підключення мікрофона, мікросхема flash пам'яті, контакти GPIO, UART і харчування, пара світлодіодів і решті необхідний обвіс, необхідний для роботи схеми - резистори, конденсатори, кварц. Компактний розмір плати дозволить без особливих труднощів вбудовувати модуль у власні розробки. Для збільшення дальності роботи голосових команд імовірно необхідно використовувати мікрофон з підсилювачем. При досягненні прийнятної дальності модуль придатний для використання в системах розумного будинку. Без доробок щодо поліпшення дальності роботи модуль можна використовувати в настільних системах управління, а також в системах охорони (контролю і обмеження доступу). Зі штатним мікрофоном через невеликої дальності найнадійніше використовувати модуль розпізнавання голосу як гарнітуру і бездротовим способом передавати команди контролеру, який чимось керує, використовуючи акумулятор і бездротові модулі (наприклад, HC-05 або HC-12 або відповідні будь-які інші). Модуль здатний працювати без зовнішнього мікроконтролера, так як виробником закладена функціональна самостійність, необхідно лише одноразово записати голосові команди і задати налаштування для самостійної роботи за допомогою зовнішнього пристрою (ПК або МК).

Отже, щоб почати роботу з модулем розпізнавання голосу нам необхідно підключити його або до комп'ютера (потрібен USB-UART перехідник), або до мікроконтролеру (необхідно розробляти програмний код для управління модулем).

Отже, щоб почати роботу з модулем розпізнавання голосу нам необхідно підключити його або до комп'ютера (потрібен USB-UART перехідник), або до мікроконтролеру (необхідно розробляти програмний код для управління модулем)

Принципової різниці в управлінні і настройці модуля між підключенням до комп'ютера або до мікроконтролеру немає, тому для наочності скористаємося ПК для настройки. В інструкції описуються команди для модуля в шістнадцятковій формі, тому для зручності знадобиться і термінал, передає байти в шістнадцятковій формі, наприклад, AccessPort (можна скачати в кінці статті). Крім того, виробник робить упор на користувачів платформи Arduino і надає бібліотеку для використання цього модуля і інструкцію з використання цієї бібліотеки. Однак багатьом з нас набагато цікавіше працювати з самим модулем безпосередньо, ніж через обгортку для Arduino.

Перед початком роботи розберемося з платою. З торців плати праворуч гніздо для підключення мікрофона, з іншого чотири контакту UART інтерфейсу. Знизу розташовано вісім контактів, що використовуються для виведення сигналів, що викликаються розпізнаванням голосових команд. Зверху чотири контакти, налаштованих як вхід сигналу, використовуються для перемикання між групами (по сім голосових команд в кожній) команд, якщо така функція використовується. І інші шість контактів зверху, ймовірно, використовуються для підключення до пам'яті модуля.

Для функціонування і конфігурації модуля використовується система команд. Загальний вигляд кадру виглядає наступним чином:

Загальний вигляд кадру виглядає наступним чином:

Перші чотири команди 00, 01, 02, 03 використовуються для перевірки стану модуля і його налаштувань. Наступні шість команд 10, 11, 12, 13, 14, 15 використовуються для зміни налаштувань модуля, серед яких управління портами виводу і налаштування автостарту (auto load). Далі три команди 20,21, 22 використовуються для запису голосових команд. Наступні три команди 30,31,32 використовуються для управління розпізнаванням голосових команд. Команди 0A, 0D, FF використовуються тільки при поверненні даних самим модулем. Команд насправді не багато і все це не так страшно, як здається на перший погляд в документації на модуль. Розглянемо команди, необхідні для роботи з модулем розпізнавання голосу. Не всі з існуючих команд несуть практичний характер.

Примітно те, що модуль може працювати без зовнішнього керуючого мікроконтролера, а також самостійно управляти чимось своїми портами виводу. Для цього необхідно їх налаштувати (команди 12, 13, 14).

Команда 12 - налаштувати порти виводу. Цією командою налаштовується режим роботи портів виведення модуля розпізнавання голосу.

Формат: | AA | 03 | 12 | MODE | 0A |

Де MODE може приймати чотири значення: 0 - імпульсний режим (при спрацьовуванні голосової команди відповідний команді висновок змінить свій стан на час, що встановлюється командою 13), 1 - режим перемикача (toggle або flip) (при кожному спрацьовуванні голосової команди висновок, відповідний голосовій команді інвертується), 2 - режим включення (при спрацьовуванні голосової команди висновок перейде в стан логічної одиниці і більше не перейде в стан логічного нуля, скидання здійснюється командою 14), 3 - режим виключення (аналогичн про режиму включення тільки, навпаки, при спрацьовуванні голосової команди висновок переходить в стан логічного нуля).

Найбільш практичним є режим перемикача, який не потребує зайвих команд. Імпульсний режим був би хороший, але логіка цього режиму така, що при спрацьовуванні голосової команди він одноразово видає логічну одиницю, на час від 10 мс до 1 с. Це мало. Хоча, дивлячись які вимоги до цього режиму, може бути корисно. Режими включення і виключення реалізовані незручно, так як вимагають виконання додаткових команд.

Команда 13 - завдання тривалості імпульсу відповідного режиму.

Формат: | AA | 03 | 13 | LEVEL | 0A |

Де LEVEL приймає значення від 00 до 0F (відповідає тривалості від 10 мс до 1 с).

LEVEL тривалість 0x00 10 мс 0x01 15 мс 0x02 20 мс 0x03 25 мс 0x04 30 мс 0x05 35 мс 0x06 40 мс 0x07 45 мс 0x08 50 мс 0x09 75 мс 0x0A 100 мс 0x0B 200 мс 0x0C 300 мс 0x0D 400 мс 0x0E 500 мс 0x0F 1 з

Команда 14 - скидання портів висновок до стану заданого режимами включення або виключення.

Формат: | AA | 03 | 14 | FF | 0A | - скидання всіх портів виведення

| AA | 03 + n | 14 | IO0 | ... | IOn | 0A | - скидання вибраних портів виведення

Де n - кількість висновків, які скидаються вибірково, IO0 ... IOn - перерахування цих висновків в кадрі відправки даних.

Далі щоб голосові команди виконувалися їх необхідно записати в модуль (навчити модуль). Тут є обмеження. Одночасно розпізнаватися можуть тільки сім команд, хоча записати їх можна значно більше. Для того щоб розширити діапазон голосових команд, які будуть розпізнаватися використовується система угруповання (команда 32), яка управляється портами введення модуля. Встановлюючи конфігурацію сигналів на цих контактах, здійснюється вибір групи команд, яка буде розпізнаватися. Це обумовлено обмеженістю продуктивності використовуваного голосового контролера модуля.

Отже, для того, щоб записати голосову команду необхідно скористатися командою 20 або 21 і при необхідності 22.

Команда 20 - запис однієї чи кількох голосових команд.

Формат: | AA | 03 + n | 20 | R0 | ... | Rn | 0A |

Де n - це кількість записуваних голосових команд (якщо записується одна команда n = 0, дві команди n = 1 і так далі відповідно до загального форматом передачі команд Lenght - довжина), R0 ... Rn номера голосових команд (AA 03 20 03 0A - команда для запису третьої голосової команди).

Команда 21 - запис однієї голосової команди і установка для неї підписи.

Формат: | AA | 03 + SIGLEN | 21 | RECORD | SIG | 0A |

Де RECORD - номер голосової команди, SIG - підпис (може складатися з декількох байт, таким чином, що кожен байт може відповідати кодуванні символу алфавіту при необхідності), SIGLEN - кількість байт, з яких складається підпис.

Команда 22 - додавання або видалення підпису для обраної голосової команди.

Формат: | AA | 03 + SIGLEN | 22 | RECORD | SIG | 0A | - приєднання підпису

| AA | 03 | 22 | RECORD | 0A | - видалення підпису

Де RECORD - номер голосової команди, SIG - підпис, SIGLEN - кількість байт, з яких складається підпис

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

В процесі запису голосових команд необхідно керуватися сигналами світлодіодів. Після введення команди, яка запускає процес запису, починає швидко моргати жовтий (оранжевий) світлодіод. Як тільки загориться червоний світлодіод необхідно вимовити голосову команду в мікрофон. При успішності загориться жовтий (оранжевий) світлодіод і далі знову червоний - необхідно підтвердити голосову команду, вимовити її ще раз. У разі успіху загоряться обидва світлодіода - голосова команда збережена.

Після того, як в модулі записані голосові команди нічого відбуватися не буде до тих пір, поки ці команди не помістити в "распознаватель" (Recognizer) модуля. Для цього необхідно скористатися командою 30. Після виконання цієї команди модуль почне очікувати збігу голосової команди зі збереженими зразками. Одночасно розпізнавати можна лише сем команд. При цьому буде повільно кліпати жовтий (оранжевий) світлодіод на платі модуля.

Команда 30 - завантажити записи в "распознаватель" (Recognizer) модуля.

Формат: | AA | 2 + n | 30 | R0 | ... | Rn | 0A |

Де R0 ... Rn - збережені голосові команди, n - кількість голосових команд (не може бути більше 7).

Якщо буде виголошена голосова команда і модуль її розпізнає по UART будуть відправлені дані з командою 0D і інформацією про розпізнаної команді.

Якщо буде виголошена голосова команда і модуль її розпізнає по UART будуть відправлені дані з командою 0D і інформацією про розпізнаної команді

Формат відповіді наступний: | AA | 07 | 0D | 00 | GRPM | R | RI | SIGLEN | SIG | 0A |

Де GRPM - інформація про групу, до якої належить команда (якщо використовується), R - Незрозумілий голосова команда (за цими даними можна розрізняти команда між собою якщо не використовуються підпису), RI - індекс команди в розпізнавачів, SIGLEN - довжина підпису в байтах, SIG - підпис (якщо використовується).

Ну і нарешті, якщо модуль повинен працювати самостійно, то необхідно скористатися командою 15 для автоматичного запуску по преднастройка распознавателя. У цьому випадку модуль розпізнавання голосу буде працювати самостійно без необхідності ініціалізації після включення.

Команда 15 - установка автозапуску распознавателя при включенні.

Формат: | AA | 03 | 15 | 00 | 0A | - відключення функції автозапуску

| AA | 03 + n | 15 | BITMAP | R0 | ... | Rn | 0A | - установка функції автозапуску

Де BITMAP - мітка кількості голосових команд, які розміщені в распознаватель, R0 ... Rn - збережені голосові команди, що поміщаються в распознаватель, n - кількість команд.

Для контролю вірності виконання команд кожної з них відповідає своя відповідь. У разі такої необхідності всі дані можна знайти в документації на модуль розпізнавання голосу, яка додається в кінці статті. Не варто забувати, що всі числові значення представлені в шістнадцятковій формі.

Таким чином, за допомогою системи команд можна досить гнучко налаштовувати модуль розпізнавання голосу для використання в різних цілях. Якщо ж простого управління портами виводу модуля недостатньо, то модуль розпізнавання голосу можна підключати до інших пристроїв за допомогою UART або GPIO. Для бездротового підключення можна використовувати раніше розглянуті модулі HC-12 .

Для бездротового підключення можна використовувати раніше розглянуті модулі   HC-12

За допомогою бездротових модулів можна підключати модуль розпізнавання голосу до будь-яких пристроїв, де це необхідно. Наприклад, підключимо його до мікроконтролеру, який щодо одержуваних дані про розпізнавання голосових команд буде керувати світлодіодами. бездротові модулі HC-12 дозволяють передавати дані в двох напрямках, тому при необхідності для мікроконтролера можна написати код ініціалізації голосового модуля та голосових команд. У нашому випадку під управлінням ПК в модулі вже записано кілька голосових команд і налаштований автозапуск розпізнавання при включенні харчування, тому для мікроконтролера пропишемо тільки прийом даних і управління світлодіодами щодо цих даних. Мікроконтролер STM32F103C8T6 використовує USART1 для прийому даних і контакти PB10 ... PB15, налаштовані на вихід, якими управляє світлодіодами. Вихідний код розташований в додатки в кінці статті.

Трохи про результати

Розпізнавання голосу йде не зовсім точне. Це залежить від обраних команд і голоси користувача. При тестуванні мною було виявлено кілька негативних моментів. При навчанні командам модуля були обрані голосові команди «раз» і «два». Команда «два» проходила завжди чітко, а ось команда «раз» досить часто визначалася як команда «два» і відповідно виконувався код другої команди. Далі при спробі віддавати голосові команди по-англійськи (а вони не записувалися в голосовий модуль) практично завжди команда «one» визначалася як «два». Можливо, вся справа в вимові, інтонації та інших аспектах людського голосу, закладених в алгоритм кодування голосового модуля вимовлених команд. Однак ці секрети виробники у відкритому доступі не дають. Крім цього на якість розпізнавання впливають зовнішні шумові умови - гул з вулиці, шум вентилятора, випадкові звуки та інше. Виробник загострює увагу на те, що високий рівень точності розпізнавання має місце в ідеальних умовах. Ідея використання мікрофона з підсилювачем, звичайно, збільшить дальність роботи пристрою, але так само збільшить ймовірність і помилки, так як посилення голосу буде відбуватися і з посиленням шумів.

Модуль розпізнавання голосу чітко відчуває інтонацію і спотворення власного голосу, однак у людей зі схожими голосами модуль спрацює однаково - розпізнає команду, в іншому випадку цього не станеться.

У підсумку, якщо у вас невисокі вимоги до розпізнавання голосу і виконання голосових команд, то цей модуль чесно відпрацює, витрачені на нього, гроші.

список радіоелементів

Завантажити список елементів (PDF)

Прикріплені файли:

Теги:

Разделы

» Ваз

» Двигатель

» Не заводится

» Неисправности

» Обзор

» Новости


Календарь

«    Август 2017    »
ПнВтСрЧтПтСбВс
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
31
 

Архив

О сайте

Затраты на выполнение норм токсичности автомобилей в США на период до 1974 г.-1975 г произошли существенные изменения. Прежде всего следует отметить изменение характера большинства работ по электромобилям: работы в подавляющем большинстве стали носить чисто утилитарный характер. Большинство созданных в начале 70х годов электромобилей поступили в опытную эксплуатацию. Выпуск электромобилей в размере нескольких десятков штук стал обычным не только для Англии, но и для США, ФРГ, Франции.

ПОПУЛЯРНОЕ

РЕКЛАМА

www.school4mama.ru © 2016. Запчасти для автомобилей Шкода