特命デベロッパー・池澤あやかの挑戦ストーリー

会話機能を実現した自作AIスピーカーを作ろう

IBM Cloudのサービスで作ったAIスピーカーアプリを解説

IBM Cloudのサービスで会話機能を実現した自作AIスピーカーのサンプルです。 音声入出力のインターフェースはRaspberry Piを利用し、IBM CloudのSpeech To Text、Conversation、Text To Speechサービスを通して音声による対話を実現しています。Raspberry Piには赤外線リモコンを接続し、対話内容に応じたエアコン電源操作も実現しています。クラウドからデバイスへのメッセージ送信にはInternet of Things Platformを利用しており、デバイス情報の収集もあわせて行っています。
また、スマートフォンのチャットアプリによる屋外からのエアコン操作も実現しており、帰宅前にあらかじめエアコンの電源をつけておくといった使い方も可能にしています。

屋内で音声操作(シナリオ1)、スマホでチャット操作(シナリオ2)のアプリケーション構成はそれぞれ以下の通りです。

図1.アプリケーション構成(シナリオ1)

屋内で音声操作

図2.アプリケーション構成(シナリオ2)

スマホでチャット操作

各サービスおよびランタイムは、以下の目的で使用しています。

 

(シナリオ共通)

  • Conversation: 会話の流れを制御
  • Internet of Things Platform: イベントの中継、デバイスデータの収集
  • Node-RED: IBM Cloudにおけるフロー定義およびアプリケーション稼働
    • Watson APIs呼び出し制御
    • Internet of Things Platformへのイベント送信
  • Node-RED: Raspberry Piにおけるフロー定義およびアプリケーション稼働
    • Internet of Things Platformからのイベント受信
    • GPIO制御
 

(シナリオ1)

  • Speech To Text: 音声をテキストに変換
  • Text To Speech: テキストを音声に変換
 

(シナリオ2)

  • LINE Messaging API: LINE Botの作成
 

シナリオ1では、まずRaspberry Pi側でホットワード(音声アシスタントを使う際に呼びかける言葉)の検出および音声データの送信を行います。次にIBM Cloud側で音声をテキストに変換し、対応する返答を取得後、再び音声に変換して戻します。その後Raspberry Pi側で受信した音声データを再生することで、音声による対話を実現しています。
対応する返答に電源操作に関する指示が含まれていた場合は、Internet of Things Platformにイベントを送信し、Raspberry Pi側で受信したイベントを元に電源操作を行います。

 

図3:赤外線リモコン基盤を搭載したRaspberry Pi

赤外線リモコン基盤を搭載したRaspberry Pi

シナリオ2も基本的な流れはシナリオ1と同様ですが、ユーザーインターフェースに音声でなくLINEのチャットボットを使用しています。

 

図4:チャット画面

チャット画面

このサンプル・アプリケーションを稼働させる前提は下記の通りです。(Raspberry Piなど今回使用した物理デバイスの詳細についてはGithubをご参照下さい)

 
  • IBM Cloudアカウントの取得
  • IBM Cloudコマンド・ライン・インターフェース
    • IBM Cloudコマンド・ライン・インターフェースはこちらより取得して下さい
  • LINE Messaging APIの利用登録
 

サンプル・アプリケーションのソースコードとIBM Cloudへのデプロイ手順をGitリポジトリーで公開しています。以下のサイトにアクセスし、ソースコードの入手とデプロイをお試しください!