気の向くままに辿るIT/ICT/IoT
webzoit.net
IoT・電子工作

Raspberry Piあれこれ

ウェブ造ホーム前へ次へ
サイト内検索
カスタム検索
Raspberry Piって?

Raspberry Piあれこれ

Raspberry Piあれこれ

2019/02/07

 ラズパイをサーバとして運用してから約3年、電子工作・IoTを始めてみようと思い立ってから約2年。

 そんな中、以前、ラズパイでのIoT第1弾としてJulius、Open JTalkベースのスマートスピーカーを、ESP8266/ESP32による自作スマートリモコン自作スマートコンセントを作り、これらの連携もとり、結果的にスマートホーム化を進めています。

 また、サブマシンデスクトップPC Pavilionの周辺機器+ラズパイでパソコン、壊れた先代メインマシンでRaspberry Pi 3 Model B+とノートPC液晶他でパソコン化してみたりもしています。

 IoTデバイスとしては、ArduinoやESP8266/ESP32でできることも多く、コスト含め、ラズパイでなくては!と思えるような第2弾は、なかなか思いつきそうもありませんが、ラズパイスマートスピーカーなどのIoTデバイスを中心にラズパイ関連でデバイスや機能追加以外の何かがあれば、ここに書いていこうと思います。

Juliusの認識精度に異変!?

2019/02/07

 我が家には、ラズパイスマートスピーカーと、この自作スマートスピーカー機能をパソコン/Debian(Linux)にも入れて運用中で、PC版で検証後、ラズパイ版に反映させており、いわば同期を取っています。

 が、ESP-01/12/ESP32でSHARP AQUOS TVをWiFi操作する機能を実装、自作ラズパイスマートスピーカーでテレビを音声操作できるようにしたところ、ラズパイ版スマートスピーカーでもパソコン版スマートスピーカーでも急にJuliusの認識精度が見る影もなくガタ落ちしてしまった...。

 なぜか、ラズパイ版が先にこの症状に見舞われ、1日遅れ程度でパソコン版スマートスピーカーも同様となりました。

 何れも少なくとも機能追加した直後は、何の問題もなく、音声認識できていたため、辞書追加に起因しているようだということに、気づくのが遅れました。

 Juliusでは、dictation-kit 4.4を使っており、-moduleモードを外し、入力モード?として確認、明らかに認識精度が落ちていることに気づき、オリジナル辞書からテレビ操作関連を除いた(バックアップから元に戻した)ところ、何れのスマートスピーカーでも以前のように正常に認識、機能するようになりました。

<sil> [] silB
<sil> [] silE
<sp> [] sp
スタンバイ [スタンバイ] s u t a N b a i
ニュートラル [ニュートラル] n u t o r a r u
照明起動 [照明起動] sh o u m e i k i d o u
ライト点ける [照明起動] r a i t o t u k e r u
ライト点けて [照明起動] r a i t o t u k e t e
電気点けて [照明起動] d e N k i t u k e t e
照明停止 [照明停止] sh o u m e i t e i sh i
ライト消す [照明停止] r a i t o k e s u
ライト消して [照明停止] r a i t o k e s i t e
電気消して [照明停止] d e N k i k e s i t e
暖房起動 [暖房起動] d a N b o u k i d o u
暖房つける [暖房起動] d a N b o u t u k e r u
暖房つけて [暖房起動] d a N b o u t u k e t e
暖房停止 [暖房停止] d a N b o u t e i sh i
暖房止めて [暖房停止] d a N b o u t o m e t e
暖房消す [暖房停止] d a N b o u k e s u
暖房消して [暖房停止] d a N b o u k e s i t e
冷房起動 [冷房起動] r e: b o: k i d o u
冷房つける [冷房起動] r e: b o: t u k e r u
冷房つけて [冷房起動] r e: b o: t u k e t e
冷房停止 [冷房停止] r e: b o: t e i sh i
冷房消す [冷房停止] r e: b o: k e s u
冷房消して [冷房停止] r e: b o: k e sh i t e
冷房止めて [冷房停止] r e: b o: t o m e t e
除湿して [除湿起動] j o s i t u sh i t e
除湿消して [除湿停止] j o sh i t u k e sh i t e
除湿止めて [除湿停止] j o sh i t u t o m e t e
エアコン消して [エアコン停止] e a k o N k e s i t e
テレビつけて [テレビ起動] t e r e b i t u k e t e
テレビ消して [テレビ停止] t e r e b i k e s i t e
1ch [1ch] i q ch a N
2ch [2ch] n i ch a N
3ch [3ch] s a N ch a N
4ch [4ch] y o N ch a N
5ch [5ch] g o ch a N
6ch [6ch] r o k u ch a N
7ch [7ch] n a n a ch a N
8ch [8ch] h a q ch a N
9ch [9ch] ky u: ch a N
10ch [10ch] j u q ch a N
11ch [11ch] j u: i q ch a N
12h [12ch] j u: n i ch a N
音上げて [TV音量アップ] o t o a g e t e
音下げて [TV音量ダウン] o t o s a g e t e
番組表 [番組表] b a N g u m i hy o u
番組情報 [番組情報] b a N g u m i j o: h o u
戻る [戻る] m o d o r u
戻して [戻る] m o d o sh i t e
終了 [終了] sh u: ry o u
決定 [決定] k e q t e i
dボタン [dボタン] d i: b o t a N
上矢印 [上矢印] u e y a j i r u sh i
下矢印 [下矢印] sh i t a y a j i r u sh i
左矢印 [左矢印] h i d a r i y a j i r u sh i
右矢印 [右矢印] m i g i y a j i r u sh i
青ボタン [青ボタン] a o b o t a N
赤ボタン [赤ボタン] a k a b o t a N
緑ボタン [緑ボタン] m i d o r i b o t a N
黄ボタン [黄ボタン] k i b o t a N
地上デジタル [地上デジタル] t i j o: d e j i t a r u
BS放送 [BS放送] b i: e s u h o: s o u
CS放送 [CS放送] sh i: e s u h o: s o u
アナログ放送 [アナログ放送] a n a r o g u h o: s o u
十二支 [十二支] j u: n i sh i
干支は [十二支] e t o w a
旧暦の月 [旧暦] ky u: r e k i n o t u k i
ニュース [ニュース] ky o n o ny u: s u
ABCニュース [ABCAustraliaNews] e: b i: sh i: ny u: s u
BBCニュース [BBCWorldNews] b i: b i: sh i: ny u: s u
今何時 [時刻報告] i m a n a N j i
今日何日 [日付報告] ky o n a N n i t i
今日何曜日 [曜日報告] ky o n a N y o: b i
今日の天気は [今日天気] ky o n o t e N k i w a
今日の天気 [今日天気] ky o n o t e N k i
明日の天気は [明日天気] a sh i t a n o t e N k i w a
明日の天気 [明日天気] a sh i t a n o t e N k i
明後日の天気は [明後日天気] a s a q t e n o t e N k i w a
明後日の天気 [明後日天気] a s a q t e n o t e N k i
今日の気温は [今日気温] ky o n o k i o N w a
今日の気温 [今日気温] ky o n o k i o N
明日の気温は [明日気温] a sh i t a n o k i o N w a
明日の気温 [明日気温] a sh i t a n o k i o N
音楽かけて [音楽再生] o N g a k u k a k e t e
JWAVE [JWAVE] j e i u e i b u
InterFM897 [InterFM897] i N t a: e f u e m u
TokyoFM [TokyoFM] t o: ky o: e f u e m u
bayfm78 [bayfm78] b e i e f u e m u
NACK5 [NACK5] n a q k u f a i b u
FMヨコハマ [FMヨコハマ] e f u e m u y o k o h a m a
TBSラジオ [TBSラジオ] t i: b i: e s u r a j i o
ニッポン放送 [ニッポン放送] n i q p o N h o u s o u
ラジオ日本 [ラジオ日本] r a j i o n i q p o N
文化放送 [文化放送] b u N k a h o u s o u
ラジオNIKKEI第1 [ラジオNIKKEI第1] n i q k e i d a i i ch i
ラジオNIKKEI第2 [ラジオNIKKEI第2] n i q k e i d a i n i
放送大学 [放送大学] h o u s o u d a i g a k u
東京NHK第1 [東京NHK第1] e n u e ch i k e: d a i i ch i
東京NHK第2 [東京NHK第2] e n u e ch i k e: d a i n i
東京NHKFM [東京NHKFM] e n u e ch i k e: e f u e m u
調布FM [調布FM] ch o: f u e f u e m u
JAZZ [JAZZ] j a z u
CLASSIC [CLASSIC] k u r a sh i q k u
BLUES [BLUES] b u r u: s u
ラジオ停止 [ラジオ停止] r a j i o t e i sh i
ラジオ止めて [ラジオ停止] r a j i o t o m e t e
ラジオ消して [ラジオ停止] r a j i o k e sh i t e
プレイヤー停止 [ラジオ停止] p u r e i y a: t e i sh i
プレイヤー止めて [ラジオ停止] p u r e i y a: t o m e t e
プレイヤー消して [ラジオ停止] p u r e i y a: k e sh i t e

 このテレビ操作用に追加した辞書は、パソコン版からscpコピーしたものを使ったのでパソコン版とラズパイ版は同じもの。

 「テレビつけて」「テレビ消して」は以前から登録済みなのでさておきます。

 茶色の太字部分が、テレビ操作用に追加したもので、これらを削除し、元に戻したら、ラズパイスマートスピーカーでも、あっさり、音声認識できました。

 これは、ファイルエンコーディングがutf8ですが、もちろん、Julius dictation-kit-v4.4用辞書として反映させるには、eucjpに変換する必要があります。

 テレビ関連の操作ワードしか考えなかったけど、他の家電と被るワードは、「テレビの」など枕詞を付けないと区別できなくなるので注意。

 ちなみに気づけば、[今日]の読み[ky o]に長音記号[:]や[u]を付け忘れていますが、なぜか、影響なく、ちゃんと機能しています。

<sil> [] silB
<sil> [] silE
<sp> [] sp
スタンバイ [スタンバイ] s u t a N b a i
ニュートラル [ニュートラル] n u t o r a r u
照明起動 [照明起動] sh o u m e i k i d o u
ライト点ける [照明起動] r a i t o t u k e r u
ライト点けて [照明起動] r a i t o t u k e t e
電気点けて [照明起動] d e N k i t u k e t e
照明停止 [照明停止] sh o u m e i t e i sh i
ライト消す [照明停止] r a i t o k e s u
ライト消して [照明停止] r a i t o k e s i t e
電気消して [照明停止] d e N k i k e s i t e
暖房起動 [暖房起動] d a N b o u k i d o u
暖房つける [暖房起動] d a N b o u t u k e r u
暖房つけて [暖房起動] d a N b o u t u k e t e
暖房停止 [暖房停止] d a N b o u t e i sh i
暖房止めて [暖房停止] d a N b o u t o m e t e
暖房消す [暖房停止] d a N b o u k e s u
暖房消して [暖房停止] d a N b o u k e s i t e
冷房起動 [冷房起動] r e: b o: k i d o u
冷房つける [冷房起動] r e: b o: t u k e r u
冷房つけて [冷房起動] r e: b o: t u k e t e
冷房停止 [冷房停止] r e: b o: t e i sh i
冷房消す [冷房停止] r e: b o: k e s u
冷房消して [冷房停止] r e: b o: k e sh i t e
冷房止めて [冷房停止] r e: b o: t o m e t e
除湿して [除湿起動] j o s i t u sh i t e
除湿消して [除湿停止] j o sh i t u k e sh i t e
除湿止めて [除湿停止] j o sh i t u t o m e t e
エアコン消して [エアコン停止] e a k o N k e s i t e
テレビつけて [テレビ起動] t e r e b i t u k e t e
テレビ消して [テレビ停止] t e r e b i k e s i t e
1ch [1ch] i q ch a N
2ch [2ch] n i ch a N
3ch [3ch] s a N ch a N
4ch [4ch] y o N ch a N
5ch [5ch] g o ch a N
6ch [6ch] r o k u ch a N
7ch [7ch] n a n a ch a N
8ch [8ch] h a q ch a N
9ch [9ch] ky u: ch a N
10ch [10ch] j u q ch a N
11ch [11ch] j u: i q ch a N
12h [12ch] j u: n i ch a N
テレビの音上げて [TV音量アップ] t e r e b i n o o t o a g e t e
テレビの音下げて [TV音量ダウン] t e r e b i n o o t o s a g e t e
番組表 [番組表] b a N g u m i hy o u
番組情報 [番組情報] b a N g u m i j o: h o u
十二支 [十二支] j u: n i sh i
干支は [十二支] e t o w a
旧暦の月 [旧暦] ky u: r e k i n o t u k i
ニュース [ニュース] ky o n o ny u: s u
ABCニュース [ABCAustraliaNews] e: b i: sh i: ny u: s u
BBCニュース [BBCWorldNews] b i: b i: sh i: ny u: s u
今何時 [時刻報告] i m a n a N j i
今日何日 [日付報告] ky o n a N n i t i
今日何曜日 [曜日報告] ky o n a N y o: b i
今日の天気は [今日天気] ky o n o t e N k i w a
今日の天気 [今日天気] ky o n o t e N k i
明日の天気は [明日天気] a sh i t a n o t e N k i w a
明日の天気 [明日天気] a sh i t a n o t e N k i
明後日の天気は [明後日天気] a s a q t e n o t e N k i w a
明後日の天気 [明後日天気] a s a q t e n o t e N k i
今日の気温は [今日気温] ky o n o k i o N w a
今日の気温 [今日気温] ky o n o k i o N
明日の気温は [明日気温] a sh i t a n o k i o N w a
明日の気温 [明日気温] a sh i t a n o k i o N
音楽かけて [音楽再生] o N g a k u k a k e t e
JWAVE [JWAVE] j e i u e i b u
InterFM897 [InterFM897] i N t a: e f u e m u
TokyoFM [TokyoFM] t o: ky o: e f u e m u
bayfm78 [bayfm78] b e i e f u e m u
NACK5 [NACK5] n a q k u f a i b u
FMヨコハマ [FMヨコハマ] e f u e m u y o k o h a m a
TBSラジオ [TBSラジオ] t i: b i: e s u r a j i o
ニッポン放送 [ニッポン放送] n i q p o N h o u s o u
ラジオ日本 [ラジオ日本] r a j i o n i q p o N
文化放送 [文化放送] b u N k a h o u s o u
ラジオNIKKEI第1 [ラジオNIKKEI第1] n i q k e i d a i i ch i
ラジオNIKKEI第2 [ラジオNIKKEI第2] n i q k e i d a i n i
放送大学 [放送大学] h o u s o u d a i g a k u
東京NHK第1 [東京NHK第1] e n u e ch i k e: d a i i ch i
東京NHK第2 [東京NHK第2] e n u e ch i k e: d a i n i
東京NHKFM [東京NHKFM] e n u e ch i k e: e f u e m u
調布FM [調布FM] ch o: f u e f u e m u
JAZZ [JAZZ] j a z u
CLASSIC [CLASSIC] k u r a sh i q k u
BLUES [BLUES] b u r u: s u
ラジオ停止 [ラジオ停止] r a j i o t e i sh i
ラジオ止めて [ラジオ停止] r a j i o t o m e t e
ラジオ消して [ラジオ停止] r a j i o k e sh i t e
プレイヤー停止 [ラジオ停止] p u r e i y a: t e i sh i
プレイヤー止めて [ラジオ停止] p u r e i y a: t o m e t e
プレイヤー消して [ラジオ停止] p u r e i y a: k e sh i t e

 そこで今度は、テレビ操作用ワードを割と実用的なもの、チャンネルと音量、要らないかもしれませんが、番組表と番組情報だけに絞ってみることにしました。

 ちなみに音量については、「テレビの」も追加してみました。

 現在のところ、認識精度に違和感なく、正常に機能している...ので様子見。

 ワード数の限界?というほど多くありませんが...標準辞書も含めるとオーバーってことか?それともエラーにはならかなったものの、実はJuliusを惑わせるNGワードがあった?

 尚、Juliusの認識精度は、デフォルトのスピード重視しつつ、精度も良いモードであり、これを精度重視にもできるとはありますが、精度向上は、1%程度とあり、あまり意味はなさげと思い、試してはいません。

 ちなみに激安USBハブに起因するのか、修正後、PCを再起動するとUSB系のエラーが出たり、これが出ず、PCに挿し直しても、なぜか、マイクを認識しなくなることがあり、sudo modprobe snd_usb_audioしてみたら、PCに挿した状態では、認識するようになりました。

 と思いましたが、そもそも直挿しのラズパイでも同じようなことがあったため、USBハブの問題はさておき、sudo modprobe snd_usb_audioする必要に迫られることもある模様。

 ただ、実行前後でsudo modprobe -cした時にsnd_usb_audioの設定値は変わってないんだけど、たまたま改善されたように見えただけで実は、この操作関係ない?

Juliusの単語辞書と文法辞書

2019/02/07

 Julius/Open JTalkベースの自作ラズパイスマートスピーカーESP8266/ESP32による自作スマートリモコン自作スマートコンセントがあるのですが、家電を無線操作するにあたり、Juliusの辞書の扱いをイマイチ理解できていないのか、判然とせず、明快な答えを探しています。

 現在は、単語辞書で実装して、うまく機能しているので良いのですが、文法辞書を併用すれば、単語辞書の行数を低減できつつ、より柔軟に音声を認識してくれます気がしなくもないと思うのですが、考えれば考えるほど、やっぱり、そうはならない気がする...。

 いや、音声の認識だけでよいのなら、併用すれば、思惑通りにはなりますが、Juliusから応答スクリプトにテキストを渡そうとすると...。

 もちろん、単語辞書は「単語」であり、文法辞書が「文法」なのは、わかるし、単語辞書を補う形で文法辞書を併用できることもわかる。

 つまり、「テレビ」「エアコン」「扇風機」などにおいて重複させることなく「つけて」「けして」などを共用できることはわかる。

 が、単語辞書なら、第2フィールドの[]でJuliusから出力するテキストを明示できますが、文法辞書では、たぶんできない。

 となると応答スクリプト側でテキストを受け取ることを考えた場合、操作呼びかけワードに「揺れ」があるとすると、この揺れのバリエーションを含めて複数行を「単語辞書」に書くことになるんだよね?だとしたら、文法辞書で揺れを補完できても意味ないんじゃ?というのが、自身の今の認識。

 たとえば、「テレビをつけて」「テレビつけて」「テレビONして」という音声の場合、それら全てを[テレビをオン]とテキスト出力させたい場合、単語辞書にそれら3行を全て書くことで実装できます。

 でも、これを文法辞書で「つけて」「をつけて」「ONして」を「扇風機」などと共用できれば、より合理的に辞書を作ることができそう...だけど、そうだとしたら、「単語辞書」の出力テキストとなる[テレビをオン]を応答スクリプトに渡すためには、「単語辞書」においてテレビをつける操作の場合、その行の第1フィールドをどう書けばよいのか?という疑問が残る。

 仮に文法辞書で助詞や後置子を共用して単語辞書に「テレビ」と書くとして「をつけて」「つけて」「ONして」全てのバリエーションを音声として正しく認識はしてくれますでしょうが、これらが何れも「テレビをつける」という意味であることを認識することは、できない...できるとすれば単語辞書の出力テキスト[テレビをオン]しかないのではないか?...と。

 結局、この場合、文法辞書を使わず、単語辞書に3行書くしかないってことなら、自身の認識と合致はするけど、なんかモヤモヤする...みたいな。

 第7章 言語モデル by Juliusが、これに関わると思われますが、自身が読解できていないだけ?

 ん?「つける」と「けす」...を別々の文法辞書にすればよいのか?

 「つけて」「をつけて」「をONにして」など「つける」意味のみから成る文法辞書を作成しつつ、単語辞書には、その一例としてテレビなら"テレビをつけて [テレビをON] t e r e..."と書いておけば、「テレビつけて」「テレビをONにして」と音声操作しても認識してくれます...のか?

 でも、それだと「テレビの音量上げて」、「テレビの音量下げて」...も別々の文法辞書になってかえって非合理的か...んーーー...。

 気づけば、2019/01/03にリリースされてたJulius 4.5に乗り換えつつ、検証してみようかな...。

ウェブ造ホーム前へ次へ