Azure OpenAI Serviceの学習を行っている時に、Azure OpenAI Serviceを介したWhisper モデルでプロンプトを使用できることを知りました。
本記事では、Azure OpenAI ServiceのWhisperモデルにおいて、プロンプトによる文字訂正がどの程度行えるのかを簡単に確認しました。
Whisper モデルとは
Whisper モデルは、音声ファイルの文字起こしに使用できるOpen AIの音声テキスト変換のモデルです。
Whisper モデルは、Azure OpenAI Service経由とAzure AI Speech経由の使用ができ、以下のように使い分けます。
| サービス | Azure OpenAI Service | Azure AI Speech |
|---|---|---|
| 場面 | 速く単一の音声を文字に起こす場合や他の言語を英語に翻訳する場合など | サイズの大きな音声ファイルの処理や多数のファイルを一度に処理する場合など |
| ファイル | mp3、mp4、mpweg、mpga、m4a、wav、webm | mp3、wav、ogg |
詳しい使い分けは以下を参照してください。
Whisperモデルのプロンプトについて
Azure OpenAI Service経由のWhisperモデルでは、プロンプトを使用することが出来ます。*1
Whisperモデルはプロンプトに似たスタイルで文字起こしを行います。このため、プロンプトに特定の専門用語や表現を含めると、モデルがそれらを使用して文字起こしを行うことが期待できます。
プロンプトを利用するシナリオは以下のような場面で利用できます。
| シナリオ | 説明 |
|---|---|
| 単語の訂正 | 専門用語や略語の誤認識を防ぐために、プロンプトに正しい単語を含めることで精度を向上させます |
| セグメント間のコンテキスト保持 | 音声ファイルをセグメントに分割した際、前のセグメントの文字起こしをプロンプトとしてモデルに提供することによる文脈保持します |
| 句読点の使用 | プロンプトに句読点を含めることで、モデルが文字起こしの際に適切な句読点を使用するよう促します |
| フィラーワードの保持 | 「ええと」「うーん」などのフィラーワードを含むプロンプトを使用することで、モデルがこれらの言葉を文字起こしに反映させます |
| 希望する表記スタイルの適用 | 簡体字や繁体字など、望む表記スタイルのプロンプトを提供することで、モデルが指定したスタイルで文字起こしをします |
プロンプトの検証
検証したい点
今回検証したいポイントは、大きく分けて2つあります。
- 文字の訂正
- プロンプトを使用した際、誤字を修正できるかを確認します。
- プロンプトの柔軟性
- プロンプトに対して、どの程度柔軟に対応できるかを確認します。
音声ファイル
以下のリンクにある音声ファイルデータを使用します。
Common Voice Delta Segment 20.0のファイル内にあるcommon_voice_ja_41715223.mp3を利用します。音声ファイル内容はデータセットによると次の通りです。
彼らはここで茶を飲み、ここで休息する外ほかに、ここで海水着を洗濯させたり、ここで鹹(しお)はゆい身体(からだ)を清めたり、ここへ帽子や傘を預けたりするのである。
この音声ファイルをWhisperモデルで文字起こしさせると以下のようになります。
彼らはここで茶を飲み、ここで休息する、外、他、に、ここで海水儀を洗濯させたり、ここで潮はゆい身体を清めたり、ここへ帽子や傘を預けたりするのである。
「外ほかに」を「外、他、に」「海水着」を「海水儀」、「鹹」を「潮」と誤認識していることが確認できます。
Azure OpenAI ServiceのWhisperモデルの実装方法
Azure OpenAI ServiceのWhisperモデルの具体的な実装方法については、以下のリンクを参考にしてください。
検証内容
今回の検証では、先ほど誤認識していた「外ほかに」「海水着」「鹹」、そして誤認識しやすいと考えられる「身体」を正しく文字起こしするため、以下の4つのパターンのプロンプトを使用してテストを行います。
- 指示形式
- 「~を-にしてください」のように、チャット形式で具体的な指示をプロンプトとして与えます。
- 辞書形式
- 単語を辞書のようにしてプロンプトを与えます。
- 類似文形式
- 対象の文と似たような文章を作成して、プロンプトを与えます。
- 同一文章
- 音声ファイル内のデータセットに記載されている文章をプロンプトとして与えます。
検証結果
結果は以下のようになりました。
| 形式 | プロンプト | 出力結果 |
|---|---|---|
| 指示形式 | 「かいすいぎ」は「海水着」、「そとほかに」は「外ほかに」、「からだ」は「身体」、「しお」は「鹹」で文字起こししてください。 | 彼らはここで茶を飲み、ここで休息する、そとほかに、ここで海水着を洗濯させたり、ここで潮はゆい身体を清めたり、ここへ帽子や傘を預けたりするのである。 |
| 辞書形式 | 海水着、外ほかに、身体、鹹 | 彼らはここで茶を飲み、ここで休息する、外ほかに、ここで海水着を洗濯させたり、ここで潮はゆい身体を清めたり、ここへ帽子や傘を預けたりするのである。 |
| 類似文形式 | 彼らはここで海水着を干し、ここで休息する外ほかに、ここで鹹を含んだ身体を温泉で癒やしたり、ここへ荷物や靴を預けたりするのである。 | 彼らはここで茶を飲み、ここで休息する外ほかに、ここで海水着を洗濯させたり、ここで潮はゆい身体を清めたり、ここへ帽子や傘を預けたりするのである。 |
| 同一文章 | 彼らはここで茶を飲み、ここで休息する外ほかに、ここで海水着を洗濯させたり、ここで鹹はゆい身体を清めたり、ここへ帽子や傘を預けたりするのである。 | 彼らはここで茶を飲み、ここで休息する外ほかに、ここで海水着を洗濯させたり、ここで鹹はゆい身体を清めたり、ここへ帽子や傘を預けたりするのである。 |
出力結果を確認すると、以下のようになります。
- 指示形式
- 「外ほかに」が「そとほかに」、「鹹」が「潮」と誤認識されました。他の形式に比べて、誤認識が多いです。
- 辞書形式
- 「鹹」が「潮」と誤認識されました。
- 類似文形式
- 「鹹」が「潮」と誤認識されましたが、指示形式や辞書形式よりは句読点の使い方がデータセットの文章に近いです。
- 同一文章
- 誤認識が無く、句読点の使い方がデータセットに近いです。
まとめ
今回はAzure OpenAI ServiceのWhisperモデルのプロンプトについて確認しました。
「~してください」のような指示形式でも誤認識が多く、プロンプトの指示を適切に解釈できていないことが分かりました。これは、チャットモデルのような明確な指示でモデルを制御するような学習がされていないためです。
また、プロンプトに音声と同一の文章を使用すると、誤認識はなくなりますが、それでは文字起こしの意味がなくなってしまうため、実用的ではありません。
そのため、Whisperモデルで文字起こしを行った後、その結果をチャットモデルに入力し、修正を行うことで、より正確な結果を得られるようにする、といった工夫が必要になりそうです。
*1:2025/1/23時点では、Whisperモデルはプロンプト指示に従うような訓練(instruction-following techniques)を受けていないと書かれています。このため、具体的な『~してください』や『~に修正してください』といった形式には適切に対応できないと考えられます。また、長いプロンプトを記述しても、最初の224トークンしか考慮されない点も注意した方が良いです。