Skip to content

Raspberry PiとPJSIP、AquesTalk Piを使って自動応答の音声ガイダンスを作る

Notifications You must be signed in to change notification settings

ll0s0ll/Py_Auto_Answering_Machine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

PJSIPとAquesTalk Piを使って自動応答の音声ガイダンスを作る

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
    株式会社アクエストから公開されている音声合成プログラム。個人が非営利の目的に使う場合は無償で使える(感謝!!)。

使い方

  1. PJSIP及びPJSUAをインストールします。(こちらにインストール方法を書いています)

  2. AquesTalk Piをダウンロード及び展開します。(ダウンロードはこちらから。展開方法を説明したブログへのリンクも張られています。)展開先のパスが必要となりますので、控えておいてください。

  3. ソースコード(auto_answering_machine.py)をダウンロードします。zipはこちら
    $ git clone https://github.com/ll0s0ll/Py_Auto_Answering_Machine.git

  4. ディレクトリを移動して、実行します。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
    
  5. プログラムが起動すると、PJSIPのログとともに下記が出力されると、SIPの接続を待機している状態になります。表示されるIPアドレスは、Raspberry PiのIPアドレスです。終了させる場合は「q」をタイプしてください。

    Listening on 192.168.10.15 port 5060
    Please type 'q' to quit
    
  6. SIPに対応したソフトからRaspberry Piに電話をかけると、受話し、「こんにちは。こちらはラズベリーパイです。CPU温度を知りたい場合は、1を。メモリ状況を知りたい場合は、2を。起動時間を知りたい場合は、3を入力してください。途中で使い方を確認したくなった場合は、0を入力してください」と発話します。IPアドレスが192.168.10.3の’MacBook’と名付けた端末から電話をかけた場合は、以下のように出力されます。

    Incoming call from "MacBook" <sip:MacBook@192.168.10.3>
    Call with "MacBook" <sip:MacBook@192.168.10.3> is EARLY last code = 180 (Ringing)
    Media is now active
    Call with "MacBook" <sip:MacBook@192.168.10.3> is CONNECTING last code = 200 (OK)
    Call with "MacBook" <sip:MacBook@192.168.10.3> is CONFIRMED last code = 200 (OK)
    
  7. さらにDTMF入力をすると、入力された値により、Raspberry Piの端末の状況を、以下のように発話します。

    • 0が入力された場合
      CPU温度を知りたい場合は、1を。メモリ状況を知りたい場合は、2を。起動時間を知りたい場合は、3を入力してください。途中で使い方を確認したくなった場合は、0を入力してください

    • 1が入力された場合
      ただいまのCPU温度はxx度です。

    • 2が入力された場合
      ただいまのメモリ状況は、トータルxxメガバイト中、xxメガバイトを使用、xxメガバイトの空きです。

    • 3が入力された場合
      起動してから、xx分経ちました

  8. 電話を切ると、以下のように出力されて、待機状態に戻ります。終了する場合は「q」をタイプしてください。
    Current call is None

  9. -h オプションをつけて起動すると、簡単なヘルプを表示します。
    $ python auto_answering_machine.py -h

About

Raspberry PiとPJSIP、AquesTalk Piを使って自動応答の音声ガイダンスを作る

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages