Whisper APIとChatGPT APIを使用して、超速で返答してくれるAIキャラクターを作ったよ！

# はじめに
先日公開された[ChatGPT API](https://platform.openai.com/docs/guides/chat)をご存知の方は多いと思います。
実はその時に同時に[Whisper API](https://platform.openai.com/docs/guides/speech-to-text)と呼ばれるAPIも公開されました。

Whisper APIは現在世界最高精度を誇る音声認識モデルです。
非常に精度がいいんですが、同時にモデルが大きくて使うのが大変、という問題があります。
今回公開されたWhisper APIはその問題を解決してくれます。
Whisper APIは音声ファイルをAPIに送信するだけで、音声認識の結果を返してくれるのです。
なので使用するメモリは最小限で可能。
しかも、とても速い。
CPUのみの環境だと、ローカルで使用した場合の十数倍速いです。

今回はそのWhisper APIとChatGPT APIを使用して、超速で返答してくれるAIキャラクターをUnity上で作成したので、そのご紹介をします。


ではさっそくご覧ください。

<iframe width="560" height="315" src="https://www.youtube.com/embed/5IaFfqIbdQ4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

どうですか？
すごく早くないですか？
ほとんど人間相手の会話速度と変わらないレベルでの速度で返答してくれていると思います。
これなら日常的にAIキャラクターと会話することも問題ないレベルです。(合成音声でキャラの発話を生成するともう少し時間はかかりますが)
使用金額も、一時間の音声の書き起こしで約47円。
実際の会話だと、人間側の音声のみの録音でしょうから、それの数分の１。
一時間ずっと会話しっぱなしでも10円ぐらいでおしゃべりできちゃいます。
これが音声を録音してデータを送るだけでできるので、デスクトップPC以外でも使えるようになります。


例えば以下のように、スマートフォン上で使うことなんかもできます。

<iframe width="560" height="315" src="https://www.youtube.com/embed/6PwA_8M2_RQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
本記事ではこのシステムの仕組みと、今後の展望について語りたいと思います。

## 追記
実際に口を動かして合成音声でしゃべってくれるバージョンも作りました。
こっちの方が話している感じがあっていいですね。
ただ音声を生成する分、反応速度が遅くなってしまうのは残念。

<iframe width="560" height="315" src="https://www.youtube.com/embed/lCihxd1NMRc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# システムの仕組み
システムの全体の概略図は以下のような形になっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/315420/109b2ac3-c89c-334d-f2a8-4bf10b84e398.png)

図の番号に沿って順番に説明していくと、

### 1. ユーザーがマイクに音声を発話して、音声情報を入力します。
### 2. マイクはユーザーの音声を常に把握していて、一定以上の音量の音声が入ると、録音して、音声ファイルに保存します。
この時の音声ファイルは、Whisper APIが対応している以下の形式に限定されます。
`
mp3, mp4, mpeg, mpga, m4a, wav, and webm.
`
### 3. 保存した音声ファイルをWhisper APIに投げます。
この時のコードは[昨日書いた記事](https://qiita.com/mfuji3326/items/c46a56549e3991926fb2)に載せているので、良ければ参考にしてください。
### 4. Whisper APIから音声の認識結果が超速で返ってきます。
### 5. ChatGPTのAPIに音声の認識結果を投げます。
ChatGPTへのAPIの投げ方や使い方は[記事：ChatGPT API の使い方](https://note.com/npaka/n/n0dd2b226e8ae)が参考になります。
またUnity上でChatGPTのAPIを使う方法は[記事：Unity上でChatGPT「text-davinci-003」APIを実行する話](https://techblog.kayac.com/2022-group-calendar-unity-openapi)を参考にしました。
### 6. ChatGPTのAPIから投げかけた文に対する返答が返って来ます。
### 7. ChatGPTから返ってきた文から必要な部分だけ抜き取り、Dispalyに結果を表示します。
### 8. UserがDisplayに表示された返答を読み、また応答を返します。


このような仕組みで成り立っています。
非常にシンプルで、必要なスペックもほとんどありません。
スマートフォンどころか、ある程度の録音ができるデバイスなら大抵のもので使えるでしょう。
誰でも、どこでも、AIと会話できるようになる。
そしてAIの支援を受けられるようになる。

これからの時代はそのような世界になっていくと思います。

# 今後の展望
需要があるようなら誰でも簡単にAIキャラの設定とOpneAPIのKeyを入力することで、スマートフォンなどでAIを使用できるアプリを作成して公開しようかと思っています。
やっぱりAPIをたたくとか、エンジニア以外にはまだ難しいと思うので、だれでもAIキャラクターと話せる体験を試せるようなものを作ろうかなと。
画像の設定と、キャラクターの特徴や設定とかをカスタマイズできて、いろんなキャラクターが見れるようになったら楽しそうですよね。
以前[一日で俺の嫁を作る方法　～一日で自分の好きな声・キャラ・見た目でおしゃべりしてくれるAIキャラクターを作ろう～](https://qiita.com/mfuji3326/items/49649877631e22211da7)という記事でもAIキャラクターを作れるアプリを公開したのですが、あれは使うのに必要な知識が多すぎてあまり使われなかったので、今度はできるだけ簡単に使えるものを作ろうと思っています。
公開するときは記事を書いて紹介する予定なので、その時はまた読んでくださいね。

追記：
誰でも使えるアプリを作成して以下に公開しました。

[MakeYourFriend ～AIキャラ作成・体験ツール～](https://play.google.com/store/apps/details?id=com.Gyokuro.MakeYourFriend)

# 続きの記事
## [【一日で俺の嫁を作る方法・続　～一日で自分の好きな声・キャラ・見た目でおしゃべりしてくれるAIキャラクターを作ろう～】](https://qiita.com/mfuji3326/items/50ff6f19b6e98cfabf32)

本記事の発展として作成した、発話を音声合成して、会話の記憶をもっていて、会話しながら感情を生成させて、その感情に合わせて表情が変化するＡＩキャラクターの紹介と仕組みについて書いた記事。

## [誰でも簡単にAIキャラを作成して、音声で話せるアプリを作って無料公開したよ！](https://qiita.com/mfuji3326/items/cba068d1497a3c9099b8)
今後の展望で書いた、誰でも簡単に使えるアプリを創ったので、Google Playに公開しました。
画像の設定と、キャラクターの特徴や設定とかをカスタマイズできて、いろんなキャラクターが見れるようにしました。
できるだけ簡単に使えるように作ったつもりです。
もしよければご覧ください。