Notice
Recent Posts
Recent Comments
Today
Total
04-20 07:15
Archives
관리 메뉴

Jeongchul Kim

라즈베리파이 스피커와 마이크 동시 입출력 설정 본문

스마트미러

라즈베리파이 스피커와 마이크 동시 입출력 설정

김 정출 2016. 3. 30. 16:48


라즈베리파이 스피커와 마이크 동시 입출력 설정

Smart Mirror 스마트 미러 만들기- 5





구글 클라우드 스피치 음성인식 Google Cloud Speech API 사용법 http://jeongchul.tistory.com/544






지난 4일간 고된 시간을 보냈습니다.

Electron을 기반으로 한 스마트-미러 프로그램 실행을 위해 마이크와 스피커 설정을 하였지만

동시에는 실행이 안되더군요.

스피커를 사용하는 이유는 음성 합성 (Responsive Voice 무료)

http://responsivevoice.org/


사용법은 http://responsivevoice.org/api/ 를 살펴보시면 되구요


마이크는 기존의 Annyang API 사용하기 위해서죠 Annyang API는 Google Speech API를 사용합니다.

https://www.talater.com/annyang/


Google Speech API가 한국 시간 기준 오후 4:05 분 부터 이용이 가능합니다. 이 부분은 추후에 Google Cloud Speech 선택으로 해결해보겠습니다.

스피커와 마이크 동시 처리가 가능한지 보기 위해 저는 우선 라즈베리 파이에서 샘플 테스트를 진행하였습니다.


우선 index.html 부터 수정하겠습니다.

소스를 추가해주셔야 합니다.


<!-- responsivevoice.js -->

<script src="http://code.responsivevoice.org/responsivevoice.js"></script>

<script src="text/javascript">

function say() {

if(responsiveVoice.voiceSupport()) {

console.log('Responsvie Voice Supported');

responsiveVoice.speak("예쁜 꽃 그리는 법","Korean Female");

}

}

</script>


자 index.html 파일에서 <body>쪽으로 이동해서 html 코드 한 줄을 넣습니다.

<button onclick="say();">Speak</button>





스마트 미러를 진행하기 이전에

라즈베리파이는 크로미움을 사용합니다.

https://www.chromium.org/


라즈베리파이 OS 환경에서 TTS(Text To Speech) 사용을 위해 festival 설치를 해봅시다.


$ sudo apt-get install festival


테스트를 위해 스마트 미러 프로그램을 실행해 봅시다.

npm start를 진행해보죠


상단 부에 Speak 버튼이 생겼습니다. 눌러보시죠

한국말 여성 버전으로 “예쁜 꽃이 출력됩니다.” 음성 출력이 됩니다.

그러나…. 마이크는 인식되지 않습니다.


이번에는

sudo npm start를 진행해보죠

마이크 사용을 위해 sudo로 실행하였는데 오류가 뜨네요..
Evancohen의 스마트 미러 repository가 업데이트 되었는데요

해결을 위해 package.json 의 devDependencies에서 electron-prebuilt에서 0.36.2 버전으로 낮추고 실행해보았습니다.

결론을 말씀드리자면 sudo npm start에서 실행은 되지만!!!!! 마이크로 음성 인식은 되고 스피커로 음성 출력이 안됩니다.


이 문제의 해결을 위해 지난 4일간을 헤맸습니다. alsa의 config가 잘못된것인지.. 구글링에 구글링을 거듭하고 테스트를 진행해보았죠.

sudo vi /usr/share/alsa/alsa.conf 파일에서

# defaults 에서

defaults.ctl.card 1

defaults.pcm.card 1

가지고 놀아보았습니다.

이후에 defaults.pcm.card에서 0으로 수정하나 1로 수정에 따라 문제점을 알아냈습니다.

0으로 수정할 경우 마이크 인식불가 / 스피커 가능 -> 즉슨 0 card는 스피커

1로 수정할 경우 마이크 인식 가능 / 스피커 불가능 -> 1 card는 마이크


최종 해결 방법

결국 최종적으로 해결 방법 결론은 이러합니다.

다음의 명령어로 환경설정을 진행합니다.

$ vi ~/.asoundrc


기존의 코드는 이러할 것입니다.
pcm.!default {

type hw

card 0

}

ctl.!default {

type hw

card 0

}


이 부분을 수정해주셔야 합니다. 다음과 같이

pcm.!default {

type asym

playback.pcm

{

type hw

card 0

}

capture.pcm

{

type hw

card 1

}

}

ctl.!default {

type hw

card 0

}


여기서 playback.pcm은 사운드 출력 부분이므로 0으로 card를 선택

capture.pcm은 마이크 입력 부분이므로 1으로 card를 선택합니다.


저장하고 나옵니다.

다시 실행을 해봅니다.

$ npm start

음성 합성과 음성 인식 모두 잘되는 것을 보실 수 있습니다.


이상 포스트를 마치겠습니다.



Comments