忍者ブログ

設備のマニアどっとこむ

設備、電子工作、DIYのブログ!

Juliusの辞書ファイルで音声認識の精度を上げた話

以前juliusを使って音声認識をやったのですが、いまいちで全然思った通りに認識しませんでした。

Raspberry pi  japanというfacebookのコミュニティで相談したところ、「辞書ファイルを使ってみては?」との事でした。 

実際に辞書ファイルを使ってみると驚くほどの認識、判別性能でした!!!

まずjuliues自体のインストール、設定はこちらを参考にしてください。



Juliusがうまく動いたとして・・。
julius直下にdictというフォルダを作ります。 ※フルパスだとhome/pi/julius/dict

greeting.yomi というファイルを作ります。
中身は
つけて つけて
けして けして
あつい あつい
さむい さむい
といった具合なのですがスペースを使うとうまくいかないのでtabキーで間隔をあけてください。
完成後は下記コマンドでgreeting.phoneというファイルができます。

iconv -f utf8 -t eucjp ~/julius/dict/greeting.yomi | ~/julius/julius-4.4.2.1/gramtools/yomi2voca/yomi2voca.pl | iconv -f eucjp -t utf8 > ~/julius/dict/greeting.phone

greeting.phoneの中身は
つけて ts u k e t e
けして k e sh i t e
あつい a ts u i
さむい s a m u i

というテキストができていれば成功です。さらにgreeting.grammarというファイルを作ります。
S : NS_B GREET NS_E
GREET : TSUKETE
GREET : KESHITE
GREET : ATSUI
GREET : SAMUI

これで辞書ファイルの準備は完了。ここから辞書ファイルを作るのですが、素直にカレントディレクトリを移動するやり方が無難です。
cd ~/julius/julius-4.4.2.1/gramtools/mkdfa

mkdfa.pl ~/julius/dict/greeting

このコマンドでgreeting.dfa greeting.dict greeting.termが作成されれば成功です!!

あとはjuliusコマンドに-gram ~/julius/dict/greeting をつけるだけです。

julius -C 任意の設定ファイル -gram ~/julius/dict/greeting -nostrip

この辞書ファイルのおかげで結果が4択になります!!

ついでにモジュールモードにしてLチカさせました。
julius -C 任意の設定ファイル -gram ~/julius/dict/greeting -module を動作させてから下記pythonコードを実行させます。
import time
import socket
import string
import json
import requests
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(17, GPIO.OUT)
host = 'ラズパイのIPアドレス'
port = 10500
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((host, port))
data = ""
while True:
      data = client.recv(4096).decode('utf-8')
      
      strTemp = ""
      for line in data.split('\n'):
        index = line.find('WORD="')
        if index != -1:
            line = line[index + 6:line.find('"', index + 6)]
            if line != "[s]":
                strTemp = strTemp + line
      if strTemp != "":
        print("結果:" + strTemp)
    
      if strTemp == "つけて[/s]":
        GPIO.output(17, True)  
      if strTemp == "けして[/s]":
        GPIO.output(17, False)
        
      
これで「つけて」というと17番ピンと接続したLEDが点灯し、「けして」というとLEDが消えるプログラムができました。
今までの誤認識がウソのようです!!

これなら100V回路で設備と組み合わせて「開けゴマ」的なことができるかもです。
※アドバイス頂いた方ありがとうございました。










拍手[0回]

PR

コメント

翻訳(Translate)

AD

シェアしてね

プロフィール

HN:
アルティメット雅史
性別:
男性
自己紹介:
製油所、データセンター、化学工場を渡り歩いた設備のマニア
最近はarduino,Raspberry pi等の電子工作にハマる。
取得資格は電験3種、消防設備士甲4、2級ボイラー技士、危険物乙4、電工2種、技術士補(電気・電子)、エネ電、フォークリフトほか

カウンター

お問い合わせ

忍者アクセスランキング