중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

음성인식 MOVI 쉴드

2016-09-22 12:57:51

개요 

 

안녕하세요! 코코아팹입니다. 선선한 바람 속에서 가을이 성큼 다가왔음을 느끼는 요즘입니다.

이번 포스팅은 음성을 인식하는 똑똑한 쉴드인 MOVI를 다뤄보려고 합니다.

여러분 혹시 영화 '아이언맨' 보셨나요?

이 포스팅을 보시는 분들 중 대부분의 분들이 아이언맨을 보셨을 거라고 생각됩니다.

화려한 아이언맨의 수트만큼이나 이목을 끄는 것이 바로 '자비스'인데요. 

영화 내내 인공 지능을 가진 자비스와 토니 스타크가 서로 대화하는 장면이 많이 나오는데요.

 

이미지 출처 : zd net

 

 

 

영화에서만 보던 음성 인식 기술이 점점 현실이 되가고 있지 않나 생각됩니다. 

현재 삼성의 S voice, 애플의 SIRI, 마이크로소프트의 Cortana 등 많은 업체들이 음성 인식 기술을 기반으로 한 음성 인식 비서 서비스를 제공하고 있습니다. 

 

 

 

 

또한 필립스의 Hue, 아마존의 Echo 등 음성 인식 기술을 기반으로 한 제품들도 속속히 등장하고 있는 추세입니다.

 

이미지 출처 : thenextweb.com

 

 

 

구글의 경우 음성 인식 기술은 인공지능 알고리즘을 적용한 '클라우드 스피치 API'를 공개하기도 했습니다.

 

 

 

 

내놓으라하는 많은 기업들이 음식 인식 기술에 투자하는 이유는 무엇일까요?

미래에는 음성 인식 기술이 생활에 밀접하게 녹아들 가능성이 있기 때문이 아닐까 조심스럽게 생각해봅니다. 

 

 

이런 추세에서 메이커들에게 꽤 반가운 쉴드 제품이 출시되었습니다. 

바로 음성 인식 쉴드인 MOVI!

음성을 인식해 Text로 변환해주고, 또 데이터를 음성으로 재생해주는 기능을 가지고 있는 똑똑한 쉴드인데요. 

이번 포스팅에서는 MOVI에 대해 알아보고, setting을 마친 후에 간단한 예제 실습을 진행해보도록 하겠습니다. 

 

 

 

 

MOVI란?

 

이미지 출처 : AUDEME

 

MOVI는 AUDEME사에서 개발한 음성 인식 쉴드이며 kickstarter에서 크라우드 펀딩에 성공한 제품이기도 합니다.

MOVI는 아두이노 플랫폼에서 작동하며, 스피치 인식과 음성 재생의 기능(남성 및 여성 목소리 지원)을 가지고 있습니다. 

 

MOVI의 장점은 아래와 같습니다. 

- 아두이노 IDE에서 150가지 이상의 문장 명령을 쉽게 프로그래밍 할 수 있다.

- 스피커와 독립적으로 사용이 가능하며, 음성 인식과 관련된 다양한 프로젝트에 활용할 수 있다.

- 인터넷 연결과 PC 연결을 하지 않아도 코드만 업로드 되어 있다면 독립적으로 사용하며, 많은 아두이노 호환보드와도 호환된다.

 

즉 보드에 코드만 업로드된 상태라면 인터넷과 PC에 연결하지 않지 않아도 업로드된 코드를 바탕으로 독립적으로 작동이 가능하다는 이야기입니다. 

이 말은 즉 클라우드 기반의 음성 인식 기능을 가지고 있지 않다는 이야기와도 일맥 상통하는 이야기라고 생각됩니다. 

하지만 와이파이 기능을 가지고 있는 모듈 및 쉴드와 연결한다면 음성 인식 IoT 프로젝트를 만드는데에도 유용하게 사용할 수 있겠죠?

 

가격은 89.9달러로 한화로 약 9만 9천원정도입니다. 

 

다음으로 MOVI의 재원에 대해서 간단히 알아보도록 하겠습니다.

 

 

 

 

 

 

MOVI 재원

 

 

Power Supply |

아두이노에서 공급되는 전원으로 MOVI 쉴드를 구동하기에는 부족하기 때문에 보드에 외부 전원을 넣어줘야 합니다. 

7-12V 사이의 최소 500mA 공급해주는 것을 권장합니다. 

* 위에서 언급한 바와 같이 아두이노의 전원만으로 구동하는 것에는 문제가 있기 때문에 USB를 통해 연결을 하더라도, 별도의 외부 전원을 먼저 제거하는 것은 권장하고 있지 않습니다.

 

Speakers |

Audio Out 단자를 통해 음성 출력 장치(스피커 또는 헤드셋)을 연결할 수 있습니다.

32Ω 스피커 사용을 권장하고 있습니다. 단 4Ω 또는 8Ω 스피커는 보드에 손상을 줄 수 있기 때문에 연결을 주의하셔야 합니다. 

볼륨의 경우에는 Library를 통해서 제어할 수 있습니다.

 

Audio Input |

기본적으로는 쉴드 위에 부착된 마이크를 통해 오디오 신호를 입력할 수 있습니다. 

쉴드에 부착된 마이크의 경우 5 meter의 인식 범위를 가지고 있고, 최적의 환경에서는 그보다 넓은 범위에서도 인식이 가능하다고 하나 테스트를 진행해봐야 할 것 같습니다.

추가적으로 MiCIn 단자를 통해 외부 마이크를 연결할 수 있습니다. 외부 마이크 연결 시 기본 마이크 사용은 불가하며, MicIn은 stero jack이지만, mono signal만 수신할 수 있습니다. 

* MiCIn 단자에 외부 마이크 연결 시 오직 2- conductor(mono) 혹은 3-conductor(stereo) 헤드폰 잭을 연결하는 것을 권장하고 있습니다. 4-condurtor를 사용하는 스마트폰(stereo + microphone) 별도의 어답터가 필요합니다.

 

LED |

쉴드에 부착된 LED를 통해 MOVI 쉴드의 상태를 알수 있습니다. 

LED가 소등 상태 : 전원 꺼짐 상태

LED가 빠르게 깜빡이는 상태 : MOVI 쉴드 부팅 상태

LED가 랜덤하게 깜빡이는 상태 : SD 카드에 데이터를 작성하고 있는 상태이며, 코드가 없데이트 되거나 트레이닝을 진행하느 상태입니다. 이 상태의 경우 MOVI의 전원을 제거하면 안됩니다. 

LED가 주기적인 텀으로 깜빡이는 상태 : SD 카드에 문제가 있는 상태

LED가 켜지있는 상태 : 정상적으로 MOVI가 동작하고 있는 상태이며, 이 상태에서 콜 사인을 통해 음성 인식을 진행하게 됩니다. 

 

Reset Button |

MOVI를 재시작(아두이노를 재시작)할 때 사용하는 버튼입니다.

LED가 랜덤하게 깜빡이는 상태(SD 카드에 데이터를 작성하고 있는 상태)에서는 Reset 버튼을 누르면 안됩니다. 

Reset 버튼을 길게 누르면 공장 초기화되어 콜 사인 대기 상태로 돌아가게 됩니다.

 

Jumper 1 |

대부분의 보드에서 사용할 때는 Jumper 1을 열어둡니다.(접지 시켜 주지 않습니다)

단 IOREF 핀이 없는 5V 보드에서는 Jumper 1을 닫아둡니다.(접지시킵니다)

*3.3V 보드의 경우 Jumper 1을 접지하면 보드가 손상되므로 꼭 열어둬야 합니다.

 

Jumper 2와 Jumper3 |

대부분의 경우 Jumper2(TX)와 Jumper3(RX)를 닫아준 상태에서(접지시켜놓은) 사용합니다. 

MOVI는 아두이노의 D10과 D11를 통해서 통신하며, MOVI 함께 사용되는 다른 쉴드가 해당 핀을 사용한다면, Jumper2와 Jumper3를 다시 와이어링 시켜줘야 합니다. 

 

음성 음식 쉴드에 대한 재원에 대해 간단히 살펴보았으니 오렌지보드에 MOVI 쉴드를 올려 간단히 예제를 실습해보도록 하겠습니다. 

 

 

 

 

 

 

 

부품 목록

 

MOVI 쉴드를 통해 LED를 제어하는 예제를 실습해보록 하겠습니다. 

해당 예제를 실습해보기 위해서는 아래의 재료들이 준비되어야 합니다. 

 

NO 부품명 수량 상세설명
1 오렌지보드 & USB Cable 1 Arduino UNO R3
2 MOVI 쉴드 1  
3 외부 어답터 1 6-12V
4 LED 1  

 

부품명 오렌지보드 & USB Cable MOVI 쉴드 외부 어답터 LED
부품 사진

 

 

 

 

하드웨어 메이킹

 

MOVI 쉴드를 사용하기 위해 부품들을 연결하는 순서는 아래와 같습니다. 

 

1. 오렌지보드에 MOVI 쉴드 결합

 

 

 

 

2. MOVI 쉴드의 Audio OUT에 speaker 연결

 

 

 

3. 오렌지보드 DC Jack에 외부 어답터 연결

* 위에서도 언급했지만 MOVI 쉴드는 USB Cable을 통해 PC에서 공급되는 전원으로는 원활한 동작을 하지 않습니다. 

따라서 MOVI를 사용할 때는 오렌지보드(아두이노)의 DC jack에 외부전원을 먼저 넣어줘야 하며, 전원을 제거할 때는 USB Cable을 먼저 제거한 후 DC jack에 연결된 외부 어답터를 제거해줘야 합니다.

MOVI 쉴드에 전원이 들어가면 MOVI 쉴드의 LED가 일정 주기로 깜빡이면서 speaker를 통해 "MOVI is booting"이라고 음성이 출력됩니다.

그 후 MOVI의 LED가 점등되면 이상 없이 MOVI를 사용할 준비가 완료된 것 입니다.

 

 

 

4. 오렌지보드에 USB 케이블 연결

 

 

 

5. LED 연결

 

 

브레드보드 레아이웃

 

* MOVI 쉴드에 대한 프릿징이 존재 하지 않은 관계로 오렌지보드 이미지로 대체하였습니다. 

아래 이미지는 MOVI 쉴드가 결합된 상태라고 생각하시면 됩니다.

 

 

 

회로도(스키메틱)

 

 

 

 

 

 

 

라이브러리 추가

 

MOVI 쉴드를 사용하기 위해 Arduino 라이브러리를 다운로드 받은 후 Arduino의 libraries 디렉토리에 추가해줍니다. 

MOVI library는 아래 링크를 통해 다운로드 받을 수 있습니다.

 

 

>> MOVI 라이브러리 다운로드 링크

 

라이브러리를 추가하는 방법은 코코아팹 튜토리얼을 통해 자세하게 알아보실 수 있습니다. 

>> 라이브러리 추가하기

 

 

 

 

 

 

 

예제 소스 업로드

 

라이브러리가 정상적으로 추가되었다면 아두이노 IDE의 [파일] - [예제] 에 MOVI(tm) Voice Control Shield가 추가된 것을 확인할 수 있습니다. 

[beginner]의 LightSwitch 예제를 선택한 후 오렌지보드(아두이노)에 업로드를 진행해줍니다.

 

 

소스 코드 업로드가 완료되면 MOVI 쉴드에 부착된 LED가 랜덤하게 깜빡이면서 speaker를 통해 "MOVI updating"이라고 음성이 출력된 후 새로운 센텐스를 트레이닝 중이라고 음성이 출력됩니다.

MOVI 쉴드에 부착된 LED가 램덤하게 깜빡이다가 점등된 상태가 되었다면, Call sign을 인식할 준비가 완료된 것 입니다. 

 

 

 

 

 

 

 

작동 영상

 

음성을 통해 LED를 제어하는 실습 영상 입니다.

Call sign을 "orange board"로 설정해놓았기 때문에 orange board를 부른 후 동작 명령 음성을 말해주면 됩니다. 

 

 

 

 

두번 째 실습은 온도 센서를 연결하여, 음성을 통해 현재의 음성을 출력해보는 실습입니다. 

 

 

 

 

 

 

이상으로 이번 포스팅에서는 MOVI에 대한 소개와 실습을 진행해보았습니다. 

다음 포스팅에서는 2번째 영상처럼 직접 소스 코딩을 통해 내가 원하는 기능을 구현해보는 방법에 대해서 알아보고 실습하도록 하겠습니다!

다음 포스팅도 많이 기대해주세요! ;)

kocoafabeditor

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

MOVI 쉴드, 아두이노, 오렌지보드

이화영 2016-10-07 19:56:30

감사합니다

오리도날껄 2017-05-31 14:42:38

그러면 콜 사인은 켜놓기만 하면 항상 인식하는 건가요?

whale 2018-02-24 10:21:23

한글도 되나요?

kocoafab 2019-01-29 16:41:55

@오리도날껄
네 항상 인식 됩니다.

@whale
한글은 지원하지않습니다.