라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

네뷸라 프로젝트를 빌드중 이상한 Fatal 에러가 생기더군요. Error: Fatal error   오후 3:15:45 (+0:13)   Target queue management failed.   Error starting target 'cl: crc32.c -> crc32.obj' on machine 'Local CPU 1'   Error: Failed to get file object type   Access violation at address 0001231A in module 'xgHandle.exe'. Read of address 00A4FFFC      (xgHandle utility returned code: 0x00000002)   Cannot open file: C:\Program Files\Nebula3 SDK (Apr 2009)\code\vs9.0\Win32\Debug\zlib_win32\vc90_ib_1.idb: 다른 프로세스가 파일을 사용 중이기 때문에 프로세스가 액세스 할 수 없습니다 일단 작업관리자를 열어 mspdbsrv.exe 프로세스를 죽인 후 프로젝트 클린을 한번 하고나서 빌드를 해주면 해결이 됩니다. 저 파일이 뭐하는 녀석인지는 잘 모르겠지만 pdb라는게 있는걸로 봐서 디버그 관련 된 파일 같은데 말이죠. 꼭 네뷸라에서만 생기는 에러는 아닌 듯 합니다.

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

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

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

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

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

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

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

http://responsivevoice.org/

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

사용법은 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 부터 수정하겠습니다.

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

Speak

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

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

https://www.chromium.org/

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

$ sudo apt-get install festival

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

npm start를 진행해보죠

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

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

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

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

이번에는

sudo npm start를 진행해보죠

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

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

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

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

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

# defaults 에서

defaults.ctl.card 1

defaults.pcm.card 1

가지고 놀아보았습니다.

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

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

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


최종 해결 방법

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

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

$ vi ~/.asoundrc

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

기존의 코드는 이러할 것입니다.
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를 선택합니다.

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

저장하고 나옵니다.

다시 실행을 해봅니다.

$ npm start

라즈베리파이 스피커 설정 - lajeubelipai seupikeo seoljeong

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

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