OpenAI Realtime APIを試してみた!
こんにちは、M田主任三郎です。
日々新しいAIの情報がありすぎて、段々と追えなくなってきているこの頃です・・・。
先月9月25日に、ChatGPTの高度な音声モードが公開され、リアルタイムに近い形でAIと会話することができるようになりました。10月1日、これをAPI経由で使えるRealtime APIが公開され、カスタマイズした会話AIを作ることが可能になりました。
今回は小ネタとして、だいぶ遅ればせながら、このRealtime APIを試してみました!
Realtime APIとは
詳細はnpakaさんの記事をはじめ、いろいろなところで紹介されているので割愛しますが、、ざっと概要に触れてみようと思います。
これまで会話を行うAIサービスを作るときには、音声を文字起こしして(Speech to Text)、そのテキストを元に回答を生成し(Text to Text)、それを音声に変換(Text to Speech)していました。
工夫次第では多少改善することは可能なものの、基本的には人間が自然に感じるほどのレスポンスの早さを実現することは困難です。
それでも、それぞれのAIサービスはどんどん高速かつ高品質になってきており、以前我々が取り組んだ「えーあいそーだんいん」も、従来の仕組みで構築されているものの、それなりに楽しく会話することが可能です。
その一方で今回のAPIは、音声を直接入出力できる(Speech to Speech)ようになりました。これまでの仕組みと比べると、大幅に高速な応答が可能になり、人間と同じぐらいの自然さで会話が可能です。
早速試してみる
何はともあれ試してみます。コードはこちらの記事を参考にしました!
すると、ChatGPTの有償版と同等のレベルで自然なレスポンスで会話が可能になりました。こちらは任意のプロンプトを設定できるので、例えばRAGと組み合わせたり、先ほどの記事の例のように関西弁で喋らせたり等、色々なことができます。(ただ現時点では、あまりプロンプトが効かない印象もありますが…)
ところが・・・・
何度か試していると、PCが自分で喋った声を拾って無限ループ状態になってしまいました・・・。うまく会話できることもありますが、やはり時々この状態になってしまいます。
旧来の方式だと、AIが喋り終わってから聞く仕組みになので問題になりませんでしたが、リアルタイムに会話するには自分の発声を消してあげないといけないようですね。
実際、PC内蔵のマイクではなく、外付けのスピーカーの音を拾わない「エコーキャンセル」機能の付いたWeb会議用のマイクスピーカーで試すとうまくいきました。
実は今回、Realtime APIと接続して会話する仕組みを「スタックチャン」という小さいロボットキットに搭載して使おうとしていたのです。
これ、かわいいですよね。この子と良い感じにおしゃべりできると楽しいですし、今後の活用の幅も広そうだと感じていたのですが…
エコーキャンセルの仕組みを使う必要があるということは、小さくてかわいいスタックチャンの外側に大仰なマイクスピーカーを置いて使うか、ソフトウェアでそれを実装する必要があります。そして後者は、スタックチャンに搭載された限られた性能のコンピュータ上では実装が難しいような気もします。
(もし「良い方法あるよ!」という方が居られましたら、是非教えて下さい…)
まとめ
今回はとりあえずRealtime APIを試すところまでやってみました。
うまくいかない部分もありましたが、まるで人間と話すようなレスポンスで会話できますし、これまで以上に人間と接しやすくなって、活用の幅が広がりそうだと感じました。
もちろん精度にもよりますが、例えばコールセンター業務等、会話で応答する業務に適用した例が、今後あっという間に出てくる予感がします。
Realtime APIは、音声だけでなくテキストも受け取れるので、テキストベースで駆動するよう構築された会話AIに組み込み、任意のTTS(Text to Speech)サービスを使ってキャラクターの声をつくるとか、そういう使い方もできそうです。
(M田主任三郎)