Raspberry PiにIP電話をかけると、音声ガイダンスで端末の状態を教えてくれると面白いなと思い、作ってみることにしました。
動作を収録した動画を撮りました。
py_Auto_Answering_Machine_360.mp4
SIP(Session Initiation Protocol)による着信に自動応答し、ガイダンスを発話、DTMF(Dual-Tone Multi-Frequency)入力を待ち受けます。DTMF入力があった場合、入力された値に応じて、CPU温度、メモリ容量、起動時間、ヘルプを発話します。相手が電話を切ると、待機状態に戻ります。プログラミング言語にはPython(2.7)を使っています。
-
PJSIP(PJSUA)
C言語で書かれたオープンソースのマルチメディアコミュニケーションライブラリ。 -
AquesTalk Pi
株式会社アクエストから公開されている音声合成プログラム。個人が非営利の目的に使う場合は無償で使える(感謝!!)。
-
PJSIP及びPJSUAをインストールします。(こちらにインストール方法を書いています)
-
AquesTalk Piをダウンロード及び展開します。(ダウンロードはこちらから。展開方法を説明したブログへのリンクも張られています。)展開先のパスが必要となりますので、控えておいてください。
-
ソースコード(auto_answering_machine.py)をダウンロードします。zipはこちら。
$ git clone https://github.com/ll0s0ll/Py_Auto_Answering_Machine.git
-
ディレクトリを移動して、実行します。auto_answering_machine.pyは、AquesTalk Piへのパスと、待ち受けのポート番号の指定が必要です。下記は、ホームディレクトリ下のaquestalkpiディレクトリにAquesTalk Piがあり、5060番ポートでSIPの接続を待ち受ける場合の例です。
$ cd Py_Auto_Answering_Machine/ $ python auto_answering_machine.py -a ~/aquestalkpi/AquesTalkPi -p 5060
-
プログラムが起動すると、PJSIPのログとともに下記が出力されると、SIPの接続を待機している状態になります。表示されるIPアドレスは、Raspberry PiのIPアドレスです。終了させる場合は「q」をタイプしてください。
Listening on 192.168.10.15 port 5060 Please type 'q' to quit
-
SIPに対応したソフトからRaspberry Piに電話をかけると、受話し、「こんにちは。こちらはラズベリーパイです。CPU温度を知りたい場合は、1を。メモリ状況を知りたい場合は、2を。起動時間を知りたい場合は、3を入力してください。途中で使い方を確認したくなった場合は、0を入力してください」と発話します。IPアドレスが192.168.10.3の’MacBook’と名付けた端末から電話をかけた場合は、以下のように出力されます。
Incoming call from "MacBook" <sip:[email protected]> Call with "MacBook" <sip:[email protected]> is EARLY last code = 180 (Ringing) Media is now active Call with "MacBook" <sip:[email protected]> is CONNECTING last code = 200 (OK) Call with "MacBook" <sip:[email protected]> is CONFIRMED last code = 200 (OK)
-
さらにDTMF入力をすると、入力された値により、Raspberry Piの端末の状況を、以下のように発話します。
-
0が入力された場合
「CPU温度を知りたい場合は、1を。メモリ状況を知りたい場合は、2を。起動時間を知りたい場合は、3を入力してください。途中で使い方を確認したくなった場合は、0を入力してください」 -
1が入力された場合
「ただいまのCPU温度はxx度です。」 -
2が入力された場合
「ただいまのメモリ状況は、トータルxxメガバイト中、xxメガバイトを使用、xxメガバイトの空きです。」 -
3が入力された場合
「起動してから、xx分経ちました」
-
-
電話を切ると、以下のように出力されて、待機状態に戻ります。終了する場合は「q」をタイプしてください。
Current call is None
-
-h オプションをつけて起動すると、簡単なヘルプを表示します。
$ python auto_answering_machine.py -h