自作AIスピーカーを作ろう

E44ca1508481e64c79ea237170b1a08d?s=47 garicchi
January 26, 2018

 自作AIスピーカーを作ろう

2018年1月26日 日本アンドロイドの会 定例会「ボイスアシスタントアプリ開発の今」で登壇しました。
https://japan-android-group.connpass.com/event/76269/

E44ca1508481e64c79ea237170b1a08d?s=128

garicchi

January 26, 2018
Tweet

Transcript

  1. 自作AIスピーカーを作ろう @garicchi

  2. 本セッションのゴール 自作スマートスピーカーを通して スマートスピーカーの仕組みを詳しく知ろう 自宅に返って自作スマートスピーカーに トライする気持ちになろう ① ②

  3. 自己紹介 栂井 良太 (Togai Ryota) @garicchi 静岡大学 Master 2nd 専門:

    対話システム IoT ALGYAN (運営) Microsoft MVP for Windows Development ラズパイマガジン 2018年2月号ヨロシクオネガイシマス
  4. 本セッションの内容

  5. Smart Speaker

  6. Smart Speaker を

  7. 自作しよう

  8. 自作AIスピーカーのメリット 3つ

  9. 自作AIスピーカーのメリット 3つ ① 無限大にカスタマイズできる △△ ◯◯

  10. 自作AIスピーカーのメリット 3つ ② 圧倒的オリジナリティ 久しぶりだ な!兄弟! ヘイ ブラザー! ① 無限大にカスタマイズできる

    △△ ◯◯
  11. 自作AIスピーカーのメリット 3つ ② 圧倒的オリジナリティ 久しぶりだ な!兄弟! ヘイ ブラザー! ① 無限大にカスタマイズできる

    △△ ◯◯ ③ 自作して深まる理解 チャットボットや 対話システムでは何が重要か?
  12. サードパーティとしてのAIスピーカー サードパーティ

  13. 整いつつある技術基盤 各社が続々とAI関連のサービスやSDKを提供 AIスピーカー自作に必要な基盤は揃っている

  14. よし、自作AIスピーカーを作ろう

  15. でもどうやってつくるの? スマートスピーカーの 中身を理解する必要がある

  16. 処理の流れ スマートスピーカーの構成要素 ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  17. スマートスピーカーの構成要素 処理の流れ ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  18. 自作スマートスピーカーに必要なハードウエア Raspberry pi USB Microphone サンワサプライMM-MCU02BK おすすめ Raspbian(Linux)が使えると やりやすい USB

    Speaker HONK HK-5002おすすめ いろんなものを車輪の再発明していくのは とても大変なのでLinux上でOSSを組み合わせて作っていく
  19. スマートスピーカーの構成要素 処理の流れ ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  20. ホットワード検出とは? 18時です OK,Google 今何時? 18時です はー疲れ た OK,Google = ホットワード

    ホットワード検出あり ホットワード検出なし 誤発話しないためにもホットワード検出が必要
  21. なぜOK,Googleにだけ反応できるのか? オッケー グーグル オッケー グーグル なんでしょ うか ホットワード検 出モデル OK,Google

    OK,Google 学習 インストール
  22. ホットワード検出ができるサービス snowboy https://snowboy.kitt.ai/ Web上に独自のホットワードのサンプルを3つアップロードするだけで高精度な検 出モデルを作成可能 ほとんどすべてのプラットフォームをカバー 個人利用の範囲であれば無料

  23. スマートスピーカーの構成要素 処理の流れ ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  24. 音声録音&認識 OK,Google 今何時? これはホットワード検出 これを録音して認識する必要がある さらに音声が終了したら録音も終了し、認識器に投げる必要がある (発話区間検出) ↑ここで録音を終了 音声ファイルを認識器に投げる 音声認識器

    ここで録音開始↑
  25. 音声録音をしてくれるソフトウエア SoX http://sox.sourceforge.net/ sox -c 1 -d %s silence 1

    {start_sec} {thress_start} 1 {end_sec} {thres_end} コマンドラインから音声を編集する OSSだが下記コマンドで音声感知録音もできる {thress_start}より大きい音量が {start_sec}秒続いたら録音開始 {thress_end}より小さい音量が {end_sec}秒続いたら録音終了
  26. 音声認識をしてくれるサービス 音声認識はローカル内で完結させるよりも Webサービスを利用したほうが性能が圧倒的に良い 音声認識サービス HTTPアップロード 認識結果「こんにちは」 音声認識をしてくれるサービス 定期的に 賢くなって るはず

    Cognitive Service Bing Speech API https://azure.microsoft.com/ja-jp/services/cognitive-services/speech/ Google Cloud Speech API https://cloud.google.com/speech/docs/?hl=ja など
  27. スマートスピーカーの構成要素 処理の流れ ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  28. 発話理解とは? ユーザーの発話をシステムが正しく解釈すること 発話意図分類 発話要素抽出

  29. 発話理解 - 意図分類 現在◯◯時 です 今何時? 時間を聞きたい時 なんでしょう か? 時刻を教

    えて 時間を聞きたい時 今何時? 人間の発話はブレる 時刻を教えて どちらもユーザーは 時間を聞きたいと思っている
  30. 発話理解 - 意図分類 今何時? 時刻を教えて 発話意図 ask_time 今日の天気は? 傘いるかな? 外曇ってる?

    ask_weather 発話意図 機械学習で 発話と意図を 学習させておく このような発話→意図への変換を 発話意図分類と呼ぶ
  31. 発話理解 - 要素抽出 新宿 の 明日 の 降水確率 は ? ユーザーはいつの、どこの天気を知りたがっているか? 場所 時間 天気の内容 どの単語が何を示しているかを 機械学習で学習する

    このような発話→各要素への変換を 要素抽出と呼ぶ
  32. 発話理解まとめ 新宿の明日の 降水確率は? 発話意図分類 発話要素抽出 発話意図 ask weather 発話要素 場所:

    新宿 時間: 明日 内容: 降水確率 機械学習を使うことによってより賢く、手軽に発話を理解できる
  33. 発話理解をするソフトウエア Luis http://luis.ai Webサービスで簡単に発話意図分類、要素抽出の機械学習ができる 学習した結果はPythonなどから利用可能

  34. スマートスピーカーの構成要素 処理の流れ ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  35. 対話モデル 新宿の明日 の降水確率 は? 発話意図分類 発話要素抽出 発話意図 ask weather 発話要素

    場所: 新宿 時間: 明日 内容: 降水確率 何を発話して返すか? if intent == “ask_weather”: weather = weather_search(place,time,content) say(“お探しの天気は”+weather+”です”) if分岐などでルールを書きましょう
  36. 対話モデルを作れるWebサービス IBM Watson Conversation https://www.ibm.com/watson/jp-ja/developercloud/conversation.html 何を言ったら何を返すか といった対話モデルを をGUIで記述可能

  37. スマートスピーカーの構成要素 処理の流れ ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  38. 音声合成 その名の通り文字から音声を合成する 「明日の新宿は晴れです」 音声合成を行なうサービスは多々あるが音声を転送するボトルネックが気になる 音声合成の質を特に気にしないのであればローカル音声合成がおすすめ ローカルで音声合成を行なう OSS OpenJtalk http://open-jtalk.sp.nitech.ac.jp/ のPython

    Wrapper PyJtalk http://github.com/garicchi/pyjtalk
  39. スマートスピーカーを支える技術 処理の流れ ホットワード検出 システムが正しい タイミングで反応する ハードウエア 音声録音&認識 ユーザーの音声を 文字に変換する 発話理解

    発話を正しく 理解する 対話モデル 何を言ったら 何を返すかを 決める 音声合成 システムの発話を 音声に変換する
  40. なるほど、わからん

  41. Py Assistant スマートスピーカーはなかなかに複雑なので Raspberry piで簡単に自作スマートスピーカーを作ることができる OSSを作りました Py Assistant github.com/garicchi/pyassistant 前ページまでの機能をすべて網羅

    (Microsoft Cognitive Serviceを主に使用) 赤外線送受信機能を搭載 YouTubeにあるMusic Videoを再生する機能を搭載
  42. 赤外線回路 ひつようなもの 赤外線LED GL538 赤外線受光モジュール PL-IRM2121(38kHz) 10Ω抵抗、200Ω抵抗

  43. 赤外線送受信プログラム 赤外線送受信でデファクトスタンダードな LIRCはraspbian strechでは動かなかったので 赤外線リモコン受信・送信~ LIRCはあきらめましょう | Raspberry Pi 研究室

    | Feijoa.jp http://www.feijoa.jp/laboratory/raspberrypi/infrared/ のプログラムを参考に PyAssistantもこちらのプログラムを組み込ませていただいています
  44. 音楽再生は? youtube-dlとmplayerを組み合わせて実現できます Bing Video Search APIでyoutube動画検索→URLを取得 youtube-dl {URL} -f “bestaudio”

    -o - | mplayer - でストリーミング再生
  45. デモ https://www.youtube.com/watch?v=8ULnVH1YMDM

  46. 自作スマートスピーカー自作キット発売中 3000円+ラズパイで自作Google Homeができるキット 入門書絶賛発売中! 日本語の対応はあとちょっと .. Google AIY Voice Kit

  47. まとめ 今、自作スマートスピーカーがアツい OSSを組み合わせれば自作スマートスピーカーも作成可能 PyAssistantにStarをお願いします