Node-RED에서 Julius를 사용하여 음성 인식

개요



Julius은 교토 대학과 IPA가 개발한 음성 인식 엔진입니다. 여기에서는 Node.js상에서 움직이는 API나 IoT 제휴 등 실시하는 툴의 Node-RED에 Julius를 짜넣어 사용하는 순서를 소개하고 있습니다.

중요한 Julius는, 쉘 스크립트에 정리해 버려 아래의 순서로, exec 노드등을 사용해 처리해 갑니다.
1. 마이크로 녹음
2. 쉘 스크립트에 녹음 결과를 전달하고 인식 결과를 로그 파일에 출력
3. 로그 파일의 출력 결과를 debug 노드로 표시

Node-RED 설치



로컬 PC에 Linux를 넣습니다. 이번에는 우분투 16.04를 사용했습니다. 외형이 Windows와 같은 환경에서 작업하고 싶다면 Ubuntu 기반의 Zorin OS Lite를 사용하는 것이 좋습니다. 매우 똑같습니다.
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ sudo npm install -g --unsafe-perm node-red

PCを再起動

$ node-red & 
node-red をバックグラウンド起動。その後Enterキーを押す。

http://localhost:1880 에 액세스하여 Node-RED 편집기를 사용 가능한 사용자 설정과 같은 Node-RED 초기화를 수행합니다.

우분투를 사용하여 Julius 설치



아직 정리하지 않으면 안됩니다만, 일단 움직인다고 하는 것으로 자쿠트.
/home/username 다음에서 실시하고 있습니다.
여기서는/home/user1 이라고 합시다. 사용 환경에 따라 다시 작성하십시오.
다음 명령을 모두 실행하면 Julius가/home/user1/recognition/julius에 설치됩니다. 여기서는 우분투를 사용하기 때문에 ./configure시 mictype을 alsa로 지정해야합니다. (Zorin 등 Ubuntu 기반 OS의 경우도 마찬가지로 필요합니다.)
$ sudo apt-get install libasound2-dev libesd0-dev libsndfile1-dev
$ mkdir recognition
$ cd recognition/
$ wget https://github.com/julius-speech/julius/archive/v4.4.2.1.tar.gz
$ tar zxvf v4.4.2.1.tar.gz
$ mv julius-4.4.2.1 julius
$ cd julius/
$ wget https://github.com/julius-speech/dictation-kit/archive/dictation-kit-v4.3.1.tar.gz
$ tar zxvf dictation-kit-v4.3.1.tar.gz
$ mv dictation-kit-dictation-kit-v4.3.1 julius-kits
$ rm dictation-kit-v4.3.1.tar.gz
$ wget https://github.com/julius-speech/grammar-kit/archive/v4.3.1.zip
$ unzip v4.3.1.zip
$ mv grammar-kit-4.3.1 julius-kits
$ rm v4.3.1.zip
$ ./configure --enable-words-int --with-mictype=alsa
$ make
$ sudo make install
$ sudo apt-get install sox

Julius를 일괄 처리적으로 실행하는 파일 목록 만들기



마이크로 녹음 한 wav 형식의 파일을 julius에 전달하여 음성 인식됩니다. 할 오디오 데이터 목록 파일을 만듭니다.
$ nano list.txt
/home/user1/mono.wav

Ctrl +x を押し、yキーで保存

Node-RED에서 사용할 쉘 스크립트 (voice-recog.sh) 만들기



여기서 작성하는 쉘 스크립트는, 마이크로 녹음한 음성 데이터를, Julius에서 처리해 음성 인식 결과를 로그 파일에 출력하기 위한 것입니다.
$ nano voice-recog.sh

#!/bin/bash

sox /home/user1/out.wav -c 1 -r 16000 /home/user1/mono.wav
julius -C /home/user1/recognition/julius/julius-kits/main.jconf -C /home/user1/recognition/julius/julius-kits/am-gmm.jconf -input file -filelist /home/user1/list.txt > /home/user1/log.txt
grep sentence1: /home/user1/log.txt | cut -c 13- > /home/user1/log_cut.txt

Ctrl +x を押し、yキーで保存

실행 권한 추가
$ chmod a+x voice-recog.sh

./voice-recog.sh가 실행되면/home/user1/log_cut.txt에 Julius의 음성 인식 결과가 출력됩니다.

Node-RED에 내장



로컬 환경에 설치한 Node-RED에 액세스하여 아래 그림과 같이 내장해 갑니다.


처음에는 timestamp 노드와 inject node입니다. 일단 동작 확인을 마치면 정기 실행하도록 설정하는 것이 좋습니다.

Record wav 노드는 exec 노드로 만들어집니다. 마이크로 음성을 녹음하는 역할이 있습니다.


voice-recognition-julius 노드도 exec 노드로 만들어집니다. 녹음한 음성 데이터를 이용하여 방금전의 쉘 스크립트를 실행하는 역할이 있습니다.


get-output 노드는 file in 노드로 만들어집니다. 쉘 스크립트 실행 결과의 로그 파일을 호출하는 역할이 있습니다.


에서 마지막으로 debug 노드를 연결하고 화면 오른쪽 상단의 "배포"를 클릭하고 inject node를 실행하여 한 번에 움직이는지 확인하십시오. 디버그 결과에 음성 인식 결과가 표시되어야 합니다.

요약



음성 인식용의 독자적인 사전 없이 실행하면, 의도한 대로 인식되지 않는 것이 많기 때문에, 실제로 Julius를 사용하는 경우는, 독자적인 사전을 작성해, 쉘 스크립트(voice-recog.sh)내의 julius -C 의 때에 독자 사전을 읽어들이도록(듯이) 설정할 필요가 있습니다.
어쨌든, Node-RED상에서 Julius를 이용한 음성 인식에 의한 음성의 텍스트 변환에 대해서는 동작 확인할 수 있었습니다.

좋은 웹페이지 즐겨찾기