前回で音声認識と出力まで行うことができた。
速度の問題は、ラズパイの性能問題が大きいので後回し。
今回は、音声認識の向上ということで、辞書作成に励みます。
参考にさせてもらったサイトは以下です。
Juliusの使い方(version 4.4.2 対応版)~ ラズベリーパイ研究室
Raspberry Pi3×Julius(読みファイルと文法ファイル)
どちらも、mkdfa をコピーしているところがあるので、ここを省かない方が良い。(未検証)
あと、yomi2voca.pl で読み用の辞書ファイルを作成することを記載しているところは、
utf8からeucjpへの変換をかけているけど、ここから下の文法ファイルを作成する際は、文字コードの変換はしなくても動作したことを、一応書いておく。
文法登録は、辞書ファイルと文法ファイルの二つを作成する。
単語登録のファイルを作成して、yomi2voca.pl で、読み方の変換を行ってから作成したらちょっと楽
ファイル名は同一であることが必要
文法ファイルの作成
参考サイトは「S」の行が先頭の一つだけ。
この場合、「ハロ」と声をかけても、必ず後ろに「元気」とか「検索」とかキーワードが入ってしまう。試しに上記のようにしてみたら、「ハロ」は単体として認識できた。
各ファイルの作成を実施
起動は、単純に辞書ファイルを作成した時と違うので注意。
「ハロ」と言ってみた場合
CLASSIDは、haro.vocaに記載した構文文字列の順番のよう。
これらをうまく使うと、2語以上の言葉もうまく制御できるだと思う。
それは次回で。
このあと、超気になるページを発見してしまった。非常に勉強になる。ここで使ってる声は良い!
Raspberry pi3をベースにしたAIスピーカをガッツリ作ってみた ~自作して分かった課題と対策~
速度の問題は、ラズパイの性能問題が大きいので後回し。
今回は、音声認識の向上ということで、辞書作成に励みます。
参考にさせてもらったサイトは以下です。
Juliusの使い方(version 4.4.2 対応版)~ ラズベリーパイ研究室
Raspberry Pi3×Julius(読みファイルと文法ファイル)
どちらも、mkdfa をコピーしているところがあるので、ここを省かない方が良い。(未検証)
あと、yomi2voca.pl で読み用の辞書ファイルを作成することを記載しているところは、
utf8からeucjpへの変換をかけているけど、ここから下の文法ファイルを作成する際は、文字コードの変換はしなくても動作したことを、一応書いておく。
文法登録は、辞書ファイルと文法ファイルの二つを作成する。
単語登録のファイルを作成して、yomi2voca.pl で、読み方の変換を行ってから作成したらちょっと楽
ファイル名は同一であることが必要
$ cd haro
$ cat haro.voca % TITLE ハロ h a r o % WO を w o % PLEASE 音楽 o N g a k u 検索 k e N s a k u おはよう o h a y o u こんにちは k o N n i ch i w a おやすみ o y a s u m i 元気 g e N k i 時間 j i k a N 時刻 j i k o k u 終わり o w a r i ストップ s u t o q p u 消して k e sh i t e アイカツ a i k a ts u % NS_B [s] silB % NS_E [s] silE
文法ファイルの作成
$ cat haro.grammar S : NS_B TITLE_ PLEASE NS_E S : NS_B TITLE_ NS_E TITLE_ : TITLE TITLE_ : TITLE WO
参考サイトは「S」の行が先頭の一つだけ。
この場合、「ハロ」と声をかけても、必ず後ろに「元気」とか「検索」とかキーワードが入ってしまう。試しに上記のようにしてみたら、「ハロ」は単体として認識できた。
各ファイルの作成を実施
$ ~/julius/julius-4.4.2/gramtools/mkdfa/mkdfa.pl haro
起動は、単純に辞書ファイルを作成した時と違うので注意。
$ julius -C ~/julius/grammar-kit-v4.1/hmm_mono.jconf -input mic -gram haro -module
「ハロ」と言ってみた場合
<RECOGOUT> <SHYPO RANK="1" SCORE="-1939.878174" GRAM="0"> <WHYPO WORD="[s]" CLASSID="3" PHONE="silB" CM="1.000"/> <WHYPO WORD="ハロ" CLASSID="0" PHONE="h a r o" CM="0.894"/> <WHYPO WORD="[s]" CLASSID="4" PHONE="silE" CM="1.000"/> </SHYPO> </RECOGOUT> 「ハロ 検索」 <RECOGOUT> <SHYPO RANK="1" SCORE="-2968.890869" GRAM="0"> <WHYPO WORD="[s]" CLASSID="3" PHONE="silB" CM="1.000"/> <WHYPO WORD="ハロ" CLASSID="0" PHONE="h a r o" CM="0.964"/> <WHYPO WORD="検索" CLASSID="2" PHONE="k e N s a k u" CM="0.477"/> <WHYPO WORD="[s]" CLASSID="4" PHONE="silE" CM="1.000"/> </SHYPO> </RECOGOUT> 「ハロ 音楽」 <RECOGOUT> <SHYPO RANK="1" SCORE="-2288.977051" GRAM="0"> <WHYPO WORD="[s]" CLASSID="3" PHONE="silB" CM="1.000"/> <WHYPO WORD="ハロ" CLASSID="0" PHONE="h a r o" CM="0.860"/> <WHYPO WORD="音楽" CLASSID="2" PHONE="o N g a k u" CM="0.958"/> <WHYPO WORD="[s]" CLASSID="4" PHONE="silE" CM="1.000"/> </SHYPO> </RECOGOUT> 「ハロ ストップ」 <RECOGOUT> <SHYPO RANK="1" SCORE="-2542.952393" GRAM="0"> <WHYPO WORD="[s]" CLASSID="3" PHONE="silB" CM="1.000"/> <WHYPO WORD="ハロ" CLASSID="0" PHONE="h a r o" CM="0.944"/> <WHYPO WORD="ストップ" CLASSID="2" PHONE="s u t o q p u" CM="0.978"/> <WHYPO WORD="[s]" CLASSID="4" PHONE="silE" CM="1.000"/> </SHYPO> </RECOGOUT>
CLASSIDは、haro.vocaに記載した構文文字列の順番のよう。
これらをうまく使うと、2語以上の言葉もうまく制御できるだと思う。
それは次回で。
このあと、超気になるページを発見してしまった。非常に勉強になる。ここで使ってる声は良い!
Raspberry pi3をベースにしたAIスピーカをガッツリ作ってみた ~自作して分かった課題と対策~
0 件のコメント:
コメントを投稿