はじめに
Azure OpenAI
と聞くと、GPT
モデルを想定する人が多いと思いますが、Whisper
という音声ファイルから文字起こしをしてくれるモデルがあります。Whisper
を使うことで、ボイスユーザーインターフェース(Voice User Interface
: VUI
)を開発することができるため、音声コマンドを受け入れたり、ユーザーとの対話を可能にするアプリケーションを構築できるなど、開発の幅が広がります。Whisper
はまだ発展途中のモデルではありますが、今後さらに利用されるようになることを期待して、Whisper
モデルの申請手順と利用方法を本記事にまとめます。
Azure OpenAI Whisperとは
Whisper
モデルは、音声ファイルの文字起こしに使用できるOpenAI
の音声テキスト変換モデルです。 このモデルは、英語の音声を含む音声ファイルの文字起こしに最適化されていますが、他の言語の音声を含む音声ファイルを文字起こしにも使用できます。
2023年11月現在、Azure OpenAI Whisper
が利用できるのは、North Central US
とWest Europe
の2つのリージョンに限ります。
また、Azure AI Speech
を介したWhisper
モデルは、East US
とSoutheast Asia
とWest Europe
の3つのリージョンのみで利用可能です。
Azure AI Speech
Azure
では文字起こしをができるモデルとして、Whisper
モデルの他に、Azure AI Speech
モデルが用意されています。ユースケースによって、Azure AI Apeech
モデルの方が適している場合があるので、Azure AI Speech
の利用を一度検討してみるとよいです。以下に、主なシナリオに対してのそれぞれのモデルの比較表をまとめます。
項目 | Azure OpenAI Whisper | Azure AI Speech |
---|---|---|
音声ファイルの高速処理 | 〇 | △ |
音声ファイルの英語翻訳 | 〇 | △ |
サポートされているファイル形式 | mp3、mp4、mpweg、mpga、m4a、wav、webm | mp3、wav、ogg |
音声ファイルの最大サイズ | 25 MB | 1 GB |
リアルタイム文字起こし | × | 〇 |
通話の概要 | × | 〇 |
話者の区別 | × | 〇 |
(〇:奨励、△:利用可能、×:利用不可)
申請方法
Azure OpenAI Whisper
を利用するには2023年11月現在、Azure OpenAI Service
の利用申請が必要になります。以下の申請フォームから必要項目を入力していただき、提出してください。
登録プロセスについては、Microsoftの公式ドキュメントにまとめられています。
https://learn.microsoft.com/en-us/legal/cognitive-services/openai/limited-access#registration-process
申請フォームの回答に関する注意事項
2023年11月現在の主な注意事項は以下になります。
-
Azure OpenAI
サービスは登録が必要で、現在は承認された企業顧客およびパートナーのみが利用できます。 - 医療のような高いリスクの分野での利用は承認可能性が低く、内部の向けの利用は承認可能性が高いです。
- 個人メールでの申請や、承認された企業顧客ではない場合、拒否される可能性があります。
申請フォームの回答項目
2023年11月現在の回答項目は以下の通りです。
- 氏名(First Name, Last Name)
-
Azure OpenAI Service
を利用申請するサブスクリプション数 - 利用申請するサブスクリプションID
- 申請者の会社メールアドレス(※1)
- 会社名情報(会社名、住所、都市名、都道府県、郵便番号、国、会社HPのURL、電話番号、業態(※2))
-
Microsoft
社員の連絡先(氏名、メールアドレス)(※3) - 顧客の代わりの申請ではないことの確認
- 利用申請するモデルの選択(※4)
- (
Text and code
モデルの利用用途の回答)(※5) -
Azure OpenAI Service
規約への同意 -
Azure OpenAI Service
のデータ処理への同意(※6) - サービス改善へのアンケート
(※1) 申請者の会社メールアドレス
(※2) 企業の業態
所属企業の業態を選択してください。
ISV
: 独自の製品やサービスを開発/提供する企業
SI
: システムインテグレーター
MSP
: Microsoft
製品を提供する企業
Internal
: Microsoft
社員
MVP
: Microsoft
に認定された人
Other
: 顧客、など
(※3) Microsoft社員の連絡先
Microsoft
社員の連絡先を持つ場合は入力してください。任意の回答項目です。
(※4) 利用申請するモデルの選択
必要なモデルを選択してください。
Text and code models
: テキストやコードを生成するモデル(GPT-3.5
、GPT-4
、等)
DALL-E 2 models
: 文字から画像を生成するモデル
OpenAI Whisper model
: 音声から文字起こしをするモデル
(※5) Text and codeモデルの利用用途の回答
利用申請でText and code model
を選択した場合のみ回答が必要になります。Text and code model
の利用用途を回答してください。利用用途として挙げられているのは以下の項目になります。
- 会話エージェントとの対話
- 会話エージェントの作成
- コード生成、変換シナリオ向けの利用
- 報道・解説向けの利用
-
MVP
、RD
によるデモへの使用 - 質問応答のための利用
- データの分類、分析、抽出
- ソース文書の検索
- コンテンツの要約
- 特定トピックの執筆支援
-
Azure OpenAI
カスタムモデルの作成
(※6) Azure OpenAI Serviceのデータ処理への同意
同意をする場合は「Yes, I attest」のチェックボタンを押してください。
Azure OpenAIサービスに提供されたデータの処理、使用、保存方法
Azure OpenAI Service
に関するデータとプライバシーに関する内容は、以下の公式ドキュメントでまとめられています。
詳しくは公式ドキュメントをあたってもらえればと思いますが、要旨は以下になります。(わかりやすいために表現を一部変えている部分がございます。詳細はドキュメントをご確認ください。)
【データ利用規則】
-
OpenAI
、マイクロソフト、第三者、のモデル・製品・サービスの改善には使用されません。 - モデルはステートレスであり、モデルにプロンプトは格納されません。また、プロンプトと生成コンテンツは、モデルのトレーニング、再トレーニング、改善、には使用されません。(ただし、学習データを利用してファインチューニングを行う場合は、ユーザー専用の
Azure OpenAI
モデルを利用することができます。) -
Azure OpenAI
では、プロンプト、生成されたコンテンツ、プロンプトに含まれる拡張データ、トレーニングデータ、検証データ、が処理されます。 - 顧客のプロンプトと生成コンテンツは、顧客の
Azure OpenAI
リソースがデプロイされているAzure
リージョンに格納されます。 -
on your data
を使ったグラウンディングでも、データは保存元からAzure OpenAI
にコピーされずに、接続されたデータソースから関連データを取得することで、プロンプトを拡張します。
on your data
の裏側ではAzure Cognitive Search
が利用されてグラウンディングされています。
【コンテンツフィルターと不正使用の監視】
-
Azure OpenAI Service
の有害な使用のリスクを軽減するために、Azure OpenAI Service
にはコンテンツフィルタリングと不正使用監視機能の両方が含まれています。 - コンテンツフィルタリングは、プロンプトと生成データをリアルタイムで評価し、有害なコンテンツの種類をチェックして、設定されたしきい値を超えるコンテンツの生成を停止するように構成しています。
- 不正使用を検出・軽減するために、
Azure OpenAI
はすべてのプロンプトと生成されたコンテンツを最大で30日間安全に保存しています。 - 機密性が高かったり法的に規制されている入力データの処理を含む場合で、有害な出力や誤用の可能性が低い場合では、不正使用の監視をオフにしてプロンプトや回答を保存させないことが可能です。
- 不正使用の可能性を評価する人間のレビュー担当者は承認された
Microsoft
の従業員であり、不正使用監視システムによってフラグが立てられた場合にのみ、プロンプトや生成データにアクセス可能です。
コンテンツフィルターについては以下の公式ドキュメントでまとめられています。
https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/content-filter?tabs=python
コンテンツフィルターには、4つの重要度レベルと4つのカテゴリ(憎悪、性的、暴力、自傷行為)があります。2023年11月現在でプレビューにはなりますが、各カテゴリに対して重大度レベルでフィルター処理の設定が可能です。
申請フォームの回答完了画面
送信ボタンを押すと、以下のようなサンクスページが表示されます。Text and code models
を利用申請した場合は10日以内での審査が行われるそうです。DALL-E 2 models
を利用申請した場合は明確な審査期間が書かれていないため、必要でなければDALL-E 2 models
の利用申請をしないほうが、早くAzure OpenAI Service
を利用できるようになるかもしれません。
登録した会社のメールアドレス宛にも、サンクスメールが届いていました。
私はMicrosoft
の社員であることが関係しているとは思いますが、当日の18:00に承認された旨のメールを受け取りました。(申請から承認まで1時間以内で完了。)
モデルのデプロイ方法
Microsoft
からAzure OpenAI Serivce
の承認メールを受け取ったら、Azure
ポータルでモデルをデプロイしていきます。Azure
ポータルでAzure OpenAI
リソースを作成後、「Azure OpenAI Studioに移動する」を押します。
Azure OpenAI Studio
に移動後、「デプロイ」>「+新しいデプロイの作成」を選択します。するとモデルのデプロイをするモーダルが表示されるため、モデルを「whisper」にします。
モデルバージョンやデプロイ名を入力した後、「作成」を押すとモデルのデプロイ完了です。
Whisperモデルの利用
2023年11月現在、Whisper
モデルを利用するためのSDK
は用意されていないため、REST API
を利用するしかありません。本記事では、REST API
を使って、コマンドラインとPython
のそれぞれでWhisper
モデルを利用してみます。
事前準備
Whisper
モデルを利用するために、事前準備をします。
キーとエンドポイントを取得
Azure
ポータルで、「キーとエンドポイント」を選択し、「キー1」と「エンドポイント」をコピーしておきます。
サンプルオーディオファイルを入手
以下のリポジトリから、サンプルの音声ファイルを取得してください。(私はwikipediaOcelot
をダウンロードしました。)
コマンドラインでの利用
コマンドラインを開き、以下のコマンドを実行します。<AZURE_OPENAI_ENDPOINT>
と<AZURE_OPENAI_KEY>
は、先ほどコピーしたキーとエンドポイントを設定してください。<YOUR_DEPLOYMENT_NAME>
は、Azure
ポータルで入力したモデルのデプロイ名を設定してください。
curl <AZURE_OPENAI_ENDPOINT>/openai/deployments/<YOUR_DEPLOYMENT_NAME>/audio/transcriptions?api-version=2023-09-01-preview \
-H "api-key: <AZURE_OPENAI_KEY>" \
-H "Content-Type: multipart/form-data" \
-F file="@./wikipediaOcelot.wav"
実行結果は以下のようになりました。
コマンドラインでの利用は以下のMicrosoft
公式ドキュメントを参考にしました。
Pythonでの利用
まず、必要なライブラリをインストールします。
pip install requests
Pythonのソースコードは以下になります。
import requests
azure_openai_endpoint = "<AZURE_OPENAI_ENDPOINT>"
deployment_name = "<YOUR_DEPLOYMENT_NAME>"
api_version = "2023-09-01-preview"
azure_openai_key = "<AZURE_OPENAI_KEY>"
file_path = "./wikipediaOcelot.wav"
url = f"{azure_openai_endpoint}/openai/deployments/{deployment_name}/audio/transcriptions?api-version={api_version}"
headers = {
"api-key": azure_openai_key,
}
files = {
"file": (file_path, open(file_path, "rb")),
}
response = requests.post(url, headers=headers, files=files)
if response.status_code == 200:
print("API call successful. Response:")
print(response.json())
else:
print(f"API call failed with status code {response.status_code}. Response:")
print(response.text)
コマンドラインで、main.py
を実行します。
python main.py
ソースコードを以下のGitHub
リポジトリに保存しましたので、必要であればクローンして使ってみてください。
おわりに
本記事では、Azure OpenAI Whisper
の利用申請からREST API
を使ったWhisper
の利用方法を、コマンドラインとPython
の2通りで紹介しました。Azure AI Speech
と比較してできることが少ないWhisper
ですが、今後はリアルタイムな文字起こしなど、できることが増えていってほしいと思います。