神戸のデータ活用塾!KDL Data Blog

KDLが誇るデータ活用のプロフェッショナル達が書き連ねるブログです。

【やってみた】Azure OpenAI+Azure Cognitive Servicesで音声会話ボットを作ろう!~音声入力からテキストを生成する編~

株式会社神戸デジタル・ラボ DataIntelligenceチームの原口です。

今回は今話題の「ChatGPT」とAzure Cognitive Servicesを利用して音声会話ボットを作ってみました!

本記事は連載記事となります。

  • Step1:音声入力からテキストを生成する
  • Step2:得られたテキストから返答を生成する
  • Step3:返答を合成音声でしゃべらせる

今回は音声入力からテキストを生成してみましょう!

はじめに

皆さんは「音声会話アシスタント」、欲しいと思ったことはありませんか?某アニメに出てくるロボットや某ゲームに出てくるアシスタント、某映画に出てくるムニっとした愛くるしいロボット。すべてに共通するのは「音声入力で自然な会話ができる」点です。

今までの音声会話ボットは入力された音声に対して定型文で対応していました。それでも十分でしたが、自然な対話文を自動生成するレベルには達していませんでした。

しかし2023年世界を席巻したChatGPTが登場し事態は大きく急変します。皆さんもご存知の通り、ChatGPTは入力された文章に対して人間と遜色ない返答をしてくれます。

「十分に発達した科学技術は、魔法と見分けがつかない」とはこのことを指すのではと思うほどです。

このように様々な質問に自然な文章で回答してくれるChatGPTが登場した今、夢に描いていた音声会話ボットを作らない手はありません!

今回はAzure OpenAIの「ChatGPT」と「Cognitive Services」をフル活用して、夢を実現します!

アーキテクチャー

今回構築したアーキテクチャーは次のようになります。

アーキテクチャー

Speech To TextとText To SpeechはAzure Cognitive Servicesで実現しています。会話部分はAzure OpenAIのChatGPTで実現しています。通常のOpenAIでも実現可能ですが、Azure OpenAIを利用することですべてをMicrosoft Azure(以下、Azure) 上で実現でき、さらにはAzureのセキュリティポリシーが適応されるのでより一層の安心感を得ることが出来ます!

OpenAIとAzure OpenAIで迷った場合はAzure OpenAIをお勧めします!

以降Azure OpenAIを利用するので、Azure OpenAIの準備が完了していない場合は

kdl-di.hatenablog.com

の記事を確認しながら準備してください!

Azure Cognitive Servicesとは?

今回音声↔テキストで大活躍してくれるAzure Cognitive Servicesとはいったい何でしょうか?

答えはMicrosoft謹製の最強AIモデルをAPIで簡単に利用できる最強のサービスです!!

Azure Cognitive Servicesには以下の3種類のサービスが存在します。

  • 音声
    • 音声↔テキスト、リアルタイム翻訳など音声に関する処理を行えます。
  • 言語
    • 文章分析、文章翻訳など文章に関する処理を行えます。
  • 視覚
    • マウス操作のみでの画像解析AIの構築が行えます。

これらの最強AIをたった数行のコードで利用することが出来ます!

AI界隈では簡単なモデルを動かすだけでもデータサイエンスの知識が必要となることが多いですが、 処理内容の要件に合えば煩わしい準備を飛ばしていきなりAIを使えるのでAzure Cognitive Servicesはとっても便利なサービスです!

今回はAzure Cognitive ServicesのSpeech To TextとText To Speechを利用します。

早速開発

今回は以下のステップで開発を進めます。

  • Step1:音声入力からテキストを生成する
  • Step2:得られたテキストから返答を生成する
  • Step3:返答を合成音声でしゃべらせる

まずは音声入力からテキストを生成しましょう!

Step1:音声入力からテキストを生成する

音声入力をテキストにする際はAzure Cognitive Servicesの音声サービスを利用します。

Azure Portalの「Cognitive Services」から「音声サービス」を選択し、Speech Servicesを作成します。

Cognitive Servicesの音声サービスを作成

Speech Servicesの作成時は以下のような画面が表示されます。

Speech Servicesの作成

基本的な設定は他のAzureと同じです。

一点気を付けるポイントは価格レベルで「Free F0」を選択することです。Free F0を選択すると5音声時間(入力した音声がトータルで5時間)分は無料で利用することが出来るので、ちょっと利用して遊ぶ際はFree F0を利用することをお勧めします。

各種設定ができれば確認と作成を選択し、サービスを立ち上げましょう!

コードによる検証

サービスが立ち上がればいよいよ音声→テキストの検証です!今回はPythonからサービスを利用します!

サービスを利用するには「キー」と「エンドポイント」(と地域)が必要になります。

こちらは作成された音声サービス内の「リソース管理」→「キーとエンドポイント」と書かれたタブ内にあります。Speech Studio内にはありませんので注意しましょう!

キーとエンドポイント(Speech Studio内には無い)

キーとエンドポイントが分かればいざ実装です!実装はこちらのページを参考(コピペを)行いました!

まずは必要なライブラリをインストールします!

pip install azure-cognitiveservices-speech

続いてコードを写していきます。途中でキーとエンドポイントを入力する部分がありますが、お手元のキーと地域を入力ください。

キーやエンドポイントをコードにベタ書きするのはご法度ですが、今回は簡単な検証なのでそのまま利用します。お仕事で利用する際は注意が必要です!

import os
import azure.cognitiveservices.speech as speechsdk

def from_mic():
    speech_config = speechsdk.SpeechConfig(subscription="ここにキーを入れてください", region="ここに地域を入れてください")
    speech_config.speech_recognition_language="ja-JP"
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)
    print("Speak into your microphone.")
    result = speech_recognizer.recognize_once_async().get()
    print(result.text)
from_mic()

コードが準備できればいざ実行・・・!マイクに話しかけて文字起こしができればOKです!

文字起こしの様子

おおーーー!すばらしい!普通ならGPUマシンにモデルを展開して行う音声文字起こしが、たった数行のコードで実現できてしまった・・・。

まだ音声会話ボットを作ってないですが感動です!

まとめ

今回は音声会話ボット作成のStep1、音声入力からテキストを生成する部分についてお話しました。

たった数行のコードで高度な内容を実現できることを実感して頂けたと思います!

次回は得られたテキストデータを用いてChatGPTと対話を果たします!お楽しみに!

原口俊樹

データインテリジェンスチーム所属
データエンジニアです。画像認識を得意としており、画像認識・ニューラルネットワーク系の技術記事を発信していきます