본문 바로가기

Hardware/Arduino and Friends

음성 인식이 되는 아두이노 - ArduVoice 아두보이스

아주 예전에 어떤 필요에 의해 칼만필터를 공부해야하는 상황이 있었습니다. 다 까먹었는데.. 또 다시 지금 칼만을 손대야하는 슬픔도 있지만.. 뭐 여하튼.. 칼만이라는 아이... 정말 정이 가질 않았습니다. 어찌나 개념이 잘 잡히지 않던지ㅠㅠ. 그런데... 그걸 꽤 쉽게 이해시켜준 책이 하나 있습니다. 바로 칼만필터의 이해라는 김성필님의 책입니다.[바로가기] 그 때가 2011년이네요.. 참 오래전입니다. 그리고 칼만이라는 아이와 결별하고^^... 한참 후에... 이번에는 딥러닝이라는 아이를 만나게 되었습니다. 몇 권의 책을 사서 공부해야지 했는데.. 또 김성필님을 만나고야 말았습니다. 이번엔 블로그엔 소개하지 않았지만... 딥러닝 첫걸음[바로가기]이라는 책이었습니다. 그러다가.. 또 하나 더 깜놀할 뉴스는 회사를 설립하셨더군요...

J.Marple이라는 회사를 설립하셨더라구요... 2016년 9월 설립...^^

그리고, 딥러닝 기반의 예측, 인식 서비스를 제공하시는 듯 합니다. 멋져요^^ 비록 사업성에 대해서는 좀 다른 이야기지만... 그래도 이렇게 멋진 분야에 계시다니... 언제 한 번 큰 가르침이라도 받고 싶네요^^

아무튼.. 그 제이마플에서 하나 재미있는 제품을 내놓은 듯 합니다... 바로 아두보이스~ (ArduVoice) 구매하러 바로가기~~~ 네...

바로.. 음성인식 가능한 아두이노~~~라는 것입니다. 우와~ 이럴 수가.~~~ 하고 감탄하고 있는데.. 헉... 제 손에 들어왔습니다. 아두보이스~^^ 여하튼 감사합니다. 대표님... 크게 복받으실거에요^^ 그래서 슬쩍 한 번 테스트를 해 보았습니다.^^

ㅎㅎ 저렇게 큰 상자에 담겨오니... 뭔가 애지중지해야할 것 같습니다.^^

아~~ 멋지네요.. 저도 저의 결과물이 저렇게 상품으로 나왔으면 좋겠네요^^

아두보이스의 사용법은 정말 간단합니다. 뭐 단순 테스트라면 [바로가기]에서 테스트용 소스코드를 받을 수 있습니다. 아무튼 화면 제일 위의 가변저항처럼 생긴 셀렉터를 보면 0부터 9까지 10개인데... 음성을 10개를 저장할 수 있습니다. 처음 0번에 두고, 화면 아래 왼쪽의 DEL 버튼을 누르고, 1번으로 돌리고 또 누르고 해서... 9까지 해서 혹시 있을지 모르는 음성 정보를 모두 삭제하고... 다시.. 셀렉터를 0에 두고 REC 버튼을 누르고 인식시키고자 하는 음성을 말합니다. 그러면 중앙 GND 오른쪽의 좀 있어 보이는 LED가 녹색 혹은 청색(녹색이 좀 더 결과가 좋다는 뜻인가봐요^^)으로 바뀝니다. 그렇게 원하는 만큼 음성을 인식시키는 거죠~

일단 동영상을 보시죠.. 제 목소리가 좀 거슬리겠지만^^. 앞부분은 명령을 인식시키는 과정 중 하나입니다. 그리고 하나씩 명령을 불렀습니다. 100% 인식되지는 않았지만, 블로그 설명에 보면 같은 명령을 여러번 반복하라고 했으니... 그러면 좀 더 나아질 듯 합니다만, 일단 전 괜찮게 사용했습니다. 이렇게 음성이 인식되는 아두이노를 가질 수 있다니... 가격이 좀 만만치 않지만, 그럼에도 불구하고 꽤 매력적인 제품인 것은 분명합니다. 위 동영상에 보인 코드입니다.

#include <SoftwareSerial.h>
 
SoftwareSerial voiceSerial(8, 7);   // Rx, Tx
char id, accuracy;

void setup()
{  
  Serial.begin(9600);
  while (!Serial) 
  { 
    delay(500);
    Serial.print("."); 
  }
 
  voiceSerial.begin(9600);
  voiceSerial.listen();

  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
}

void loop()
{  
  if (voiceSerial.available() > 1) 
  {
    id       = voiceSerial.read();
    accuracy = voiceSerial.read();
    
    Serial.print((char)id);
    Serial.print(", ");
    Serial.print(accuracy, DEC);
    Serial.print(", ");
    
    switch (id) 
    {
      case '0':
        Serial.println("Hello. ");
        break;
      case '1':
        Serial.println("MiBaRui. ");
        break;
      case '2':
        Serial.println("Arduino. ");
        break;
      case '3':
        Serial.println("Ardu Voice. ");
        break;
      case '4':
        Serial.println("Turn On");
        digitalWrite(13, HIGH);
        break;
      case '5':
        Serial.println("Turn Off");
        digitalWrite(13, LOW);
        break;
    }
  }
}

크게 어려운 부분은 없습니다. 시리얼 통신으로 한글이 전송이 안되서 영어로 했지만... 음성은 다 한글로 (제가 영어 울렁증이 있습니다.ㅠㅠ) 명령을 주었습니다. 그리고 LED는 그냥 내장되어 있는 공식(^^) 테스터 LED 13번 핀 출력을 사용했구요^^ 위 코드를 보시면 아시겠지만...  음성인식용 칩과 아두이노 칩간의 통신을 위해 소프트웨어 시리얼 포트를 하나 열어둡니다 그게 회로에서 7번, 8번 핀입니다. 이제 끝났습니다. 음성을 인식해서 그 결과를 아두이노에 던져준 결과를 그냥 받기만 하면 됩니다. 그 결과는 인식시칸 음성 ID(0-9)와 정확도(accuracy)입니다. 그러나 인식된 음성으로 뭘 할 건지만 코드를 고민하면 되는 거죠^^

여하튼.. 오늘은 일종의 개봉기를 올렸고... 그 내용 요약은...

  • 아두이노 호환보드라는 것
  • 아두이노와 같은 레벨의 보드에서 음성인식이 된다는 것
  • 그 성능이 생각보다 괜챃다는 것~
  • 그 사용이 너무 간단하다는 것~

너무 좋았나요?^^ 아무튼 다음 글은 블루투스 오디오 리시버 모듈을 아두보이스에 잘 연결해서 제 자리에서 음성으로 스위치(전등 같은)를 끄고 켜보고 싶네요. 그나저나... 불루투스 오디오 리시버와 중복으로 보드 마이크까지 있으면 하울링 현상 같은게 생길까봐 미리 걱정입니다.^^ 멀쩡한 보드의 마이크만 뜯고 싶지는 않아서요^^ 뭐 아무튼 즐거운 작업들이 상상됩니다.^^ 그리고 이렇게 좋은 아두보이스라는 제품을 만들어 주셔서 감사하며.. 또 얼마나 고생하셨을까하는 생각에 짠한 느낌도 듭니다. 더 멋진 후속 제품도 기대하면서 이만 아두보이스 개봉기를 마칩니다~^^ 아참 엘레파츠의 판매페이지가 너무 허전한듯 했습니다. 약간의 커머셜 느낌(고객에게 신뢰도를 줄 수 있는)의 내용이 들어갈 수 있으면 좋을 것 같더라구요. 특히 알고나면 필요없지만, 판매페이지이든 공식 페이지이든 공식 매뉴얼도 필요하지 않을까 했습니다.^^

반응형