組み込みソフトウェア入門

組み込みソフトウェア入門

組み込み技術者がAIスピーカー向け
カスタムスキル開発から学んだAIの今とこれから

Google HomeやAmazon Echo、Lineの Clova WAVE、Apple HomePodなど、最近は各社人口知能を搭載したAIスピーカー(スマートスピーカー)が盛り上がりを見せているようです。AIスピーカーとは、文字どおり人工知能・AIが搭載されたスピーカーのことで、音声操作のアシスタント機能と無線通信接続機能を備えています。音楽を聞く、ニュースや天気予報を読み上げるといった機能だけでなく、音声を認識し家電製品のON/OFFなどを自動で行ってくれるスマートホームの中軸となることが期待されているのも、このAIスピーカーです。このコラムでは「私(組み込み技術者歴10年)が自宅のリビングを快適にするために、AIスピーカー向けのカスタムスキルを開発し、その中で感じた人工知能・AIについて記載します。

  • Date: 2018年3月9日
  • Author: EIPC

人工知能搭載!AIスピーカーを使ってリビングを快適にしたい

私は、自身が所持・記録した音楽・動画・写真などのコンテンツを、なんでもパソコン(に搭載されたハードディスク)上に保存をしています。劣化しないし、場所をとらないし、コンテンツを取り出すのも比較的に簡単だからです。
利用者が私一人の時には、ハードディスク上のコンテンツを再生するにはパソコンの電源を入れ、ファイルをダブルクリックして再生するという形だったのですが、スマホは使えるけれどパソコンに詳しくない妻や、パソコンの中に人が入っていると思っている子供も使うようになってくると、パソコンでの再生手段は限界を迎えます。家族写真1枚見るのにも呼び出され、何度教えても理解されないのです。

何とかして自分で使えるようになってもらいたいと考えていた所にタイミングよく発売されたのが、スマートフォンをリビングのテレビに応用しているセットトップボックスです。
セットトップボックス上で動画・写真・音楽再生アプリを動かすことで、我が家のハードディスク上のコンテンツを家庭用テレビで、お手軽にリモコン操作で再生できるようにしたのです。

これで妻はクリア。
しかしながら子供はそうもいきません。子供に使えるようにするためには、もっと前提知識を必要としない自然な操作性が必要なのです。これを解決するのがAIスピーカーということで私は注目しました。

従来、パソコン+マウス&キーボードで操作するという複雑な動作を、テレビ+リモコン操作でより簡単に可能としましたが、これをさらに人間のコミュニケーション手段として一般的である会話により可能としたのがAIスピーカーです。
人工知能を搭載したAIスピーカーは今まで何かするのに必要だった知識・動作を取り払い、一歩進んだ誰もが使いやすい「会話」というユーザーインターフェースを持つ組み込み機器なのです。

WEBで調べてみた所、私が実現したいセットトップボックスとAIスピーカーを連携させるスキルはまだ正式には公開されておらず、海外の人が開発した英語に対応したカスタムスキルが公開されていることがわかりました。

カスタムスキルの仕組みを知る。

まずは英語版のカスタムスキルのソースコードを入手します。
私が使ったのはkodi-alexaというプロジェクト(https://github.com/m0ngr31/kodi-alexa)。このプロジェクトのページにはカスタムスキルのソースコードだけじゃなく動かすための手順、必要な環境なんかも記載されており、少し知識がある人であれば動かすことができるぐらい親切に書かれています。
私はこの手順を読んでいき、スキルがどのような仕組で実現されているのか、動いているのかが理解できました。

カスタムスキル開発について説明しているサイトは多数ありますが、ソースコードレベルでより具体的に理解を深めたい人はこれをお試ししてみるのも良いかもしれません。
Kodi-alexaのカスタムスキルを大まかにいうと、投げかけられた言葉を解釈し命令文とする「対話モデル」と、その命令文を用いてKodiを制御しその結果を再びEchoに返信する「スキル」の2つからできていることがわかりました。
命令文まで変換されてしまえば、あとはタイトル名、ファイル名等が日本語、英語の違いぐらいなので「スキル」の日本語化対応はそこまで問題ではないと予想されます。

一方日本語を理解し命令文に変換する部分である対話モデルの日本語化はどうすれば良いのか全く想像がつきませんでした。

AIスピーカーのAIたる所以は対話モデル

早速、投げかけられた言葉を命令文に変換する対話モデルの日本語化対応に取り掛かります。
実際、対話モデルはWEBフォームに必要な内容を記載していけば完成してしまいました。

「サンプル発話」という項目に日本語でのサンプルを登録すればアレクサが日本語を命令文に変換できるようになります。
例えば動画を再生する発話サンプルとしては、「○○という映画を再生して」「動画○○を見せて」なんて言葉を登録するわけです。
従来までの組み込み機器であれば、一語一句違いがないように言わなければ理解ができないのですが、AIスピーカーというだけあって例えば「○○という映画再生」、「○○という動画を見せて」、なんてサンプルに登録していない言い回しでも理解するようになるのです。

ここ最近人工知能・AIという言葉はあまりパソコンを知らない人でも耳にするようになっていますが、人工知能・AIとはなんなのかという共通定義はないように思います。
私の中での人工知能・AIは、今回の対話モデルが良い例なのですが、サンプルを複数知ることで特徴を理解し、未知のものであっても特徴が似ていれば同一、似ていなければ違うものといった形で理解・判断できるようになる技術だと思っています。
これは素晴らしい技術ではあるのですが、問題点もあると感じました。

人工知能・AIはまだまだ検証が必要だが、素晴らしい技術だと思います。

私のカスタムスキルでは様々なサンプル発話を登録する事で、人工知能・AI(今回の場合AIスピーカー)はコンテンツを再生・停止等をするための日本語を複数パターン覚え理解するようになったのですが、どの程度理解できるようになったのかの理解度がわかりません。
また与えるサンプルも何が適切なのかが判断つかない部分がありました。実際に我が家のAIスピーカーがどんな言い方だと理解できて、どんな言い方だと理解できないのかがわかりません。

今後AIは様々な分野で応用されようとしていますが、今までモノづくり、特に組み込み機器に強く求められてきた「なぜそうなるのか」の「検証性」が成り立たない世の中を迎えようとしているのかもしれません。
とはいえ人工知能・AIは今後ますます自動化が進むであろう組み込み業界において、大きな可能性の1つであるとは言わざるを得ないと私は思います。
人工知能・AIが今後どうなっていくのか、組み込み機器がどのように進化していくのか私は楽しみで仕方がありません。

おまけ

Kodi-alexaの日本語化対応は、対話モデルの日本語対応は完了し、スキル側の日本語対応を暇な時間を見つけてはちょこちょこと進めています。スキル側が落ち着き次第、gitに登録しようと思います。