Raspberry pi

라즈베리파이 음성인식 - Google API nodejs sample 실행

[혜안] 2017. 9. 10. 14:20
728x90

라즈베리파이 음성인식 - Google API nodejs sample 실행

구글은 음성인식 API를 nodejs sample로도 제공하고 있다.

아래와 같이 sample 코드를 실행해보는 것만으로도 구글 음성인식을 간단히 시험해볼 수 있다.


1. 샘플코드 다운로드

$ git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git


2. API 인증키 발급 및 다운로드





  • 사용자 인증정보 만들기 > 서비스 계정 키



  • Compute Engine default service account > JSON > 생성 및 다운로드



  • 메뉴 > API 및 서비스 > 라이브러리 > Speech API



  • Google Cloud Speech API 사용 설정


사용 설정을 클릭하면 결재계좌를 등록하라는 화면이 나온다.

카드정보를 입력하면 1달러 결재 후 취소되므로 당장 돈이 들지는 않는다.

아직까지는 무료이용이 가능하지만 1년간 무료라는 단서가 붙어있다.


3. 샘플코드 설치 및 실행

필요한 패키지들을 설치하고

$ cd ~/nodejs-docs-samples/speech
$ npm install

다운로드 받은 서비스 계정 키 파일의 경로를 export 한 뒤

$ export GOOGLE_APPLICATION_CREDENTIALS=/home/cmlee/MyHomeProject-1ca7b59ffdf2.json

샘플코드 실행을 해보자.

$ cd ~/nodejs-docs-samples/speech
$ node recognize.js listen

만약 패키지 설치가 안되어 있다면 아래와 같은 오류들이 나온다.

module.js:339
    throw err;
    ^

Error: Cannot find module 'yargs'
    at Function.Module._resolveFilename (module.js:337:15)
    at Function.Module._load (module.js:287:25)
    at Module.require (module.js:366:17)
    at require (module.js:385:17)
    at Object.<anonymous> (/home/cmlee/nodejs-docs-samples/speech/recognize.js:445:13)
    at Module._compile (module.js:435:26)
    at Object.Module._extensions..js (module.js:442:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:311:12)
    at Function.Module.runMain (module.js:467:10)

해당 모듈들은 대부분 npm 사이트에서 찾을 수 있고 설치 방법도 나와 있다.



오류가 발생하면 오류메시지의 패키지를 찾아 설치가이드대로 설치하자.
npm install을 하지 않았다면 아래의 패키지들을 설치해야 한다.

$ npm i yargs --save
$ npm i node-record-lpcm16
$ npm install --save @google-cloud/speech



단, 아래와 같이 Sound 처리를 위한 sox 라이브러리를 요구하는 오류가 발생할 경우는 apt로 설치가 필요하다.

$ node recognize.js listen
Listening, press Ctrl+C to stop.
events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: spawn rec ENOENT
    at exports._errnoException (util.js:874:11)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:178:32)
    at onErrorNT (internal/child_process.js:344:16)
    at doNTCallback2 (node.js:439:9)
    at process._tickCallback (node.js:353:17)
    at Function.Module.runMain (module.js:469:11)
    at startup (node.js:134:18)
    at node.js:961:3

sox 라이브러리 설치

$ sudo apt-get install sox libsox-fmt-all

다시 샘플코드를 실행해 보자.

$ cd ~/nodejs-docs-samples/speech
$ node recognize.js listen
Listening, press Ctrl+C to stop.
Transcription:  hello
Transcription:  what is your name

성공! 콩글리쉬도 잘 알아듣는다.
이제 설정을 한글로 바꾸고, 샘플 코드를 발췌해서 기능들과 매핑시키면 된다.

728x90