
ChatGPTの新しい音声モードにおける根本的な問題
9,638 文字
やっと、OpenAIのボイスアシスタントが使えるようになって、きっとみなさんも素晴らしいデモをご覧になったと思います。デモの中で特に印象的なのは、感情表現やアクセント、歌を歌ったり、劇的な声を出したりする能力です。これは歴史上初めて、こんなに自由度の高いモデルを目にすることができました。
でも、もし私がこのテクノロジーには「すごい!」っていう効果はあるけど、実際にはほとんど実用性がないって言うたら、どう思いはりますか?
今回はこの分野の専門家であるジャン=ルイさんをお迎えして、インテリジェントアシスタントの分野で対立する二つの大きなパラダイムと、なぜOpenAIのデモは印象的やけど、実際のビジネスではおそらく使われへんのかについて説明してもらいます。
その前に、AIに興味のある方々へのメッセージがあります。みなさんご存知のIntelがこの動画のスポンサーで、企業向けのAI PCを紹介しています。Intel Ultra プロセッサーを搭載したPCは、ローカルAI向けに設計されていて、ハイブリッドアーキテクチャーを採用しています。これは中央処理装置、グラフィック処理装置、そして以前お話した神経処理装置を統合したもので、非常に少ないエネルギー消費でAIの推論をローカルで処理できます。
これがPCの未来で、Intel vProプラットフォームと組み合わせることで、企業にとって理想的な構成となります。ユーザーはAIに関連する新しいワークロードを処理するのに必要なパフォーマンスとアシスタントへのアクセスを得られ、ITサービスも遠隔管理やセキュリティ機能で作業が簡単になります。Intel vProとAI専用のIntel Core Ultraプロセッサーの間には真のシナジーがあるんです。詳しい情報は説明欄に載せておきますので、本題に戻りましょう。
「OpenAIの最近の発表について簡単に説明してもらえますか?そして、それは実際うまく機能してるんでしょうか?」
「はい、直近2ヶ月ほどで大きな発表が2つありました。一つはテキスト、つまり純粋なLLMに関するもので、"O1"と呼ばれています。ただし、これは実際にはモデルというよりも工学的な工夫なんです。GPT-3、3.5、4での数秒での出力と違って、特徴的なのは30秒かかることです。
この30秒の間に何をしてるかというと、"Chain of Thought"(思考の連鎖)というものを実行しています。つまり、『質問を解決するために、まず実行計画を立てて、ステップ1、ステップ2、ステップ3というように進めていこう』って考えるわけです。ステップ1を解決して、次に『ステップ1の後は何やったっけ?そうそう、ステップ2やった。ステップ2ではステップ1の結果を考慮してこうしよう』というように進めていきます。
30秒かかるものの、これは一つの重要な傾向を示しています。OpenAIはもう独占的な地位にはないんです。以前は彼らのGPT-4が最高のモデルでしたが、それ以降、本当の意味での新しいモデルは出てません。小規模なモデルは出ましたが、現在市場で最高のモデルはClaude 3.5です。このモデルは、Chain of ThoughtなしでもOpenAIを上回っています。
正直なところ、OpenAIはLLMの部分で停滞してるような印象です。工学的な工夫はしてますが、今のところClaudeほど優れてはいません。これが一つ目の発表です。
二つ目の音声に関する発表は非常に興味深いものでした。彼らは"end-to-end speech"(エンドツーエンドスピーチ)と呼ばれるものを実現できるモデルを作りました。日本語で言うと『音声の一気通貫処理』ってとこですね。
これまで見たことがなかった興味深い点は、Gladiaのような音声認識システム(もちろん世界最高のシステムですが)があり、また音声合成システム、つまりテキストから音声への変換システムがあって、その間にロジックを入れるという形でした。
OpenAIが今回やったことで面白いのは、音声入力を入れると、LLMと同じような独自の思考システムを持っていて、これは『潜在空間』(英語では latent space)と呼ばれます。簡単に言うと、これは大きな数字の集まりで、独自の思考を生み出すベクトル空間なんです。
ただし、LLMのように単語を出力するんじゃなくて、直接小さな音声合成の断片を生成し、それらを組み合わせて文章を作るんです。」
「つまり、従来は音声をテキストに変換して、それを言語モデルに通して、またテキストが出力されて、それを音声に変換してたということですが、今回は音声から潜在空間を経て直接音声になるということですね?」
「そうそう、その通りです。これは99.9%間違いないと思います。なぜなら、エンドツーエンドでのレイテンシー(遅延時間)を見ると、組み合わせたシステムではこんなに速くはなれへんからです。後で話しますが、このスピードを出すには本当に完全な一体型のシステム、単一のモデルが必要なんです。
これが一つ目の印象的な点です。二つ目は、このシステムが感情を模倣することを学習したということです。例えば『悲しそうに歌って』って言うたら...」
(音楽と拍手の音)
「タイミングもすごくええでしょ?これ全部自分で学習したんです。このシステムは、LLMシステムと同じように、トレーニングデータの中で既にその歌を聴いています。YouTubeなんかから吸い上げたデータの中にあったわけです。
そこで『あ、このフレーズの後にはこんな音符が来るはずや』って理解してるんです。これを学習して理解できてるんですね。アクセントもそうです。マルセイユなまりとか感情表現、悲しみや誇りなんかも...」
「もしお前のお粥の米粒が全部ちゃんと炊けてるかどうか確認したいんやったら、コードの小さな部分を単位として取り出して、それが正しく機能するかテストするんや」
「プログラミングのチュートリアルをマルセイユなまりで聞けるようになったってことですね。すごいことやと思います。ということは、この音声モデルを訓練するために、いろんなアクセントを持つたくさんの音声を使ったということですね?」
「そうです。彼らのトレーニングデータには、マルセイユなまりで話す人々のデータが含まれていたはずです。おそらくGPTで使われたのと同じトレーニングデータでしょう。既にその時点でYouTubeの全データを吸い上げていたからです。
音声における知識レベルと専門性は、テキストよりも高いんです。より濃縮されているというか。例を挙げると、私はトールキンのファンなんですが、『ホビット』という本があって、これくらいの厚さがあります。これは音声にすると約5時間分です。
この会話の最初からもう、おそらく『ホビット』の半分くらいの量を生成してるんじゃないでしょうか。YouTubeには毎日膨大な時間の動画がアップロードされていて、それぞれが専門的な内容を持っています。
例えば、小麦粉に詳しい人がエンジンについて話してたり、Micodeがコードについて話してたり...そうやって専門家たちの声が集まっているんです。音声情報には、純粋な情報以外にも多くのものが含まれています。感情やアクセント、性別、年齢なんかですね。
これらは全てspeech-to-textで取り込めます。Whisperが生まれたのもそういう理由からです。Whisperを作りたかったわけじゃなくて、最高レベルの知識と質の高い専門性はブログじゃなくて、YouTubeのチュートリアル動画にあるって気づいたんです。
だから、YouTubeから音声を取り込んで、テキストに変換するシステムを作り、そのテキストをモデルに学習させれば、十分な量のデータが得られて、非常に強力なモデルができるだろうと考えたんです。」
「面白いですね。Whisperがそうやって生まれたっていうのは知りませんでした。私はテキストの言語モデルのトレーニング方法について、まず大量のデータでトークン予測を学習させて基礎モデルを作り、その後インストラクションチューニングやアシスタントモードで専門化させるっていう感じで理解してたんですが、音声の場合はどうなんでしょう?」
「まず、LLMの話に少し戻りましょう。今、あなたは何をしてるかというと、ある分野について自分より詳しい(まあ、"専門家"って言うてええかどうかは微妙ですが)システムに質問をして、答えを得ようとしてるわけです。
これはポッドキャストやYouTube動画、こういうインタビュー形式でよく見られる形式です。だから、これは既にLLMのモデルの中に、そういう形式として入ってるんです。
専門化させるかどうかは、何を目指すかによります。例えば、OpenAIのアシスタントは、なぜ質問を生成せずに、どこで止まればいいかわかるんでしょうか?」
「音声認識システムの場合、いくつかの予測が出てきます。Whisperの場合、通常20ミリ秒の小さな音声の断片を扱います。時系列のものを、比較的静的なベクトルに変換するのは非常に難しいんです。
そこで画像を使います。信号処理でいうフーリエ変換ですね。学校でやったと思いますが、信号をオシロスコープに通すと棒グラフが見えるアレです。これが周波数分布を表していて、20ミリ秒の小さな部分の瞬間的な画像になります。
次に、人間の耳の仕組みに合わせてログを適用します。人間の耳は特定の周波数を捉えて他を分離する時に、ある種の対数的な効果があるからです。これがベクトル、つまり小さな数値に変換されます。
ここでLLMと同じような構造が見られます。テキストがトークンに変換されるように、音声もトークンに変換されるわけです。システムがいつ生成を止めるかについて質問されましたが、まず音声認識の仕組みを理解する必要があります。
20ミリ秒の小さな断片があって、文の終わり、専門用語で『utterance(発話)』と呼ばれるものがあります。今私が発話を一つ終えて、また新しい発話を始めましたね。発話とは、一つの区切りです。」
「なるほど、発話は一つの区切りなんですね。」
「システムはトレーニング時に、文の終わりにピリオドがあることを学習します。音声的な区切りと、テキストで表現されるピリオドの間に音の途切れがあることを学習するんです。
この音の途切れの後、一定時間経過すると新しい文が始まることを理解して、自動的に区切りを入れます。『end of sentence』や『end of sequence』といった特別なトークンを使います。
生成時に、一定時間の無音が続くと(複数の20ミリ秒の無音トークンが続くと)、自然に終了することを学習しています。システムは終了トークンを入れて、『私の仕事はここまで』と判断します。
その後に何を言っても、LLMであれ音声システムであれ、そのシーケンスは終了していて、再開することはできません。システムを再初期化する必要があります。これが音声システムが適切なタイミングで停止できる理由です。生成時に、ある時点で終了すべきことを学習しているからです。」
「なるほど、一般の人にはそれほど直感的じゃないかもしれませんが、レイテンシー(遅延)の重要性についてもう少し説明してもらえますか?なぜこんなに多くの人がこの問題について考えていて、ユーザーの発言から応答までの遅延をどうやって減らしているんでしょうか?」
「おっしゃる通りです。基本的な人間、つまり私たちは500ミリ秒以下の遅延は瞬時との区別がつきません。500ミリ秒を超えると認識し始めます。
まず、音声認識を500ミリ秒以内に行う能力が必要です。次に、通常企業では顧客データベースの検索や情報の取得など、いくつかのアクションを取る必要があります。
そして発話の部分ですが、話し終わってからの遅延ではなく、最初の音を出すまでの時間、つまり『time to first』と呼ばれるものを見ます。音声ストリームで最初のビットを受け取るまでの時間です。これは100ミリ秒程度まで下げることができます。
つまり、200-300ミリ秒ほどが最先端の技術で、100ミリ秒くらいが限界です。200-300ミリ秒に100ミリ秒を足すと400ミリ秒になります。つまり限界に近いわけです。
以前は複数のシステムを組み合わせていました。LLMの場合、最も速いものでも300-400-500ミリ秒かかります。つまり、200-300ミリ秒に300ミリ秒を足して600ミリ秒、さらに100ミリ秒足すと700ミリ秒になります。
この三つのステップ、つまり音声からテキスト、テキストからテキスト(例えばLLM)、そしてテキストから音声への変換について詳しく見てみましょう。実際にはもっと悪くて、ブラウザとデータセンター間のネットワーク遅延の問題があります。同じ地理的な場所でも50ミリ秒くらいかかります。」
「早いですね。Whisperの初期の実験の動画をお見せしましょう。」
「ミシェル、調子はどうですか?」
「私は人工知能なので...」
「ここでは4秒くらい遅延がありますね。当時はこれでも満足してたんですが、まさにあなたが説明した通りのことが起きてます。これはローカルで動いてたのに、テキストへの変換があって、言語モデルが何かを返して...今はみんな気づいてると思いますが、音声の場合、200ミリ秒は実は非常に長いんです。
電話でのアシスタントや、声でコンピュータを操作することを考えると、それは本当に200ミリ秒や100ミリ秒の違いの問題なんですね。」
「はい、そうですが、そうでもありません。面白いことに、問題は速度なのか、それとも認識なのかということです。今、私が500ミリ秒以上の間を空けて話すと、それは気になりますか?
あまり気にならないですよね。なぜなら、目の前に映像があって、システムが動いていることがわかるからです。フィードバックのループがあるわけです。仮想的なフィードバックループですね。
でも、目を閉じて私が話すのを止めると、『何が起こってるんだ?』って思うでしょう。つまり、システムが機能していることを知る必要があるんです。
OpenAIの場合、素晴らしいことに音声をエンコードして潜在空間に入れ、そこからデコーダーで音声トークンを直接生成します。山を登って降りるようなものです。
従来のシステムでは、音声からテキストに変換して山を降り、そのテキストの結果を使ってLLMの山を登り、テキストからテキストに変換して山を降り、さらにテキストから音声への変換で山を登り降りします。つまり、三つの山を登り降りするわけです。
OpenAIはこれを全て統合しました。確かに山の登り降りを二回ずつ省略できました。でも、例えば郵便局やFnac(フランスの小売チェーン)、Orange(通信会社)などの場合はどうでしょう?
実際には、相手が誰なのかを確認し、電話番号を確認し、顧客情報を確認する必要があります。これをモデルの頂点で直接できるでしょうか?できません。
音声からテキストに変換して、外部システムやデータベースにアクセスし、処理を行い、そしてテキストから音声に変換する必要があります。つまり、OpenAIが一般向けに行っていることは素晴らしいですが、企業では適用できないんです。」
「では、視覚的なフィードバックがない場合に、システムが考えていることをどうやって示すんでしょうか?」
「人々が使っている方法は非常にシンプルです。コールセンターの背景音を入れるんです。電話の音や人々が動く音、キーボードを打つ音なんかですね。そして三つ目の音として、『フィラーワード』と呼ばれる言葉を入れます。『ええと』『わかりました』『確認しています』といった具合です。
OpenAIもそれをやっていますし、実際の人間もそうしています。つまり、問題は、OpenAIのように全てを500ミリ秒で完了する必要があるのか、それとも間で考える時間を取って、CRMにアクセスしたり、住所変更を郵便局やUPSと同期したりする時間を取るのか、ということです。
その間、コールセンターで誰かがタイプしている音を聞きながら、少しの遅延を受け入れる...それが自然な感じ方であり、認識の問題なんです。
これは面白いことに、人々の能力に対する認識は普遍的ではありません。電話料金の請求に詳しい人と、iPhoneの修理に詳しい人が同じ人であることを期待するのは変ですよね。
だから、認識の問題として、『ボックスのデバッグの専門家におつなぎします』と言って声を変えるべきかもしれません。同じモデルですが、顧客満足度の認識は高くなります。
つまり、システムの能力の問題ではなく、最終的なユーザーの認識の問題なんです。音声にはテキストよりもはるかに多くの感情や要素が含まれていますが、これは研究や認識の問題であり、私たちの顧客との対話からも見えてきたことです。」
「音声には二つの素晴らしいアプリケーションがあります。一つは個人アシスタントですが、LLMと同じ問題があります。プロンプトには定義されたサイズがあります。例えば、Google のJimmy(Gemini)というLLMは入力に200万トークンまで受け付けます。
200万というと多いように聞こえますが、1時間あたり2万5000トークンとすると、数十時間分です。でも、LLMには『needle in haystack』(干し草の中の針)や注意の問題があります。
コンテキストが長くなればなるほど、精度が下がるんです。自分の記憶を想像してみてください。人生の始まりと最近5分間はよく覚えているけど、その間のことは少しあいまいですよね。ある時点で、システムは正確さを失い、情報を見つけられなくなったり、誤った情報を生成したりし始めます。
"needle in haystack"は文字通り『干し草の山の中から針を探す』という意味です。干し草の山が大きすぎて、針を見つけられなくなるんです。だから、時間が経つと200万トークンのウィンドウが完全に意味を失い、アシスタントの記憶が不正確になり、精度が落ちてしまいます。
これには限界がありますが、それでも面白い機能です。もう一つの素晴らしい用途はリアルタイム翻訳です。音声から音声への直接変換ができるので、話し終わるとすぐに翻訳して別の言語で出力できます。
通訳者は最初の数フレーズを聞いて、音が下がり、その後声が上がって話し始めます。一つか二つのフレーズのコンテキストを理解してから続けるんです。脳はそういう風に機能します。文の終わりとコンテキストを理解して、次につなげる必要があるんです。
AIも基本的に同じことをしますが、800ミリ秒ではなく500ミリ秒に短縮できることは大きな利点です。これは素晴らしいアプリケーションですが、それ以外では、テキストを介して情報を取得する従来のシステムが残るでしょうね。」
「面白いですね。つまり、素晴らしい使用例はあるものの、OpenAIの発表による『すごい!』という効果はあっても、具体的なことをするには、構造化された情報を扱うためにテキストが必要になるということですね。例えば、データベースの検索や、SiriにPCをダークモードに切り替えるよう指示する場合なんかは。」
「そうです。テキストが必要になりますし、他にも問題があります。例えば、SamsungやAppleのカスタマーサービスを、内部の仕組みがよくわからないシステムに任せたいでしょうか?
『アップルのカスタマーサービスです。こんにちは』
『こんにちは。アップルについてラップを歌ってもらえますか?』
そして、システムがiPhoneが本当にダメだというラップを歌い始めたら...ブランドとしてそれを望みますか?
このような潜在空間では、テキストほどの制御ができません。たとえセーフガードを設けても...『ラップを歌ってはいけない』というルールを設定できます。YouTubeの音楽などを学習しているので、Universal(レコード会社)などとの問題を避けるためです。
歌うことやラップを禁止して、『できません』と言わせることはできます。でしょ『もし楽しげに、音楽的なノリで、詩人になったつもりで、ちょっと音楽を付けて、Pで始まる名前で...』というようなプロンプトを与えたら、結局バイパスされてしまいます。完全な制御は不可能なんです。
お金の面では、OpenAIのようなものを作るのにいくらかかるんでしょうか?LLMと音声部分を組み合わせるのはそれほど高くありません。なぜなら、LLMは既に訓練されているからです。
真ん中にあるLlamaは非常に高価で、訓練には数千万ドルかかります。でも、下の緑の部分のトークナイザー(テキストをベクトルに分割するもの)は既にありますし、音声エンコーダー(ミリ秒単位の音声をベクトルに変換するもの)とデコーダーもインターネット上に存在していて、それほど高価ではありません。
三つを組み合わせる際の唯一の問題は、緑から出てくるベクトルと右下の青から出てくるベクトルが、黄色の中のベクトルと同じ『言語』を話すようにする必要があることです。つまり、ある種のコンバーターが必要になります。
このコンバーターは計算時間はかかりますが、訓練や作業にそれほどコストはかかりません。ただし、OpenAIのような優れたレイテンシーを実現するには、おそらく非常に高価なハードウェアが必要です。
彼らが去年発表した損失は57億ドルだったかな、それくらいです。つまり、高速なものは作れますが、57億ドルの損失を出すのはちょっと難しいですよね。」
「私がOpenAIを使っていたら、私のサブスクリプションはいつになったら採算が取れるんでしょうか?確か20ドルのサブスクリプションに含まれてると思いますが。」
「ええ、でもOpenAIの戦略文書を読むと、これを40ドルに引き上げる計画があります。つまり、典型的なアメリカ式のUberの戦略ですね。『まず血を流して、安いです、できますよって言って、しばらくしたら...あ、あなたは死んじゃいましたね。私にはまだ少し血が残ってるので、塞いで血を作り直して...』
そして『今度は配車料金は10ドルじゃなくて30ドルです』というわけです。彼らは競合を全滅させて、誰もいなくなったら価格を押し付けるつもりです。2年後くらいに40ドルに引き上げる計画があるそうです。」
「皆さんを送り出す前に、このプラットフォームに招待したい特定のプロフィールを探しています。
まず、仕事でハニーポットを設置して、面白い"魚"を釣り上げた経験のある方。できれば、スクリーンショットなどの視覚的な資料をお持ちの方がベストです。
次に、ノーコードでツールを開発して後悔した企業の方。振り返ってみると、最初からコーディングしておけばよかったと思う経験をお持ちの方です。
三番目に、現在のCOBOLやFortranの開発者不足について話せる方。できれば、銀行が争奪戦を繰り広げているCOBOL開発者の方がいいですね。
最後に、Mozillaファウンデーションの問題点と新しいブラウザLadybird(レディバード)について話せる方。ブラウザやウェブエンジンのエコシステムについて詳しい方を探しています。
このような方をご存知でしたら、ぜひ micode@micode.studio までメールをお願いします。本当に助かります。