Voice Recognition Module V3

seel

✩✩✩✩✩✩✩
13 Ноя 2020
10
0
Можно ли подключить модуль Voice Recognition Module V3 к ESP8266, чтобы тот отдавал команды на сервер MQTT?
Если есть какая-то другая альтернатива, буду добр выслушать.
 

enemy_krs

★✩✩✩✩✩✩
28 Май 2019
104
37
а какие проблемы? для него даже библиотека есть?
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
Мой модуль не работает. Новый, только что с алика.
Пишет вот так
Baud rate: UNKONOWN
Output IO Mode: UNKONOWN
Pulse Width: 20ms
Auto Loa: enable
Group control by external IO: UNKNOWN STATUS

Это все или что-то можно сделать?
 

Bruzzer

★★★✩✩✩✩
23 Май 2020
334
104
@Alexs-vplicei,
Видимо никто здесь не использует данный модуль, чтобы знать его особенности.
"Думал, может я что-то делаю не так,"
Задавать уточняющие вопросы - к чему подключили, как подключили, какой скетч запускаете, чтобы после ответов не знать, чем помочь, как то не серьезно.
Так что общие советы.
  • Найти форум, где обсуждается данный модуль.
  • Проверить подключение (контакты, питание земля и т.д.)
  • Добавить в начало setup задержку на несколько секунд.
  • Проверить на разных скоростях модуля "2400, 4800, 9600, 19200, 38400 может еще каких то" . Ведь зачем то в примерах есть скетч vr_sample_check_baud_rate.ino где проверяются эти скорости.
  • Посмотреть осциллографом - выдает ли модуль что то по TX. При отсутствии осциллографа подручными средствами - светодиодом на 1 - 2 мА через резистор, или еще как.
  • Если ничего не помогает - искать документацию и смотреть, какие еще есть варианты.

Я бы проверил разные скорости, но изменил бы тестовый скетч vr_sample_check_baud_rate.ino
Изменения помечены //+++
C++:
******************************************************************************
* @section  HISTORY
*
* 2013/07/10    Initial version.
*/
#include <SoftwareSerial.h>
#include "VoiceRecognitionV3.h"
/**     
* Connection
* Arduino    VoiceRecognitionModule
* 2   ------->     TX
* 3   ------->     RX
*/
VR myVR(2,3);    // 2:RX 3:TX, you can choose your favourite pins.

int br[]={
  2400, 4800, 9600, 19200, 38400
};

void setup(void)
{
  /** initialize */
  int i=0;
  Serial.begin(115200);
  Serial.println("Elechouse Voice Recognition V3 Module\r\nCheck Baud Rate sample");
  delay(1000);    // +++ ДОБАВЛЕНИЕ ЗАДЕРЖКИ
  for(i=0; i<5; i++){
    myVR.begin(br[i]);
    delay(1000);    // +++ ДОБАВЛЕНИЕ ЗАДЕРЖКИ
    if(myVR.clear() == 0){
      Serial.print("Baud rate: ");
      Serial.println(br[i], DEC);
      //break;        // +++ чтобы Вывод всех скоростей на которых получили ответ. Может этот тест кривой
    }
  }
  if(i==5){
    Serial.println("Check baud rate failed. \r\nPlease check the connection, and reset arduino");
  }
}

void loop(void)
{

}
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,197
1,282
Москва
Это модуль довольно условный модуль. Он не обладает мощью нейросети для полноценного распознавания речи, хотя для чего то скодиться.
Может записать некоторое кол-во сигнатур фраз и довольно неплохо распознавать из.. в тишине. Посторонние (или потусторонние) звуки будут ему мешать.С 2-3 метров в тишине распознает уверенно.
Библиотека есть готовая к употреблению, вполне рабочая.А уж подключить это к чему либо дело техники.
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
@Bruzzer,
Спасибо. Делаю.
1. Форумов практически нет, вернее есть, но там также никто особо не отвечает, только сочувствуют.
2. Подключение вроде норм, два раза перепаивали контакты.
3. Проверил на разных скоростях. Результат такой

Elechouse Voice Recognition V3 Module
Check Baud Rate sample
Baud rate: 9600

Что дальше?

Подключил с модуля TX длинная нога светодиода, короткая в минус. Светодиод горит.

Может сам модуль надо как-то прошивать?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,197
1,282
Москва
Есть библиотека, там есть код для тренировки , обучения, модуля. Сначала надо в мк загрузить его и натренировать модуль на нужные фразы. А уж потом прошивать своей прошивкой.
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
Понятно. Я запустил пример vr_sample_bridge
Вот что мне выдало. Поможете расшифровать? Может тут что-то кроется&

ets Jul 29 2019 12:21:46

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:928
ho 0 tail 12 room 4
load:0x40078000,len:8424
ho 0 tail 12 room 4
load:0x40080400,len:5868
entry 0x4008069c
Elechouse Voice Recognition V3 Module "bridge" sample.
Eg:
1. Enable Arduino Serial monitor "Send with newline" feture, Baud rate 115200.
2. Input "01" to "check recognizer".
3. input "31" to "clear recognizer"
4. input "30 00 02 04" to "load record 0, record 2, record 4"
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,197
1,282
Москва
Есть довольно приличное видео по этому модулю, найдите его и посмотрите, это не совсем тот модуль в котором можно разобраться методом тыка.
Если в кратце: модуль может запоминать довольно большое число сигнатур слов, но распознавать в конкретный момент может только 7 (если на ошибаюсь , но + -). В начале происходит обучение на все эти сигнатуры и они записываются в память модуля. Для начала работы надо загрузить те нужные сигнатуры , которые будут распознаваться в данный момент. После этого модуль будет готов к работе, определенным образом будет мигать светодиод. При опознании слова или короткой фразы (время тоже ограничено) модуль выдаст номер распознанной сигнатуры.
Без предварительной записи сигнатур в память теребонькать примеры бесполезно - модуль ничего не распознает.

Вот пример работы на тестовой сборке:
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
Я не разбирался методом тыка. Я тоже смотрел видео, вот это Видосик и все повторял за автором видео. Ваше с ограниченным доступом, посмотреть не могу.
Так вот в момент когда опрашивается модуль у автора выдает вот так
1703231187003.png
А у меня нет.
Baud rate: UNKONOWN
Output IO Mode: UNKONOWN
Pulse Width: 20ms
Auto Loa: enable
Group control by external IO: UNKNOWN STATUS

И нету во всем инете ответа на вопрос, почему модуль не работает как надо.

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

Старик Похабыч

★★★★★★★
14 Авг 2019
4,197
1,282
Москва
Я подключал так:
C++:
VR myVR(12,13);  
...   
void setup() {
  myVR.begin(9600);
}
При этом RX модулья к 13-му пину, а TX соотв к 12-му, остальное все занятно совсем было.
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
У Вас на видео светодиод модуля мигает, у меня горит постоянно.
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
Я подключал и к 2,3 и к другим пинам, менял контроллер.
Насколько я понимаю, Вы ничего с ним не делали, взяли модуль, подключили, прописали вот такой код и он работает. Так?
Я делал точно так же. Делаю вывод, мне попался убитый модуль. Так сказать, издержки китайского алика.

@Старик Похабыч,можно подробнее о загрузках сигнатур.
Я выполняю команду sigtrain, записываю команду. Она записывается. Но не загружается командой load. Может что-то еще я упускаю.

Могу продемонстрировать мои действия.

Подключил к ардуино. Решил сделать как у Вас на 12, 13 пины. Загрузил в ардуино скейтч vr_sample_train.ino
В мониторе порта вижу
1703238269926.png

Набраю команду settings Результат не утешительный
1703238314826.png

Даю команду sigtrain 0 one
Модуль оживает и что-то записывает
1703238456743.png

Пытаюсь записать Load 0
Ответ
1703238558947.png

Что не так?

Да, кстати, подобная проблема описана тут, но ответов нет https://github.com/elechouse/VoiceRecognitionV3/issues/9
 

Вложения

Старик Похабыч

★★★★★★★
14 Авг 2019
4,197
1,282
Москва
Да, похоже что то не так.
По факту на 28 сообщении что то получилось по сигнатуре, но она почему то не записалась в ячейку. попробуйте на ячейку 1
По скрину видно, что сначала не совпали сигнатуры, а со второй попытки совпали.
Попробуйте через train сделать, сигнатура еще и буквенное сопровождение записывает, может с этим проблема.
После загрузки (load) как раз должен начать мигать светодиод и модуль уже сможет что то распознать и выдать инфу в монитор порта

Я сначала через вот эту прошивку задал нужные команды а уже в рабочем варианте их загрузил вот так: сначала очистил , а потом загрузил нужную.
C++:
  if(myVR.clear() == 0){
    Serial.println("Recognizer cleared.");
  }else{
    Serial.println("Not find VoiceRecognitionModule.");
    Serial.println("Please check connection and restart Arduino.");
    while(1);
  }

  if(myVR.load(commands, 3) >= 0){
    printRecord(commands, 3);
    Serial.println(F("loaded. 1"));
  }
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
@Старик Похабыч,тут кусок кода, это из примера или Ваш?

1703240956151.png
Попробовал. Увы.

То есть необученный модуль на команду settings может выдавать UNKONOWN? Это точно?

Это на команду clear
1703241160814.png
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,197
1,282
Москва
То есть необученный модуль на команду settings может выдавать UNKONOWN? Это точно?
Нет, не точно, я вообще не помню смотрел ли я настройки или нет, т.к. у меня он обучался.
Попробуйте загрузить сигнатуру после очистки.
Кусок кода именно мой. функция printRecord из примера, для теста.

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

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
@Старик Похабыч,согласен. Очень похоже на это. Запись идет, а модуль говорить, что в хранилище записей нет.
Возможно что-то с внутренней прошивкой (прогой) самого модуля. Это перепрошивается?
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
@Старик Похабыч,значит физически что-то либо не так впаяно, либо впаяно не рабочее. Спор на алике открыл, жду результатов, но подозреваю, что свалят на мои неправильные действия.
 

Alexs-vplicei

✩✩✩✩✩✩✩
18 Авг 2021
52
3
Есть смысл пробовать еще раз или этот модуль не оправдает моих надежд таки?
Строим устройство автоматического включения и выключения света в кабинете, ну и остальное по мелочи.
Искали модуль РР, взял подороже V3. Есть еще такой , но ценник удивляет. Он точно что-либо распознает?
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,197
1,282
Москва
"такой" я не пробовал , сказать ничего не могу.
Если в кабинете относительно шумно, например будет играть музыка или свет будет включаться/выключаться при работающем телевизоре - будет разочарование.
Так я имел дело с одним модулем непосредственно, а с другим у клиента, который просил его встроить - оба отработали штатно.