EnsekiTT Blog

EnsekiTTが書くブログです。

RaspberryPiにJuliusいれて話しかける話(自前の辞書編)

こんにちは、えんせきです。
VRがやりたいんですが、僕デバイス持ってないんですよね。
会社には別のがあるので色々遊ばせてもらえるのですが、やっぱりお家でゲームしたりVRChatしたりしたいです。

つまりなにしたの?

RaspberryPiに話しかける時の辞書を自分好みにチューニングする必要があることがわかったので、
自前の辞書を用意して、「長門有希俺の嫁」に反応してもらう。
f:id:ensekitt:20180402001135j:plain

前回まではなにしたの?

ensekitt.hatenablog.com
環境の準備を行って、
ensekitt.hatenablog.com
Juliusの動作確認まで行った。

Juliusってなに?*1

音声認識システムの開発・研究のためのオープンソースの高性能な汎用大語彙連続音声認識エンジン。
汎用→普通の話し言葉
大語彙→たくさんの語彙
音声認識→音声を認識してくれる
C言語でつくられていて、商用利用も大丈夫みたい。すばらしい。
julius.osdn.jp

流れ

(準備編)環境の準備(先日の記事と重複があります)
(Juliusインストール編)Juliusとディクテーションキットのインストールして動作確認
(自前の辞書編)Juliusに好きな単語で話しかける ← 今日はここ

独立単語認識用の辞書を作る

作業場所の準備

$ ls /path/to/julius/environment
dictation-kit-v4.4 grammar-kit-4.3.1  julius-4.4.2.1 # コレのある場所に新しくmydictを用意する
$ mkdir mydict
$ cd mydict

words.yomi

長門有希は俺の嫁        ながとゆきわおれのよめ
オッケー縁石    おっけええんせき

に反応して欲しい言葉と読み方を書き込む。
左から「言葉、タブ区切り、読み方」

辞書ファイルに変換する

UTF-8の読みをEUCJPに変換してyomi2voca.plに読ませる。これはJuliusに一緒に入っているのでパスが通っていれば大丈夫。

iconv -f utf8 -t eucjp words.yomi | yomi2voca.pl > words.dic

jconfファイルを作成する

dictation-kit/main.jconf at master · julius-speech/dictation-kit · GitHub
を参考に作る。

-w words.dic # さっき用意した辞書ファイル
-d model/lang_m/bccwj.60k.bingram
## 単語辞書ファイル
-v ../dictation-kit-v4.4/model/lang_m/bccwj.60k.htkdic
## 音響HMM定義ファイル
-h ../dictation-kit-v4.4/model/phone_m/jnas-tri-3k16-gid.binhmm
-hlist ../dictation-kit-v4.4/model/phone_m/logicalTri

-n 1			# 第2パスで見つける文の数(文数)
-output 1		# 第2パスで見つかった文のうち出力する数 (文数)
-zmeanframe		# フレーム単位のDC成分除去を行う (HTKと同処理)

-input mic		# マイクから直接入力
-input alsa

#### 短時間瞬時入力の棄却
-rejectshort 800	# 指定ミリ秒以下の長さの入力を棄却する

-charconv euc-jp utf8	# 出力文字コード変換を行う
-lv 2000		# レベルのしきい値 (0-32767)

実行する

$ ALSADEV="plughw:0,0" julius -C words.jconf

Stat: "plughw:0,0": C920 [HD Pro Webcam C920] device USB Audio [USB Audio] subdevice #0
STAT: AD-in thread created
<<< please speak >>>Warning: strip: sample 0-127 has zero value, stripped
pass1_best: オッケー縁石
pass1_best_wordseq: オッケー縁石
pass1_best_phonemeseq: silB o q k e i e N s e k i silE
pass1_best_score: -3693.302734
sentence1: オッケー縁石
wseq1: オッケー縁石
phseq1: silB o q k e i e N s e k i silE
cmscore1: 0.795
score1: -3693.302734

pass1_best: 長門有希は俺の嫁
pass1_best_wordseq: 長門有希は俺の嫁
pass1_best_phonemeseq: silB n a g a t o y u k i w a o r e n o y o m e silE
pass1_best_score: -4239.904297
sentence1: 長門有希は俺の嫁
wseq1: 長門有希は俺の嫁
phseq1: silB n a g a t o y u k i w a o r e n o y o m e silE
cmscore1: 1.000
score1: -4239.904297

ということで、ちゃんと長門有希俺の嫁になった。
ただ、残念ながらある程度の音量があるとオッケー縁石と長門有希俺の嫁と認識する。
これではトリガーにするのは難しいかもしれん。

*1:前前回の記事の再掲

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。