Azure SpeechでWhisper Baseが表示されない原因と有効化・設定ガイド(East USのバッチ文字起こし対応)

Azure Speechのバッチ文字起こしで「Whisper Baseを使いたいのに、Models APIが{"values":[]}しか返さない」という相談が急増しています。本稿では、東海岸リージョン(East US)を前提に、原因の切り分けから有効化依頼、REST/CLI/コード例、マルチリンガル(タミル語 ta‑IN、ヒンディー語 hi‑IN など)の実装上の注意点まで、現場運用で役立つ具体手順を網羅的に解説します。

目次

背景と問題の全体像

Azure Speechの新しいバッチ文字起こしでは、Whisper Baseなどのモデルが「Models API」で公開・選択できる設計です。しかし、East USの既存リソースでAPIを叩くと、{"values":[]}の空配列が返り、モデル選択ができない事象が報告されています。これにはいくつかの典型原因があり、順序立てて対処すればほぼ解消できます。

  • リソース種別の誤り(Cognitive Services汎用アカウントで呼び出している)
  • APIバージョンの不一致(プレビュー版の指定漏れ・旧APIを参照)
  • サブスクリプション/リージョン単位の機能フラグ未付与
  • エンドポイントURLやヘッダー(Ocp-Apim-Subscription-Key 等)の取り違え

先に結論(要点の整理)

最短で原因を特定したい方は、以下の順で確認してください。

  1. リソース種別:対象がSpeech Servicesか(認知サービス(Cognitive Services)では不可)。
  2. APIバージョン:2024-05-15-previewを明示指定して呼び出しているか。
  3. 新規リソース:同リージョン(East US)に新規のSpeech Servicesを作って再テスト。
  4. サポート依頼:出ない場合はサブスクリプション/リージョンでWhisperが未有効。サポートに有効化依頼。
  5. 検証:有効化後、Models APIでid: "whisper-base"が返ることを確認。

用語と前提の整理

  • Speech Servicesリソース:音声系(STT/TTS)専用のリソース種別。Whisperはこれに紐づきます。
  • Cognitive Services(汎用):複数AI機能をまとめたアカウント。Speechの新機能が表示されない場合があります。
  • Models API:バッチ文字起こしで使用可能なモデル一覧を返すAPI。
  • East US:本文は東海岸リージョン前提。エンドポイントは通常https://<リソース名>.cognitiveservices.azure.com/形式です。

原因別チェック表(症状→確認→対処)

症状主原因最短の確認対処
Models APIが{"values":[]}リソース種別がCognitive ServicesAzureポータルのリソース「種類」が「Speech Services」か確認Speech Servicesリソースを作成し直し、同じAPIを実行
モデルが表示されないAPIバージョン不一致リクエストURLにapi-version=2024-05-15-previewが含まれるかプレビュー版を明示し再実行
新規でも空配列機能フラグ未付与(サブスクリプション/リージョン)同リージョンで別名リソースでも空かサポートに「Whisper Base有効化」を依頼
401/403エラーキーまたはロールの不備正しいキー/エンドポイント/ロールの再確認アクセスポリシー調整・キー再発行

Azureポータルでの確認手順(リソース種別)

対象リソースの「概要」を開き、「種類」がSpeech Servicesになっていることを確認します。もしCognitive Servicesや「マルチサービス アカウント」等と表示されている場合は、Whisperが一覧に出ないのが正常です。この場合、同じサブスクリプション・同じリージョン(East US)で新しくSpeech Servicesを作成して試してください。

RESTによる即席ヘルスチェック(Models API)

下記のように呼び出し、valuesにwhisper-baseが含まれるか確認します。

GET https://&lt;your-speech-resource&gt;.cognitiveservices.azure.com/speechtotext/models?api-version=2024-05-15-preview
Ocp-Apim-Subscription-Key: &lt;your-key&gt;

レスポンスに次のようなエントリが出れば有効化済みです。

{
  "id": "whisper-base",
  "kind": "Transcription",
  "displayName": "Whisper Base",
  "description": "OpenAI Whisper base model for multilingual speech recognition",
  "createdDateTime": "2024-06-10T00:00:00Z"
}

空配列({"values":[]})のままであれば、後述の「新規リソース作成」→「サポート依頼」の順で解消が見込めます。

APIバージョンの再確認と推奨バージョン

バッチ文字起こしの最新機能は2024-05-15-preview系で提供されています。URLクエリ文字列にこのバージョンを必ず付けてください。旧v3系のエンドポイント(例:/speechtotext/v3.1/...)へ誤って投げていると、Whisperモデルは列挙されません。

新規Speech Servicesリソースの作成とテスト

既存リソースが古い場合や機能フラグ未付与のケースでは、新規作成が有効です。作成時のポイント:

  • リージョン:East USを選択(既存と同一条件で比較しやすい)。
  • 名前規約:会社-環境-地域-用途など、運用で識別しやすい命名。
  • 価格レベル:商用用途ならS系を推奨。Free枠は検証向けで制限が多いことがあります。
  • ネットワーク:プライベートエンドポイントやファイアウォールを使う場合は、後述のストレージSASも含め外向き通信要件を整理。

作成後、同じModels APIを叩いてwhisper-baseが列挙されるかを確認します。

サポート依頼のベストプラクティス(テンプレート付き)

新規リソースでも表示されない場合、Whisperがサブスクリプション/リージョンに対して未有効の可能性が高いです。以下のテンプレートでサポートチケットを発行します。

件名:Whisper Baseモデルの有効化依頼(East US)

対象サブスクリプションID:
対象リソース名:(種類:Speech Services、リージョン:East US)
現象:Models APIの応答が {"values": []} で、whisper-base が表示されません。
希望:当該サブスクリプション/East US で Whisper Base を有効化してください。
用途:多言語のバッチ文字起こし(例:ta-IN / hi-IN 音声)。
補足:APIバージョン 2024-05-15-preview で呼び出し済み、新規Speechリソースでも再現します。 

依頼後は数営業日で機能が有効化され、Models APIにwhisper-baseが現れるようになります。

バッチ文字起こしの実行例(Whisper Base)

Whisper Baseが列挙されるようになったら、実ジョブを作成します。以下はta-IN(タミル語)とhi-IN(ヒンディー語)の自動判別を想定した例です。

POST https://<your-speech-resource>.cognitiveservices.azure.com/speechtotext/batch/transcriptions?api-version=2024-05-15-preview
Ocp-Apim-Subscription-Key: <your-key>
Content-Type: application/json

{
"displayName": "whisper-multilingual-ta-hi",
"description": "Whisper Baseで多言語バッチ文字起こし",
"model": {
"id": "whisper-base",
"kind": "Transcription"
},
"contentUrls": [
"https://.blob.core.windows.net//audio1.wav?",
"https://.blob.core.windows.net//audio2.mp3?"
],
"properties": {
"wordLevelTimestampsEnabled": true,
"diarizationEnabled": true,
"profanityFilterMode": "None",
"punctuationMode": "DictatedAndAutomatic",
"languageIdentification": {
"mode": "Automatic",
"candidateLocales": ["ta-IN", "hi-IN", "en-IN"]
},
"timeToLive": "P1D"
}
} 

レスポンスのジョブIDを使ってGETすると、進行状況や出力URLを取得できます。完了後、結果(JSON/テキスト)から文・単語タイムスタンプや話者分離を参照できます。

実装時のポイント(多言語・品質・速度)

  • 言語自動判別:誤判定を抑えるため、candidateLocalesは実際に想定される言語に絞り込むのがおすすめです。
  • サンプリングレート:16 kHz以上、モノラルPCMが安定。MP3や電話品質(8 kHz)でも動作しますが、精度は原音質に比例します。
  • 話者分離:会議録ではdiarizationEnabledを有効化。発話交替の多い会議ほど要件に合致します。
  • 同時実行:多数ジョブ投入時は並列度を絞り、ストレージ帯域/SAS有効期限の設計を見直します。
  • 結果の再利用:出力JSONから格納スキーマを設計しておくと、後続の要約・翻訳・インデキシングが楽になります。

エンドポイントとヘッダーの確認

項目設定例備考
エンドポイントhttps://<your-speech-resource>.cognitiveservices.azure.comリソース固有ドメインを推奨(地域汎用ドメインではない)
モデル一覧/speechtotext/models?api-version=2024-05-15-previewWhisper Baseが列挙されるか確認
バッチ作成/speechtotext/batch/transcriptions?api-version=2024-05-15-previewジョブ作成(POST)
認証ヘッダーOcp-Apim-Subscription-Key: <key>キーはSpeech Servicesリソースのもの

PowerShell/CLI/コードのスニペット

PowerShell(Models API)

$endpoint = "https://&lt;your-speech-resource&gt;.cognitiveservices.azure.com"
$key = "&lt;your-key&gt;"
$uri = "$endpoint/speechtotext/models?api-version=2024-05-15-preview"
$headers = @{ "Ocp-Apim-Subscription-Key" = $key }
Invoke-RestMethod -Uri $uri -Headers $headers -Method GET | ConvertTo-Json -Depth 10

Azure CLI(REST)

az rest --method get `
  --headers "Ocp-Apim-Subscription-Key=&lt;your-key&gt;" `
  --url "https://&lt;your-speech-resource&gt;.cognitiveservices.azure.com/speechtotext/models?api-version=2024-05-15-preview"

Python(requests)

import requests, json

endpoint = "https://.cognitiveservices.azure.com"
key = ""

# 1) モデル一覧

r = requests.get(
f"{endpoint}/speechtotext/models",
params={"api-version": "2024-05-15-preview"},
headers={"Ocp-Apim-Subscription-Key": key}
)
print("models:", r.status_code, r.text)

# 2) バッチ作成(Whisper Base)

payload = {
"displayName": "whisper-multilingual-ta-hi",
"description": "Whisper Base batch transcription",
"model": {"id": "whisper-base", "kind": "Transcription"},
"contentUrls": [
"https://.blob.core.windows.net//audio1.wav?"
],
"properties": {
"wordLevelTimestampsEnabled": True,
"diarizationEnabled": True,
"languageIdentification": {
"mode": "Automatic",
"candidateLocales": ["ta-IN", "hi-IN"]
}
}
}

r = requests.post(
f"{endpoint}/speechtotext/batch/transcriptions",
params={"api-version": "2024-05-15-preview"},
headers={"Ocp-Apim-Subscription-Key": key, "Content-Type": "application/json"},
data=json.dumps(payload))
print("create:", r.status_code, r.text) 

よくある落とし穴(現場メモ)

  • 地域コードの取り違え:East USとEast US 2は別リージョンです。エンドポイントを間違えるとモデルが出ません。
  • キーとエンドポイントの組み合わせ:別リソースのキーで呼び出すと403が返ることがあります。
  • SAS有効期限切れ:ジョブ作成直後にSASが失効すると取り込みに失敗します。TTLはバッファ長めに。
  • 大量一括投入:ストレージのスロットリングで遅延・失敗。コンテナ分割やリトライ間隔を調整。
  • プライベート環境:SpeechとStorageの両方にプライベートエンドポイントを張る場合、DNS解決とFW許可をセットで設計。

エラー別トラブルシュート速引き

HTTP状況原因候補対応
400リクエスト不正プロパティ名の不一致/URL誤りAPIバージョンとJSON構造を再確認
401未認証キー欠落/無効正しいキーをヘッダーに設定
403権限不足別リソースのキー利用/機能未有効キー紐付け再確認・有効化依頼
404見つからないエンドポイントのリソース名誤りドメイン名・リージョンを確認
429スロットリング同時実行/レート超過指数バックオフでリトライ・並列数調整

品質向上の実践ノウハウ

  • 短いクリップに分割:60~120秒程度で分割し並列処理。長音声の一発処理より安定し、再処理もしやすい。
  • ノイズ対策:無音/雑音を事前カット。AGCやノイズ抑制を軽く入れると精度が向上します。
  • 辞書・表記ゆれ:後処理で専門用語・人名の正規化辞書を当てると読みやすさが大幅に改善します。
  • 時刻合わせ:ファイル名やメタに録音時刻を持たせると、議事録のタイムライン生成が容易です。

一時的な代替策(Whisperが使えない間)

有効化前でも、既存の標準モデルでバッチ文字起こしは可能です。ただし多言語の精度・堅牢性はWhisperに見劣りすることが多いため、業務要件が多言語であれば、早めの機能有効化申請を推奨します。暫定運用では以下の工夫で品質を底上げできます。

  • 対象言語をできるだけ単一化し、言語設定を固定する(誤検出のリスク低減)。
  • 音質の良い入力(16 kHz以上・モノラル・WAV)を優先。
  • 短時間クリップ分割+失敗時の自動再投入(リトライ)を仕組み化。

監視と運用(ジョブ状態・メトリクス)

運用では、ジョブ状態の監視と失敗時の自動対応が重要です。

  • 状態監視:ジョブIDに対する定期ポーリング(またはWebhook相当の仕組みがあれば活用)。
  • 再実行ポリシー:429や一時的なネットワーク障害に対して指数バックオフで自動リトライ。
  • ログ保全:APIレスポンス・入力SAS・コンテンツURLを監査目的で一定期間保持。

セキュリティとネットワーク設計

  • 最小権限の原則:SASは読み取りに限定し、有効期限を最小に設定。
  • プライベートアクセス:Private Link利用時はDNS解決とVNETルートを合わせ込む。ストレージ側のプライベートエンドポイントも忘れずに。
  • キー管理:定期ローテーションを行い、Key Vault連携でアプリに安全に供給。

East USでの注意事項

  • リージョン表記:ポータルでは「East US」、APIではeastus表記が使われますが、エンドポイントはリソース固有ドメインに合わせます。
  • 容量とスロットリング:大規模処理は夜間や時間帯分散を検討。キューイングで平準化すると安定します。

検証チェックリスト(貼って使える)

  • [ ]リソース種類がSpeech Servicesである
  • [ ]api-version=2024-05-15-previewで呼び出している
  • [ ]新規Speechリソース(East US)でも{"values":[]}か再確認
  • [ ]サポートに「Whisper Base有効化」を依頼済み(サブスクリプションID/リソース名を明記)
  • [ ]Models APIにid: "whisper-base"が出ている
  • [ ]ジョブ作成でmodel.id="whisper-base"を指定し、成功する

FAQ

Q. 既存のCognitive Services(汎用)から切り替える必要がありますか?
A. はい。WhisperはSpeech Services専用です。新規にSpeechリソースを用意し、そちらのキーとエンドポイントで呼び出してください。

Q. Whisper Base以外(Small/Medium/Largeなど)も使えますか?
A. 提供状況はサブスクリプション/リージョンとAPIバージョンに依存します。まずはModels APIで列挙されるかを確認し、必要に応じてサポートへ可用性を問い合わせてください。

Q. ta‑IN/hi‑INの混在会話でも自動判別できますか?
A. 可能です。languageIdentificationで候補を絞り込むと精度が安定します。品質は音質や話者混在の度合いにも左右されます。

Q. 無料枠でも試せますか?
A. 仕様上は検証可能な場合がありますが、スループット・割当の制限に留意してください。商用運用ではS系ティアを推奨します。

まとめ

Whisper BaseがModels APIに出ない場合、①リソース種別(Speech Services 専用)②APIバージョン(2024-05-15-preview)③新規リソースによる再検証④サポートへの有効化依頼、の順に進めれば、ほとんどのケースは解決します。有効化後はwhisper-baseが列挙され、マルチリンガルのバッチ文字起こし(ta‑IN / hi‑IN など)を高品質に運用できます。最後にもう一度、Models APIでの出力確認をお忘れなく。

付録:コピペ用cURL集

モデル一覧

curl -sS -X GET \
  -H "Ocp-Apim-Subscription-Key: &lt;your-key&gt;" \
  "https://&lt;your-speech-resource&gt;.cognitiveservices.azure.com/speechtotext/models?api-version=2024-05-15-preview"

ジョブ作成(Whisper Base)

curl -sS -X POST \
  -H "Ocp-Apim-Subscription-Key: &lt;your-key&gt;" \
  -H "Content-Type: application/json" \
  -d '{
    "displayName": "whisper-multilingual",
    "model": { "id": "whisper-base", "kind": "Transcription" },
    "contentUrls": [
      "https://&lt;your-storage&gt;.blob.core.windows.net/&lt;container&gt;/sample.wav?&lt;SAS&gt;"
    ],
    "properties": {
      "languageIdentification": {
        "mode": "Automatic",
        "candidateLocales": ["ta-IN", "hi-IN"]
      }
    }
  }' \
  "https://&lt;your-speech-resource&gt;.cognitiveservices.azure.com/speechtotext/batch/transcriptions?api-version=2024-05-15-preview"

ジョブ取得

curl -sS -X GET \
  -H "Ocp-Apim-Subscription-Key: &lt;your-key&gt;" \
  "https://&lt;your-speech-resource&gt;.cognitiveservices.azure.com/speechtotext/batch/transcriptions/&lt;jobId&gt;?api-version=2024-05-15-preview"

付録:プロパティ選択の目安

プロパティ値例効果
wordLevelTimestampsEnabledtrue単語ごとの時刻を返す
diarizationEnabledtrue話者分離(スピーカーラベル)を付与
profanityFilterModeNone / Masked不適切語のマスク・抑制
punctuationModeAutomatic / DictatedAndAutomatic句読点の自動付与
languageIdentification{"mode":"Automatic","candidateLocales":["ta-IN","hi-IN"]}候補言語を絞って自動判別

付録:サンプル応答の読み方

ジョブ完了時の応答には、結果ファイルへのURLや各種メタデータが含まれます。格納場所(SAS)の期限切れに注意し、ダウンロード後は自前ストレージへ保全してください。二次加工(要約・翻訳・検索インデックス化)を見据え、スキーマ設計を先に決めておくと後工程がスムーズです。

最後に(運用の地雷を避ける)

  • スケーリング設計:上限近辺の負荷を長時間かけるとスロットリングが増えます。データ投入をバッチ化し、ピーク平準化を徹底。
  • 再現性確保:同一オーディオでパラメータを固定して品質比較。変更点を1つずつ検証して差分を明確化。
  • 監査の観点:誰がいつどの音声を処理したかを記録。後追い調査が容易になります。

ポイントまとめ

  • WhisperはSpeech Services専用。Cognitive Servicesでは表示されません。
  • APIは2024-05-15-previewを明示。旧エンドポイントでは列挙されません。
  • 新規リソースでも出なければ、サブスクリプション/リージョンの有効化をサポートへ依頼。
  • 有効化後はModels APIにid: "whisper-base"が現れるはずです。
  • 多言語はcandidateLocalesを絞って精度と安定性を両立。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次