Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

自然言語処理サービスとRaspberry PIで自分だけの音声入力デバイスを作ろう

6,954 views

Published on

Microsoft Cognitive Services を使って、音声で扇風機を動かす装置を作りました。その過程でわかった自然言語処理サービスの使いどころや最近の機械学習についても解説します。

Published in: Software
  • Be the first to comment

自然言語処理サービスとRaspberry PIで自分だけの音声入力デバイスを作ろう

  1. 1. 自然言語処理サービスと Raspberry PIで 自分だけの音声入力デバイスを作ろう 自然言語処理サービス設計の勘所 前多賢太郎@ウルシステムズ株式会社
  2. 2. 自己紹介 ● 社内Slackの住人 ● Haskell やってそうな顔してますねと新人に言われる(やってない) ● 言語やアーキテクチャが好き ● 経歴 ○ 入社後: SIerの技術者教育と案件支援 ○ 今年の4月から自社作業で次の作業を実施 ■ Amazon Echo・Alexa の調査・カスタマイズ ■ 自然言語処理サービスを使用したチャットボットの作成 ■ 機械学習によるリコメンド方法の調査 ■ Java9 リサーチ
  3. 3. 今日話すこと 機械学習やAmazon Echo,自然言語処理サービスを使ってみた成果を生かして、自作の 音声入力デバイスを作成しました その過程で得た自然言語処理サービスとの付き合い方についてお話します ● AIと機械学習・ディープラーニングの関係 ● 自然言語処理サービスについて ● 音声入力デバイスについて ● Rasberry PI による音声入力デバイスの設計
  4. 4. AIと機械学習と自然言語処理
  5. 5. 今世の中は空前のAIブーム ● Alpha Go, 自動運転, 統計予測, 画像判定,チャットボットなどAIを使った成果が多数 生まれています ● 「AIで業務効率化を」なんて宣伝も最近聞くようになりましたね ● 一方、AI と聞いて思い浮かべるものは人それぞれではないでしょうか
  6. 6. AIの定義は人それぞれ ● 人によりAIに対するイメージ は異なる ● AIが進化すると人間を滅ぼ すなんてことを本気で心配す る人もいますね ● 私もAIと聞いて想像するのは ドラえもん ● 今実現されているAIとは? 総務省「ICT の進化が雇用と働き方に及ぼす影響に関する調査研究 」(平成27年度)
  7. 7. 現状のAIは機械学習によるものが主流 ● 機械学習はアルゴリズムにしたがって既知の データを読み込んで学習を行い、学習結果から未 知のデータに対して判断を行う技術 ● 今のAIは学習内容に基づいて判断を行い、知性 があるかのような振る舞いを行うことを指すと考え ていい ● 学習は目的(株価予測とか画像認識とか)を決め て行うので、あらゆることに判断を行う万能なAIの 実用化はまだ先と思われる ● 個人的には、AIよりも機械学習と呼んだほうが夢 を見過ぎなくていいと思っている AI 機械学習 ディープラーニング
  8. 8. 機械学習が解決すること ハードコードのロジックでは、対処が困難なことに対応できる ● 入力があいまいなものの解釈 ○ 話し言葉、文章 ○ 画像や音声 ● 組み合わせが膨大なデータの整理・学習・予測 ○ 売り上げ、入出荷、ローン審査、ログ ● 逐次変わっていくものに対する追従 ○ 流行語やトレンド、ニュース
  9. 9. 機械学習を使用したサービスの例 ● 各社様々なサービスを展開しているため、機械学習の知識が無くても利用可能な ものが増えている ● 自然言語処理も文章から意図を特定するためのサービスという位置づけ ベンダー サービス 内容 Microsoft cognitive services 視覚、音声、言語、知識、検索の 5分野で細分化した29のAPIを提供。今 回様々な自然言語処理サービスを使用 IBM Watson 言語分類や、チャットボットなど主に言語系の APIを提供 Google GCP 言語、画像識別、翻訳、汎用機械学習など広範囲の APIを提供 Amazon Alexa Alexaを主体とした、Echo(音声入出力)や Lex(チャットボット),Polly(音声 読み上げ)など粒度の大きいサービスを提供
  10. 10. 自然言語処理サービスについて
  11. 11. 自然言語処理について 自然言語処理には、形態素解析や意味解析、重要度判定、文書要約、品詞判定など 様々な内容が含まれる 機械学習により次のような知識や経験に基づく処理が可能になった ● 意図解析 - 何の話題についての内容なのかを推測 ● 固有表現抽出 - 文章中の大事なキーワードを抽出 ● 音声テキスト変換 - 音声からテキストへの変換 ● 感情分析 - プラス・マイナスの感情や、喜怒哀楽などを判定 今回は様々な使途がある意図解析と固有表現抽出を中心に扱う
  12. 12. ● 意図(Intent) とは、入力文章から何のことについての話題なのかを判定す ることを指す ○ 「ラーメン食べたい」 -> 食事に関すること ○ 「東京駅に行きたい」 -> 経路に関すること ● 固有表現(Entity)とは入力文章の中のキーワードのこと ○ 「ラーメン食べたい」-> ラーメン ○ 「東京駅に行きたい」-> 東京駅 意図判定と固有表現抽出
  13. 13. ● 文章を与えればIntentとEntityが取れるということは、人が入力した曖昧な 文章から、文字列を解析するプログラムを書かなくても、一定の値が取得 できることになる ○ テキスト処理の大幅な簡略化が期待できる ○ チャットボット・コールセンター・音声入力のような対話型サービスへの 応用 ○ IntentとEntityを後続のプログラムで扱うことで、様々な結果を作るこ とができる ■ Intent=食事、Entity=ラーメンならラーメンの店を探す、あるいは 場所や好きなスープの種類を追加で聞くなど IntentとEntityの用途
  14. 14. ● 意図判定と固有表現抽出は機械学習の作法に従う ● 意図ごとのサンプルの文章や、エンティティの名称一覧を用意し学習を行 う必要がある ○ 機械学習の文脈では、意図はラベル、サンプルは学習データに相当 する ● 何の学習もなしに自然な対話を行うことは現状では不可能 ● 学習させていない意図に対する応答を行うことも不可能 ○ 天気のサンプルだけを学習させたモデルに、東京駅への行き方を聞い ても無駄 IntentとEntityの注意点
  15. 15. 学習モデル ・2つのIntent(意図) 学習と判定のイメージ Intent:食事 サンプル: [食べ物]が食べたい [食べ物]が欲しい Intent:経路 サンプル: [駅名]に行きたい [駅名]へのルートは? 「ラーメンを食したい」 「東京駅にどうやって行った らいい?」 「生きてるって何?」 Inent=食事, Entity=[食べ物]:ラーメン Inent=経路, Entity=[駅名]:東京駅 Inent=None(不明), Entity=None(不明)
  16. 16. 音声入力デバイスの紹介
  17. 17. アメリカで音声入力デバイスが流行 音声で色々なことができる ● 今日の天気・ニュース・トレンド ● アラーム ● Amazonやピザの注文 ● 家電の操作 ● 開発者向けSDKがあるので、任意の処理が拡張可能 安価モデルも販売され一家に一台どころか一部屋に一台ペース ● スマホでロック解除→専用アプリより、音声の方が楽で早い Amazon Echo Google Home
  18. 18. Amazon Echo を例に解説
  19. 19. Amazon Echo 全体の構成 Amazon Echo を例に取って紹介
  20. 20. 機能のほとんどはクラウドにある ● デバイスの役割は音声データをクラウドに送って、帰ってきた音声データを再生す るだけ ● 機械学習モデルや拡張機能はAmazonクラウドで実行 その利点は次の通り ○ 設定や学習状況がクラウド上に保存されるので、複数デバイスへの同期が簡 単 ○ 開発者の拡張機能をデバイスごとにインストールする必要がない ○ デバイスの値段を下げることもできるし、新モデルの投入もしやすい ■ クラウドベンダーらしい考え
  21. 21. 音声入力デバイスの根幹は自然言語処理 ● 音声入力デバイスは、音声をテキストに変換する音声変換と、 「どんなことを言ったらどの処理をするか?」を決めるための自然言語処理が根幹に なっている ○ 後者は前述の意図解析と固有表現抽出そのもの ● 開発者拡張機能のAlexa Custom Skill では、意図の設計とバックグラウンドのプロ グラム作成を行う
  22. 22. Alexa Custom Skill ● 意図の設定は開発者コンソール上でIntentごとのサンプルテキストの入力とエン ティティ(Alexaではスロットと呼ぶ)の設定を行う ● 上記は年齢を言うと生まれ年を解答するというIntentの例 ● caclYearがIntent, “May age is {age}”がサンプル、 {aga} がEntity
  23. 23. スキルに対応したプログラム ● スキルに対応したプログラムは音声から解析されたIntentとEntityが渡されたとこ ろから始まる ● 応答はデバイスに発声させる内容を文字列で返すので、自然言語処理を意識する 必要はない
  24. 24. Echo Demo ● 「Alexa, ask birth date I am 35 yeas old 」 というと、 ● 「You are born in 1982. Right?」と返してくれます
  25. 25. Alexa・Echoはすごい、だが、 「暑い」と言ったらその辺の扇風機を動かす仕組みを作りたい、しかし ● Smart Home Skill という家電操作の機能があるが、これを行うためには家電自体 がインターネットに接続できないといけない ○ 最近の家電なら大丈夫かもしれないが、古いものだと無理 ● Intent解析のみを行うことができればどうにかなりそうだが、現状Intent解析のみ 単体でサービス化はされていない ○ AVS というパソコンをEcho化するSDKもあるが、音声バイナリのIOしかできない ● 現時点(2017/7/1)では、日本語に対応していない ならどうするか?
  26. 26. 音声入力デバイスの自作
  27. 27. できたもの
  28. 28. デバイスの構成 Alexa を踏襲し、主要な処理はクラウドで行う デバイス側 raspberry Pi USBマ イク スイッチ スピーカー モーター (扇風機) AWS API Gateway Lambda S3 Slack Webhook Azure LUIS Speech API
  29. 29. 各要素の役割 要素 内容 raspberry pi デバイス全体制御 ・音声ファイルをLambdaに 投げる ・Intentから扇風機への指示 を決定する ・音声の再生 スイッチ マイクの音声受付切り替え マイク 音声入力 スピーカ 音声出力 扇風機 冷える 要素 内容 API gateway HTTPエンドポイント Lambda Speech API, LUIS, S3, Slackの呼び出し を行いIntentを返す Speech API ・音声のテキスト化(Lamdaから) ・テキストの音声化(デバイスから) LUIS テキストの意図・エンティティ抽出 S3 音声ファイルの保存 (調査用) Slack webhook 音声の解析結果を通知 (ログ・でバック用)
  30. 30. 主要要素の解説:Rasberry PI ● ポケットサイズのLinux マシン ● USB, HDMIのほかGPIOというデジタル信号の入出力を扱う部品を備える ○ LED, センサーなどの電子部品を制御するための環境構築が容易 ○ 今回はスイッチとモータードライバを接続 ○ 赤外線モジュールを入れれば、エアコンやテレビなどのリモコンの代わりとして 使える可能性もあり、Alexaを超える汎用音声デバイスになる可能性も? ● Python, Java, Node などがプリインストールされていて、GUIも備えるため、教育用 のPCとしても使える ● 本体は4500円弱で、スターターキットは9000円弱。 ● 今回電子工作部品で購入した部品の合計は1500円程度
  31. 31. 主要要素の解説:Bing Speech API ● Microsoft Coginitive Services の一つで、音声のテキスト化と、テキストの音声化 の2つのWeb API を提供する ○ 今回はどちらの機能も使用 ● 数十の言語に対応していて、日本語にも対応 ● 音声のテキスト化は漢字まで考慮してくれるため優秀 ● テキストの音声化も、英単語を日本人的なアクセントで発言してくれるあたりある意 味優秀
  32. 32. 主要要素の解説:LUIS ● Microsoft Cognitive Service の一つで、言語カテゴリに属し、意図判定と固有表現 抽出を行うサービス ○ Language Understanding Intelligent Service ● Alexa における意図判定の機能のみを単体で利用できるイメージに近い ○ テキストを与えると、IntentとEntityを返してくれる Web API を提供 ● 日本語に対応していて、現時点では日本語の解析精度が競合と比較して非常に良 い ○ (後発の Google のapi.ai も相当良かった) 今回の自作デバイスに組み込むには最適な粒度と機能を持っている
  33. 33. LUISのDEMO モデルを作成すると、Intent判定のエンドポイントが生成される エンドポイントに入力を与えると、Intentごとにその確率を判定 できる 食事に関するサンプルを学習し、「ラーメン食べたい」という文 書を Web APIで意図判定させた結果が右 結果がJSONで取得できるので、任意のプログラムに組み込め る
  34. 34. 自然言語処理サービスの設計の勘所
  35. 35. どの自然言語処理サービスも大体同じ ● どのサービスもIntentとEntityを設計するのはほとんど同じなので、この設計方法 はどのサービスを使っても適用可能 Intent サンプル入力 [エンティティ] LUISのコンソール
  36. 36. まず機能とIntentを決める ● 1つのIntentが、1つのユースケース・機能・メソッドに相当すると考える ○ やみくもに増やさない ● ユースケース実行にあたりパラメータが必要ならエンティティを考える ● 今回は次の3つの機能があるとして設計する ユースケース Intent Entity 扇風機を回す drive - 扇風機を止める stop - 扇風機を一定時間 回す limit seconds (扇風機を回す秒数)
  37. 37. Intentのサンプル入力を検討する ● Intentごとにどんな入力を与えればよいかを考える ● Entityがある場合は、その型や辞書化を検討 ○ Entityの認識精度を上げるためには、Entityとして現れる単語の一覧を辞書と して登録する Intent サンプル入力とエンティティ drive 「暑い」「涼しくして」 stop 「もういいよ」「止めて」「ストップ」 limit 「扇風機を[5秒]まわして」 「扇風機を[5秒]動かして」
  38. 38. サンプル入力の注意点 ● Intentごとに特徴を現す独立したキーワードを決める ○ 今回だと「暑い・涼しく」「ストップ」「扇風機」が該当 ○ 認識精度を高めるにはサンプルの充実が必要だが、やみくもになんでも入れ ればいいというわけではない ■ 1つのIntentにまとまりの無い入力を入れると判定精度が下がる ● 例えば、有名人の名言一覧から、有名人を決定するような連想ゲー ムのような設計をすると、ばらつきがありすぎて失敗する ■ 語尾や言いまわし、単語の並びなどにバリエーションを持たせるようにサ ンプルを作る ○ 複数のエンティティに同じサンプルを入れたりしない
  39. 39. 自作デバイス DEMO ● スイッチを押すと、マイクが音声入力を受け付け、スイッチを話すとそれまでの間に 話したことを音声ファイル化し、クラウドに送る ● 「暑い」というと扇風機が回りだし、スピーカーから音声が出力 ● 「ストップ」というと扇風機が止まり、スピーカーから音声が出力 ● 「扇風機を5秒回して」というと扇風機が回りだし、5秒後に自動停止 ● いずれも場合も、Slackにテキスト化された音声が記録される DEMOの動画はこちら https://youtu.be/Ofi_xDL9ok8
  40. 40. 参考:ラズパイの回路図1(タクトスイッチ)
  41. 41. 参考:ラズパイの回路図2(扇風機)
  42. 42. 自作デバイス作成で工夫したこと
  43. 43. ログ・デバッグのしやすさを考慮する ● 音声->テキスト化-> 意図判定 と、色々な工程があり複数Web API を跨ぐため、工 程ごとにどんな結果が生まれたかがわかるようにしておかないと意図していない結 果に対する原因追及が困難 ○ 機械学習モデルの評価が一意に決まらず、結果が予測しづらい ● 特に、音声をテキストにした結果を知っておくことが重要 ○ Lambdaでちゃんとログを出力 ○ すばやく検知するため、Slackにも通知 ○ 音声ファイル自体も取っておく (S3) ■ 個人のクセを把握して学習結果に反映するなどの改善にも使える ○ クラウドでまとめてログ取っておくと、デバイスが増えても管理が楽
  44. 44. 各種要素のAPI化 ● 扇風機の操作や、音声出力は全てラズパイ上の Web API で動作が可能にしてあ る ● 各機能単体での動作確認を容易にする目的もあるが、これらの機能が別々のデバ イスに実装されても動くようにするという狙いもある ● 今回はマイク、扇風機、スピーカすべて同一デバイスだが、離れた場所にある扇風 機を手元のマイクで操作するなんてこともできるはず ○ SIMカードを使えば、会社から自宅の家電を操作することもきっとできる ● 一方セキュリティには注意。今は誰でもエンドポイントを叩けば扇風機を回せる
  45. 45. まとめ
  46. 46. まとめ ● AIはバズワードだが、機械学習の流行は本物 ○ 手軽に試せる環境がそろっている ○ 普段の仕事にも用応できることがあるはず ■ 相談乗ります! ● 自然言語処理サービスは意図判定を行うサービスであることを意識する ○ 概念がわかれば恐れる必要はない ○ 継続的な学習モデルの更新が精度を向上させる鍵 ● Cognitvie services + ラズパイ + センサーの組み合わせは可能性を感じる ○ 音声赤外線リモコンは実現してみたい ○ カメラと画像認識APIでの可能性も探ってみたい
  47. 47. おしまい

×