付属のSDカードの中を見てみる

SDカードのバックアップ

・付属のSDカードにはべゼリーのプログラムだけでなく、音声認識システム、音声合成システム、日本語変換プログラムなどが入っています。あやまってこれらのファイルを壊してしまうかもしれないので、SDカードのまるごとバックアップをしておくことをお勧めします。

・SDカードをバックアップする最も簡単な方法は、8GB以上のmicro SDカードとUSB接続のSDカードリーダライターを使う方法です。

・ラズパイにSDカードリーダライターを接続して電源を入れ、スロットにmicroSDカードを挿入たら、デスクトップ画面からラズベリーアイコンをクリックし、「アクセサリ」→「SD Card Copier」を選びます。

・コピー元とコピー先を指定し「Start」を押すだけで、現在ラズパイに入っているmicro SDカードをまるごとコピーすることができます。

・8GBのSDカードを入れたのにも関わらず「容量不足でコピーできない」と言われることがありますが、これはスペック上同じ容量のSDカードであっても、メーカーや種類によって記憶可能な領域が異なるためです。その場合は別のカードを試すか、1段階大きな容量のカードを使ってください。

ラズパイのアップデート

・ラズパイの教本などをみると「sudo apt-get update, sudo apt-get upgrade, sudo rpi-updateでこまめにアップデートしましょう」などと書いてあるかもしれませんが、ラズパイをアップデートすることによってべゼリーのプログラムが動かなくなってしまう可能性がありますのでご注意ください。


システム構成

・以下はべゼリーの主なファイルの関係図になります。


~/bezelie/ディレクトリ

chatDialog.csv

・ユーザーの意図に対する、ベゼリーの返答のリストです。CSV形式です。
・同じ意図に対して複数の返答を記述することができます。どの返答が選ばれるかはランダムです。
・server_chat.jsによってブラウザから編集することができますが、エディタで直接編集することもできます。

chatEntity.csv
chatEntity.tsv
chatEntity.dic

・ユーザーからの質問の同意語のリストです。実際にjuliusが使うのはdicファイルなのですが、dicファイルはtsvファイルから生成されるため、server_chat.jsの中でまずcsvファイルとして作成したあと、tsvに変換し、さらにdicに変換しています。

chatIntent.csv

・ユーザーからの質問の意図のリストです。chatDialog.csvとchatEntity.csvを結びつけているキーワードのリストです。

~/bezelie/edgarディレクトリ

・このディレクトリはgitリポジトリです。リモートリポジトリが変更された場合、git pullで最新の状態にすることができます。逆に言うと、このディレクトリのファイルを自分なりに書き換えた場合、git pullすると上書きされてしまいますので、自分なりにファイルを書き換えるときはファイル名を変えることをお勧めします。

メインプログラム

demo_chat1.py

・python(パイソン)で記述された音声対話プログラムです。
・juliusが音声認識したテキストをソケット通信で受け取りますので、juliusが起動完了したあとに起動しないとエラーになります。
・対話リスト「chatDialog.csv」、設定ファイル「data_chat.json」を参照しています。
・非活動時間(ブラウザから設定します)には、発話しません。
・アラーム時間になると、mild設定では「朝ですよ」、hard設定では「朝だよ早く起きてー」と喋ります。

demo_face1.py

・pythonで記述された顔認識プログラムです。
・非活動時間(ブラウザから設定します)には、動作しません。

bezelie.py

・pythonで書かれたベゼリー専用ライブラリです。サーボドライバーボード(PCA9685)を通じて3つのサーボを動かすための関数が入っています。

server_Chat.js

・node jsで書かれたサーバーサイドプログラムです。PCやスマホのブラウザからアクセスすることで、ベゼリーの時間設定や対話データなどを編集することができます。
・起動するとlocalhostのポート3000でリクエストを待ち受けます。
・html描画のためにnode js用のテンプレートエンジン「ejs」を使っています。
・複数のブラウザから同時にアクセスし、同じファイルを編集しようとすると競合が発生します。直さなければならないのですが、直してません。ごめんなさい。

systemd設定ファイル

・ラズパイ起動時に各種のプログラムを自動的に起動するためのsystemd用設定ファイルです。

autoStart_julius.service

・起動時にboot_julius.shを自動起動するための設定ファイル。

autoStart_python.service

・起動時にboot_chatMode.shあるいはboot_faceModeを自動起動するための設定ファイル。

autoStart_dhcp.service

・起動時にboot_dhcp.shを自動起動するための設定ファイル。

autoStart_node.service

・起動時にboot_node.shを自動起動するための設定ファイル。

・これらの設定ファイルはsetting_chatMode.shあるいはsetting_faceModeを実行することで/etc/systemd/system/にコピーされ、さらにシンボルリンクファイルがmultiuser.targetディレクトリにコピーされることで自動実行が有効になります。

・逆にsetting_disableServer.shを実行することで、これらの自動実行は無効になります。

起動用シェルスクリプト

・autoStart_***.serviceによって起動時に自動実行されるシェルスクリプトです。
・setting_chatDemo.shあるいはsetting_faceDemoが実行されると、これらのファイルはopt/bezelie/binにコピーされます。

boot_chatMode.sh

・音声認識モードのpythonスクリプト「demo_chat1.py」を起動するためのシェルスクリプト。

boot_faceMode.sh

・顔認識モードのpythonスクリプト「face_chat1.py」を起動するためのシェルスクリプト。

boot_dhcp.sh

・dhcpサーバーを起動するためのシェルスクリプト。

boot_node.sh

・node JSプログラム「server_chat.js」を起動するためのシェルスクリプト。

boot_julius.sh

・音声認識エンジンJuliusをキーワード認識モードで起動するためのシェルスクリプト。
・「./boot_julius.sh」で実行できます。起動時に認識単語ファイル「chatEntity.dic」と設定ファイル「julius.jconf」を読み込みます。
・「モジュールモード」で起動するようになっているので、起動するとlocalhostの10500ポートでソケット通信を待ち受ける状態になります。
・起動中に動作チェックしたい場合は以下のプログラムをご利用ください。

boot_juliusNL.sh

・音声認識エンジンJuliusを自然言語モードで起動するためのシェルスクリプト。
・起動時に設定ファイル「juliusNL.jconf」を読み込みます。
・「モジュールモード」で起動するようになっているので、起動するとlocalhostの10500ポートでソケット通信を待ち受ける状態になります。

設定ファイル

data_chat.json

・スピーカー音量、時間設定、サーボのセンター位置などべゼリーの設定ファイルです。JSON形式で記述されています。
・server_chat.jsによってブラウザから編集することができますが、エディターで直接書き換えることもできます。

julius.jconf

・音声認識プログラム「julius」の音声キーワード認識用の設定ファイルです。boot_julius.sh実行時に同時に読み込まれます。
・単語辞書、音響モデル、音声認識条件などを設定しています。
・設定を変えたい場合はjulius設定マニュアルをご覧ください。

juliusNL.jconf

・音声認識プログラム「julius」の自然言語認識用の設定ファイルです。boot_juliusNL.sh実行時に同時に読み込まれます。

ツール

exec_camera.sh

・カメラの動作をチェックするためのシェルスクリプトです。

exec_openJTalk.sh

・音声合成プログラム「openJTalk」を実行するスクリプトです。
・コマンドラインから「sh openJTalk.sh “喋らせたい文字”」で喋らせることができます。
・パラメータを調整することで、声を変えることもできます。
・音声種はMMDAgent「mei_happy」を使用しています。Copyright 2009-2013 Nagoya Institute of Technology (MMDAgent Accessory “NIT Menu”)

setting_disableServer.sh

・ラズパイがサーバーモードで動作している時に実行すると、サーバーを無効化することができます。再起動後、クライアントとして立ち上がります。

setting_chatMode.sh

・ラズパイがクライアントモードで動作している時に実行すると、サーバーを有効化することができます。その後、再起動するとサーバーとして立ち上がります。

setting_faceMode.sh

・ラズパイがクライアントモードで動作している時に実行すると、サーバーを有効化することができます。その後、再起動するとサーバーとして立ち上がります。

check_runnings.sh

・server_chat.js, パイソンスクリプト, juliusが起動しているかどうかをチェックしたいときに使うツールです。
・実行中だった場合、プロセス番号が表示されるので、下記のようにすることでプロセスを停止することができます。

tool_killApps.sh

・server_chat.js、パイソンスクリプト、juliusを停止させます。

restart_app.sh

・パイソンスクリプトとjuliusをいったん終了されてから、また起動します。server_chat.jsの中で「プログラムの再起動」として使っています。

tool_juliusDic.sh

・chatEntity.cvsをchatEntity.dicに変換します。server_chat.jsを使わず、手動でentityデータを編集するときに使います。

サンプルpythonスクリプト

sample_print1.py
sample_talk1.py
sample_servo1.py
sample_servo2.py
sample_servo3.py
sample_julius1.py
sample_juliusNL1.py
sample_output1.py
sample_led1.py
sample_camera1.py
sample_face1.py
sample_vision1.py
sample_record1.py
sample_input1.py

・プログラムを学ぶためのサンプルです。分かりやすくするため、機能をしぼりこんでシンプルに書かれています。別ページで詳しく説明しています。

そのほか

Front_Center.wav

・サンプル音声ファイルです。スピーカーから音がでるかどうかをチェックしたいとき、下記を実行してスピーカーから「フロントセンター」と声がしたら正常です。

README.md

・gitHub用の説明ページです。markDownで書かれています。

.git

・隠しファイルです。「ls -a」で見ることができます。

~/bezelie/edgar/ejsディレクトリ

・node JSでhtmlページを簡単に生成するためのテンプレートエンジン「ejs」のテンプレートファイルが入っています。

~/bezelie/edgar/configディレクトリ

・ラズパイをアクセスポイント化するための、書き換えるファイルと、書き換える前のファイルが保存されています。


tips
べゼリーのgitリポジトリ

・べゼリーに付属しているSDカードの~/bezelie/edgar/ディレクトリに入っているファイル群はgitHubでも公開しており、ブラウザから閲覧することもできます。https://github.com/bezelie/edgar.git

・またインターネットにつながったリナックスであれば、下記のコマンドでローカルにコピーすることもできます。