[라즈베리파이 프로젝트] 음성인식(Speech Recognition) 맛보기 - 1. 마이크/스피커 준비하기

메카 2017-11-20 (월) 23:05 7년전 38387  


 

라즈베리파이 프로젝트

 음성인식(Speech Recognition) 맛보기 - 1. 마이크/스피커 준비하기




  안녕하세요. 메카솔루션 알도입니다.

  이번 주에는 라즈베리파이를 이용한 간단한 음성 인식 DIY를 진행해보고자 합니다. 실제 음성 인식 시스템을 바닥부터 만드려면 다양하고 방대한 음성 데이터와 머신 러닝 능력을 갖춘 개발자를 갈아 넣으면(ㅠㅠ) 됩니다. 다행히도 구글과 아마존 같은 대기업에서 이미 편리한 솔루션을 만들어서 비교적 사용하기 편하게 제공하고 있습니다. 먼저 대표적인 음성인식 솔루션으로는 구글의 구글 어시스턴트(Google Assistant)와 스피치(Speech API) 아마존의 알렉사(Alexa)가 있습니다. 셋 다 Python SDK 형태로 제공되기 때문에 처음 데모를 동작시키는 것만 성공한다면 Python만 할 줄 알면 누구나 쉽게 자신만의 음성 인식 장치/프로그램을 만들 수 있습니다


  어시스턴트와 알렉사는 영어 밖에 안되지만 무료이며, 스피치는 110개 언어를 지원하지만 현재 12개월만 무료입니다. 단순히 라이브러리만 다운로드 받는 것이 아니라, 다운로드 받은 라이브러리를 구글이나 아마존 계정을 통해야 하기 때문에 설치과정이 복잡하고 어려울 수 있습니다. 그래도 한번 성공하면, 보다 다양한 프로젝트를 할 수 있으니 인내심을 갖고 도전해보시기 바랍니다. 저도 최대한 쉽게, 많은 그림을 넣어서 정리해보겠습니다.


 


 

     준비물


  이번 강좌를 위해서는 다음과 같은 준비물들이 필요합니다.


    - 3.5mm 오디오 잭 스피커와 USB 마이크

아직 판매 준비 중입니다.  시중 아무 제품을 사용하셔도 아무 문제 없습니다.


    - 라즈베리파이 3

http://mechasolution.com/shop/goods/goods_view.php?goodsno=329559&category=046001

    - Micro SD 카드 및 리더

    - Micro USB 전원

http://mechasolution.com/shop/goods/goods_view.php?goodsno=329709&category=135004

    - WiFi(무선) 또는 이더넷(유선)을 통한 인터넷 연결


라즈베리파이를 시작하는 방법은 크게 4가지가 있습니다. 먼저 운영체제(라즈비안)을 아래 포스트를 참조하여 설치합니다.

운영체제 설치가 완료되면 

1. 별도 컴퓨터 없이 라즈베리파이만 이용시
  - 모니터/키보드/마우스

2. 시리얼 통신과 WiFi 이용시
  - FTDI 시리얼 컨버터와 점프선

3. 공유기를 통해 이더넷을 통한 인터넷 연결시
  - 공유기, 이더넷 케이블(랜선)

4. 데스크탑이나 랩탑을 서버로 이용시
  - 이더넷 케이블(랜선)




 

     스피커와 마이크 설정하기 

  이 글은 구글 어시스턴트 홈페이지 내용을 참조하여 작성하였습니다.

https://developers.google.com/assistant/sdk/?authuser=2

  먼저 라즈비안 업데이트를 진행하겠습니다. 익숙하신 분들은 라즈비안이나 리눅스에서 프로젝트 진행시 필수 사항인 것을 아실 것입니다. 이미지를 새로 만드신 분들은 오래 걸리실 수 있으니 여유를 갖고 진행하시기 바랍니다.


$ sudo apt-get update

$ sudo apt-get upgrade

$ sudo apt-get dist-upgrade


  음성 인식 데모를 실행하기 앞서 스피커와 마이크를 설정하고 잘 작동하는지 확인할 필요가 있습니다. USB 마이크를 라즈베리파이의 USB에 연결하고, 스피커를 라즈베리파이의 3.5mm 오디오 잭에 연결해줍니다. 라즈비안의 터미널로 들어가서 다음을 따라하시면 됩니다.

  먼저 사용가능한 마이크를 확인합니다.


$ arecord -l


  사용가능한 스피커를 확인합니다.


$ aplay -l


 


  arecord -l 명령 뒤에 뜬 것이 마이크(capture hardware) 리스트이고, aplay -l 명령 뒤에 나온 것이 스피커(Playback hardware) 리스트입니다. 먼저 마이크는 card 1에 device 0인것을 기억해 두어야 합니다. 그리고 스피커는 card 0에 device가 0, 1로 2개가 있는데, 0번이 오디오 잭에 연결된 스피커이고, 1번은 HDMI 케이블에 연결되는 스피커입니다. 모니터에 스피커가 내장되어 있고 HDMI 연결을 사용한다면 후에 1번을 선택해서 모니터에 내장된 스피커를 사용할 수 있습니다.

  위 내용을 기억하기 어려울 수 있으므로 터미널을 하나 더 띄워서 다음 명령을 입력합니다.


$ nano .asoundrc


  마이크는 card 1, device 0에 연결된 것 1개 밖에 없으므로 pcm.mic 부분은 "hw:1,0"로, 스피커는 오디오 잭이 card 0에 device 0, HDMI가 card 0에 device 1입니다. 저는 오디오 잭에 연결된 스피커를 사용하므로 pcm.speaker 부분에 "hw:0,0"으로 하였습니다. 여기서 모니터에 내장된 HDMI 스피커를 사용하실 분은 "hw:0,1"로 하시면 됩니다.


pcm.!default {

    type asym

    capture.pcm "mic"

    playback.pcm "speaker"

}

pcm.mic {

    type plug

    slave {

        pcm "hw:1,0"

    }

}

pcm.speaker {

    type plug

    slave {

        pcm "hw:0,0"

    }

}


 이제 설정이 완료되었으므로 테스트를 해보겠습니다. 먼저 스피커를 테스트하겠습니다.


$ speaker-test -t wav


 위 명령을 실행하면 스피커에서 Front Left가 반복되어 재생됩니다. 소리가 작아서 잘 안들릴 수도 있으니 스피커와 라즈비안의 볼륨을 잘 조절해보시기 바랍니다.

 스피커 테스트가 완료되었으면, 마이크로 넘어갑니다. 다음 명령을 통해 녹음을 합니다.


$ arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw


  녹음이 완료되면 다음 명령을 통해 녹음한 소리를 재생합니다.


$ aplay --format=S16_LE --rate=16000 out.raw




  녹음된 소리가 너무 크다면 다음 명령을 통해 마이크 볼륨을 조정합니다.


$ alsamixer


  아무래도 윈도우가 아니다 보니 스피커와 마우스를 수동으로 잡아줘야 해서 이 부분이 쉽지가 않습니다. 여기까지만 해도 쉽지 않은 부분이 있으니 질문하시기 원활하도록 여기까지만 진행하고, 나머지는 다음 포스트로 넘기도록 하겠습니다.


메카리워즈 Image Map


모바일 버전으로 보기