複数ロボット自然会話システム(3)

LINEで送る
Pocket

複数ロボット自然会話システム(3)

複数ロボット自然会話システム(1)
複数ロボット自然会話システム(2)
複数ロボット自然会話システム(3)
複数ロボット自然会話システム(4)

複数ロボット自然会話システム

インターネットで繋がった複数の自然会話ロボットがロボット同士でお互いに自然会話を行うシステムです。
各ロボットは、音声認識、自然会話、音声合成の機能を有し、3種の会話モードで会話しまします。

3つのモード:

  • 対談モード(2人で会話する)
  • 鼎談(ていだん)モード(3人で会話する)
  • 会談モード(4人以上の複数のロボットがお互いに会話する)

 システムは、システムを管理するサーバーと複数のロボットから構成される。
サーバーのMySQLデータベースサーバーに会話内容とログ情報を保存する。
会話内容は、ある特定の話題について会話を行うことができ、その話題の「キーワード」でインターネットから情報検索してその内容を会話の材料にして、会話内容を膨らませていきます。

    1. システム構成図:
      1. サーバーには、ホームページ、WebサービスAPI、MySQLデータベースを設置。サーバーでの開発言語は、PHPを利用。
      2.  ロボットAには、サーバープログラムとクライアントプログラムを設置。サーバープログラムは、サーバーのWebサービスAPIと連携してシステム全体を管理する。クライアントプログラムは、ロボット同士の会話処理を行う。
      3.  ロボットA以外のロボットには、クライアントプログラムのみを設置。
      4.  サーバーと各ロボットは、インターネットで繋ぐ。
      5.  ロボットは、複数台繋ぐことができる。
      6.  ロボットは、インターネット上の各種(AI)クラウドWebサービスなどを利用する。
      7.  各ロボットは、WebサービスAPIで、サーバーと交信する。
      8.  サーバーは、NTTのレンタルサーバー、ロボットのハードウェアは、RaspberryPiのマイクロコンピュータ。ロボットのプログラミング言語は、python。

  1. サーバー・ソフトウェア構成
    1. ホームページ、サーバーは、OCNホスティングのBizメール&ウェブビジネスを利用。
    2.  WebサービスAPI(複数ロボット管理プログラム、ログ情報管理プログラム)
    3.  開発プログラミング言語は、PHPバージョン5.6
    4.  MySQLデータベースのバージョン5.1.73(会話情報、ログ情報、制御情報など)

 

  1. クライアント・ソフトウェア構成 
    1. OSは、RaspberryPiに特化したLinuxのRaspbian
    2. ロボットには、音声入力、音声認識、自然会話、音声合成処理のソフトウェアパッケージを利用。
      1) 音声入力:SOX(Sound eXchange)ライブラリ
      2) 音声認識:Google Speech API
      3) 自然会話:docomo雑談会話API 4) 音声合成:Open JTalk
    3. ロボットのプログラム
      1) 会話処理プログラム
      2) サーボ制御プログラム(ロボットの頭、手の動きを実現)
      3) LED制御プログラム(ロボットの目の点滅など)
      4) WebサービスAPIプログラム(サーバーとの交信含む)
      5) ログ情報収集プログラム

 

 

LINEで送る
Pocket

複数ロボット自然会話システム(1)

LINEで送る
Pocket

複数ロボット自然会話システム(1)

 

複数ロボット自然会話システム(1)
複数ロボット自然会話システム(2)
複数ロボット自然会話システム(3)
複数ロボット自然会話システム(4)

複数ロボット自然会話システムの「要件定義」

システム概要:

インターネットで繋がった複数の自然会話ロボットがロボット同士でお互いに自然会話を行うシステムです。

各ロボットは、音声認識、自然会話、音声合成の機能を有し、3種の会話モードで会話する。

3つのモード:
対談モード(2人で会話する)
鼎談(ていだん)モード(3人で会話する)
会談モード(4人以上の複数のロボットがお互いに会話する)

システムは、システムを管理するサーバーと複数のロボットから構成される。
サーバーのMySQLデータベースサーバーに会話内容とログ情報を保存する。

会話内容は、ある特定の話題について会話を行うことができ、その話題の「キーワード」でインターネットから情報検索してその内容を会話の材料にして、会話内容を膨らませていきます。

要件定義:

      1. サーバープログラムで参加ロボットを管理(参加ロボット、スタンバイ状態など)
      2.  会話開始の合図(全ロボットがスタンバイ状態になる)と会話終了の合図(会話回数)をサーバープログラムが行う。
      3. 最初、全てのロボットに、会話開始時刻に合わせて、「こんにちは」または「こんばんは」の挨拶を設定する。
      4. 各ロボットは、会話開始の合図でサーバーから「会話文」をWebサービスAPI機能で、受信(JSON形式)する。
      5. 各ロボットは、「会話文」を受信したら、その「会話文」をレスポンダー(AIクラウド含む)に渡し、「応答文」を受けとる。
      6. 各ロボットは、その「応答文」をサーバーに、WebサービスAPI機能で送信する。
      7. 参加ロボットの会話形式は、次の3モードを選択できる。モード設定は会話開始時にサーバープログラムが行う。
        (1)対談モード(2人で話す。対話)、(2)鼎談(ていだん)モード(3人で向かい合って話すこと。)、(3)会談モード(4人以上で会話する。懇談、座談)
      8. 対談モードは、順列(重複あり)Permutations with repetitionで、管理する。
        「順列(重複あり)」にした理由は、各ロボットが独り言の会話ができるようにしたためである。
        nΠr=nr 仮に、3ロボットが対談する場合は、3Π2=3²=9通りのパターンで管理する。(構成図参照)
      9. 鼎談モードは、組合せ Combinations で、管理する。
        nCr=n!/r!×(n-r)! 仮に4ロボットが鼎談する場合は、n=4、r=3で、4C3=4!/3!×(4-3)!=4通りのパターンで管理する。
        A、B、C、Dのロボットが参加した場合は、鼎談のパターンは、ABC、ACD、BCD、BADの4通りのパターンができる。
      10. 会談モードは、組合せ Combinations で、管理する。
        nCr=n!/r!×(n-r)! 仮に4ロボットが会談する場合は、n=4、r=4で、4C4=4!/4!×(4-4)!=1通りのパターンで管理する。
        A、B、C、Dのロボットが参加した場合は、会談のパターンは、ABCDの1通りのパターンができる。Aは、B、C、Dに同じ話を投げかける。同様にB、C、Dも自分以外の参加ロボットに同じ話を投げかける。
      11. 各ロボットは、自分自身と会話することができる。AA、BBなど、ただし、自分自身との会話をしないモードも設定可能。
        「こんにちは」をAが受け取ると「こんにちは」をレスポンダー(応答文を作る機能)へ投げかけるとレスポンダーは、「元気ですか」という応答文を返してきたらその応答文をAに投げかける。
        こんにちは→A→こんにちは→レスポンダー→元気ですか→A→元気ですか→A
      12. 各ロボット同士の会話内容はサーバーのMySQLデータベースに保存する。
      13. 各ロボットには、英字1文字のIDとそれに対応する名前をつける。
        M:摩耶姫、S:しまっぽ、K:くらっぽ
      14.  WebサービスAPIで特定のキーワードについて情報検索して、その内容を会話する。
      15. 構成図(3Π2=3²=9通りのパターン)
        AA、AB、AC、BA、BB、BC、CA、CB、CCの9通りのパターンを管理
        AAu→は、Aロボットが自分Aに会話を投げかける(u→)、AAd←は、AがAから会話を受けとる(d←)意味。uはサーバーにアップロードの略、dはサーバーからダウンロードの略を示す。

        A、B、C の3つのロボットとサーバーがインターネットで繋がっているケース。
        サーバーには、MySQLデータベースサーバーがある。
        サーバーには、WebサービスAPIのプログラム(PHP)があり、ロボットを管理する。

      16. 各ロボットは、発話する時は、相手の名前を言って発話する。
      17. 各ロボットは、全てのロボットとランダムに会話するモードと特定のロボット間でのみ会話するモードを持つ。
      18. 全てのロボットがスタンバイ状態になってから会話を開始する。
      19. 各ロボットは、スタンバイ状態をサーバーに知らせる。

 

LINEで送る
Pocket