BBB에 TTS 구현하기

BBB를 display에 연결하지 않을 경우 정보를 표시하는데 한계가 있다. 이는 LED나 모터 등 대채 actuator로 해결할 수 있다. 이 중 speaker는 가장 손 쉬운 actuator이고, TTS가 된다면 display가 없는 BBB의 가치는 매우 높아질 것이다.

TTS용 npm은 기본적으로 TTS engine을 command line으로 구동시키는 구조로 되어 있다. OSX에는 say라는 명령어가 제공되고, Linux의 경우 Festival이 유명하다. (미안하지만 windows는 skip!) BBB는 Linux 머신이기 때문에 Linux에서 사용할 수 있는 TTS engine이라면 바로 사용할 수 있다. 여기 Linux에서 사용할 수 있는 TTS engine 리스트가 있다.

. espeak : a compact open source software speech synthesizer for English and other languages, for Linux and Windows.

. festival : a general framework for building speech synthesis systems as well as including examples of various modules.

. mbrola : a non-free phonemes-to-audio program.

. speech-dispatcher : common interface to speech synthesis.

아무래도 festival이 가장 유명하기 때문에 festival을 opkg로 설치해 보았으나 해당 module을 찾을 수가 없었다. 대신 opkg로 espeak를 찾을 수 있었다.


$ opkg install espeak

mini-hdmi를 연결한 후 모니터 스피커로 바로 espeak 테스트에 들어갔다.


$ espeak "hello"

‘hello’ 소리가 잘 나온다. 이제 npm을 찾아보았다. 매우 심플한 npm이 있었다. node-tts를 clone하여 OSX에서 테스트해 보았다. 역시 잘 동작한다. 이제는 espeak를 이 npm에 포팅해본다.

먼저 fork하여 나만의 npm을 만들고, espeak를 통해서 TTS가 동작되도록 npm 코드를 추가하였다.

수정된 코드는 메인 프로젝트에 pull request를 하였는데, 받아줄지 어떨지 잘 모르겠다.

해당 코드를 BBB에 다운받아 처리해 보았다.


$ npm install git://github.com/musart/node-tts

여기서 설치시에는 git://으로 시작되는 주소를 써야한다. https://주소를 사용하면 ENOENT에러가 안 난다.