健康エージェントを実現するための様々な技術についてご紹介いたします。
また、いくつかの技術については、実際にお試しいただけるサイトを公開しましたので、こちらもご参考にしてください。
音声処理
音声認識(Speech to Text)
音声認識とは、音声(Audioデータ)をテキスト(文字列)に変換する技術です。スマートフォン単体でも認識できますし、クラウドサービスを使う場合もあります。いずれも、現時点で十分実用に耐える認識が可能となっていると考えています。ただ、日本語の場合、漢字に変換することを同時に行なっていますので、固有名詞などで誤変換する場合もあります。例えば名前で、「宏」「浩」はともに音では「ひろし」なので、これらを音声認識だけで区別することはできません。
音声認識と共に使われるのが話者認識です。これはあらかじめ登録された人の声を認識し、誰が話しているかを特定するための技術です。議事録を作成するためのシステムでは、音声認識と話者認識が組み合わされて使われています。
音声合成(Text to Speech)
音声合成とは、テキストデータを音声(Audioデータ)に変換する技術です。こちらも、音声認識同様にスマートフォンの音声合成機能を使うこともできますし、クラウドの合成機能を使うこともできます。最新の「WaveNet」はディープラーニングの技術が使われていて、より自然な音声を合成することができます。音のピッチ、速さなどは、音声合成マークアップ言語(SSML)を使って制御します。WaveNetは、Google、AmazonAWS、Microsoft Azureの大手が提供しているほか、日本の企業も数社が提供しています。日本語の品質としては、日本の企業が提供しているものの方が優れているように思いますが、コスト面では気軽に使える値段ではないように思います。
技術による合成された音声の違い(MicrosoftAzureとWep Speech API)をこちらのサイトからご確認いただけます。Web Speech APIはブラウザの機能であり、無料で使うことができます。ブラウザによって音声が異なりますので、確認する際には、Google Chromeをブラウザでのご利用をお薦めします。
また、特定の人の声を再現したり、歌を歌ったりすることも可能となってきています。
テキスト生成(Text Generation)
テキスト生成の用途としては、要約、翻訳、質問応答などがあります。テキストを入力として、テキストを出力しますので、Text2Text とか、Seq2Seqと言われる場合もあります。
2018年に登場したBERT(Bidirectional Encoder Representations from Transformers)以来、この分野の技術は大きく進化しました。利用者側から見たBERTの特徴の一つとして、学習が「事前学習」と「ファインチューニング」とに別れていることが挙げられます。従来、特定タスク向けの学習には膨大なデータと計算資源が必要でした。しかし、「ファインチューニング」だけで利用可能となったことで、テキスト生成技術のハードルがグンと下がったように思います。
弊社が今取り組んでいるのは、T5(Text-to-Text Transfer Transformer)を使った対話生成です。元となるモデルは、wikipediaの日本語や、日本語のWebサイトから収集した日本語データを使って事前学習されています。(元となるモデルの詳細は、こちらを参照してください)
弊社では、想定されるユーザ発話と応答の組み合わせデータを作り、事前学習済みのモデルをファインチューニングさせることで、対話を実現しています。
テキスト分析
感情分析(Sentiment Analysys)
入力されたテキストの感情をポジティブ、ニュートラル、ネガティブの3つの数値で表現します。一般的には、ソーシャルメディアや商品レビューの分析によく用いられています。弊社では、これらの感情をユーザにフィードバックすることで、よりポジティブな発話を促すことができると考えています。ただ、一つひとつの発話に対して評価すると揺らぎが大きいので、時間単位や日単位の変化を見ていくことが必要ではないかと考えています。
感情分析は既存のクラウドサービスで提供されています。Microsoft Azureによるサンプルを以下のページからお試しいただけます。
テキスト分類(Text Classification)
入力されたテキストをいくつかのカテゴリに分類する技術です。カテゴリ分類の例として、ニュースを分類するモデルがよく用いられます。これは、カテゴライズされた大量のニュースデータが公開されているためです。
一般的な会話を分類させることはまだ難しいのですが、弊社の取組例として、「sentenceBERTによる分類」を弊社の技術系のサイトに掲載しています。これは、文章をベクトルに変換し、そのベクトル間のコサイン類似度を計算して、文章類似度とする方法です。
また、クラウドサービスとしてGoogleが提供しているカテゴリ分類の実装例をデモサイトでご確認いただけますので、こちらもご覧ください。Googleのカテゴリ分類は、現在、英語のみとなっていますので、翻訳と組み合わせて使うようになっています。また、単語数が少ない文章だとエラーとなるケースもありますので、ご了承ください。
応用例
健康エージェントは、特定のご利用者様に合わせたモデルのファインチューニングと、上記技術の組み合わせで構成されます。
例1) AI スピーカーを用いた音声対話アプリ
例2) LINEを使った情報提供、服薬通知アプリ
例3) スマートフォンを使った音声チャットボット
例3の音声チャットボットの作り方は、以下のサイトに掲載していますので、こちらもご参考にしてください。