Speech サービスを使用すると、REST API を使用して テキストを合成音声に変換 し、リージョンで サポートされている音声の一覧を取得 できます。 この記事では、承認オプション、クエリ オプション、要求を構造化する方法、応答を解釈する方法について説明します。
ヒント
テキスト読み上げ REST API のユース ケースは限られています。 Speech SDK を使用できない場合にのみ使用してください。 たとえば、Speech SDK を使用すると、イベント をサブスクライブして 、テキスト読み上げ処理と結果に関する詳細な分析情報を得ることができます。
テキスト読み上げ REST API では、多くのロケールでニューラル テキスト読み上げ音声をサポートします。 使用可能な各エンドポイントは、リージョンに関連付けられます。 使用する予定のエンドポイントまたはリージョンの API キーが必要です。 詳細情報へのリンクを次に示します。
- 音声の完全な一覧については、 Speech サービスの言語と音声のサポートに関するページを参照してください。
- リージョンの可用性の詳細については、 Speech サービスでサポートされているリージョンに関するページを参照してください。
- 21Vianet エンドポイントによって動作するAzure GovernmentとMicrosoft Azureについては、ソブリン クラウドに関するこの記事を参照してください。
重要
コストは、標準音声とカスタム音声によって異なります。 詳細については、 テキスト読み上げ価格に関するページを参照してください。
テキスト読み上げ REST API を使用する前に、サービスにアクセスするための認証の一部としてトークン交換を完了する必要があることを理解してください。 詳細については、「 認証」を参照してください。
音声の一覧を取得する
tts.speech.microsoft.com/cognitiveservices/voices/list エンドポイントを使用して、特定のリージョンまたはエンドポイントの音声の完全な一覧を取得できます。 音声リスト エンドポイントにリージョンのプレフィックスを付けて、そのリージョンの音声の一覧を取得します。 たとえば、 westus リージョンの音声の一覧を取得するには、 https://westus.tts.speech.microsoft.com/cognitiveservices/voices/list エンドポイントを使用します。 サポートされているすべてのリージョンの一覧については、 リージョン のドキュメントを参照してください。
メモ
プレビューの音声とスタイル は、リージョンのサブセットでのみ使用できます。 パブリック プレビューで音声とスタイルをサポートするリージョンの現在の一覧については、 Speech Service リージョンの表を参照してください。
リクエストヘッダー
次の表に、テキスト読み上げ要求の必須ヘッダーと省略可能なヘッダーを示します。
| ヘッダー | 説明 | 必須または省略可能 |
|---|---|---|
Ocp-Apim-Subscription-Key |
あなたの Speech リソース キー。 | このヘッダーまたは Authorization が必要です。 |
Authorization |
Bearerという単語の前に置く承認トークン。 詳細については、「 認証」を参照してください。 |
このヘッダーまたは Ocp-Apim-Subscription-Key が必要です。 |
要求本文
このエンドポイントへの GET 要求には本文は必要ありません。
サンプル依頼
この要求には、承認ヘッダーのみが必要です。
GET /cognitiveservices/voices/list HTTP/1.1
Host: westus.tts.speech.microsoft.com
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY
curl コマンドの例を次に示します。
curl --location --request GET 'https://YOUR_RESOURCE_REGION.tts.speech.microsoft.com/cognitiveservices/voices/list' \
--header 'Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY'
応答のサンプル
サポートされているすべてのロケール、音声、性別、スタイル、その他の詳細を含む JSON 本文を含む応答を受け取る必要があります。 各音声の WordsPerMinute プロパティを使用して、出力音声の長さを推定できます。 この JSON の例は、応答の構造を示す部分的な結果を示しています。
[
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
"DisplayName": "Jenny",
"LocalName": "Jenny",
"ShortName": "en-US-JennyNeural",
"Gender": "Female",
"Locale": "en-US",
"LocaleName": "English (United States)",
"StyleList": [
"assistant",
"chat",
"customerservice",
"newscast",
"angry",
"cheerful",
"sad",
"excited",
"friendly",
"terrified",
"shouting",
"unfriendly",
"whispering",
"hopeful"
],
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"ExtendedPropertyMap": {
"IsHighQuality48K": "True"
},
"WordsPerMinute": "152"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyMultilingualNeural)",
"DisplayName": "Jenny Multilingual",
"LocalName": "Jenny Multilingual",
"ShortName": "en-US-JennyMultilingualNeural",
"Gender": "Female",
"Locale": "en-US",
"LocaleName": "English (United States)",
"SecondaryLocaleList": [
"de-DE",
"en-AU",
"en-CA",
"en-GB",
"es-ES",
"es-MX",
"fr-CA",
"fr-FR",
"it-IT",
"ja-JP",
"ko-KR",
"pt-BR",
"zh-CN"
],
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"WordsPerMinute": "190"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (ga-IE, OrlaNeural)",
"DisplayName": "Orla",
"LocalName": "Orla",
"ShortName": "ga-IE-OrlaNeural",
"Gender": "Female",
"Locale": "ga-IE",
"LocaleName": "Irish (Ireland)",
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"WordsPerMinute": "139"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (zh-CN, YunxiNeural)",
"DisplayName": "Yunxi",
"LocalName": "云希",
"ShortName": "zh-CN-YunxiNeural",
"Gender": "Male",
"Locale": "zh-CN",
"LocaleName": "Chinese (Mandarin, Simplified)",
"StyleList": [
"narration-relaxed",
"embarrassed",
"fearful",
"cheerful",
"disgruntled",
"serious",
"angry",
"sad",
"depressed",
"chat",
"assistant",
"newscast"
],
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"RolePlayList": [
"Narrator",
"YoungAdultMale",
"Boy"
],
"WordsPerMinute": "293"
},
// Redacted for brevity
]
HTTP 状態コード
各応答の HTTP 状態コードは、成功または一般的なエラーを示します。
| HTTP 状態コード | 説明 | 考えられる理由 |
|---|---|---|
| 200 | わかりました | 要求が成功しました。 |
| 400 | 要求が正しくありません | 必要なパラメーターが見つからない、空、または null です。 または、必須または省略可能なパラメーターに渡される値が無効です。 一般的な理由は、ヘッダーが長すぎる場合です。 |
| 401 | 不正 | 要求が承認されていません。 リソース キーまたはトークンが有効で、正しいリージョンにあることを確認します。 |
| 429 | 要求が多すぎます | リソースに対して許可されている要求のクォータまたはレートを超えました。 |
| 502 | 無効なゲートウェイ | ネットワークまたはサーバー側の問題があります。 この状態は、無効なヘッダーを示している場合もあります。 |
テキストを音声に変換する
cognitiveservices/v1 エンドポイントを使用すると、音声合成マークアップ言語 (SSML) を使用してテキストを音声に変換できます。
リージョンとエンドポイント
これらのリージョンは、REST API を介したテキスト読み上げでサポートされています。 必ず、Speech リソースリージョンに一致するエンドポイントを選択してください。
標準ボイス
次の表を使用して、リージョンまたはエンドポイントごとの ニューラル音声の可用性 を確認します。
| 地域 | エンドポイント |
|---|---|
| オーストラリア東部 | https://australiaeast.tts.speech.microsoft.com/cognitiveservices/v1 |
| ブラジル南部 | https://brazilsouth.tts.speech.microsoft.com/cognitiveservices/v1 |
| カナダ中部 | https://canadacentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| カナダ東部 | https://canadaeast.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国中部 | https://centralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 東アジア | https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国東部 | https://eastus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国東部 2 | https://eastus2.tts.speech.microsoft.com/cognitiveservices/v1 |
| フランス中部 | https://francecentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| ドイツ中西部 | https://germanywestcentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| インド中部 | https://centralindia.tts.speech.microsoft.com/cognitiveservices/v1 |
| イタリア北部 | https://italynorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 東日本 | https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1 |
| 西日本 | https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1 |
| 韓国中部 | https://koreacentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国中北部 | https://northcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 北ヨーロッパ | https://northeurope.tts.speech.microsoft.com/cognitiveservices/v1 |
| ノルウェー東部 | https://norwayeast.tts.speech.microsoft.com/cognitiveservices/v1 |
| カタール中部 | https://qatarcentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| 南アフリカ北部 | https://southafricanorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国中南部 | https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 東南アジア | https://southeastasia.tts.speech.microsoft.com/cognitiveservices/v1 |
| スウェーデン中部 | https://swedencentral.tts.speech.microsoft.com/cognitiveservices/v1 |
| スイス北部 | https://switzerlandnorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| スイス西部 | https://switzerlandwest.tts.speech.microsoft.com/cognitiveservices/v1 |
| アラブ首長国連邦北部 | https://uaenorth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 英国南部 | https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1 |
| 英国西部 | https://ukwest.tts.speech.microsoft.com/cognitiveservices/v1 |
| US Gov アリゾナ | https://usgovarizona.tts.speech.azure.us/cognitiveservices/v1 |
| US Gov バージニア | https://usgovvirginia.tts.speech.azure.us/cognitiveservices/v1 |
| 米国中西部 | https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 西ヨーロッパ | https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国西部 | https://westus.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国西部 2 | https://westus2.tts.speech.microsoft.com/cognitiveservices/v1 |
| 米国西部 3 | https://westus3.tts.speech.microsoft.com/cognitiveservices/v1 |
ヒント
プレビューの音声をサポートするリージョンの現在の一覧については、 Speech Service リージョンの表を参照してください。
カスタム音声
カスタム音声を作成した場合は、作成したエンドポイントを使用します。 次のエンドポイントを使用することもできます。
{deploymentId}をカスタム音声モデルのデプロイ ID に置き換えます。
| 地域 | トレーニング | デプロイ | エンドポイント |
|---|---|---|---|
| オーストラリア東部 | はい | はい | https://australiaeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| ブラジル南部 | いいえ | はい | https://brazilsouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| カナダ中部 | いいえ | はい | https://canadacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国中部 | いいえ | はい | https://centralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 東アジア | いいえ | はい | https://eastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国東部 | はい | はい | https://eastus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国東部 2 | はい | はい | https://eastus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| フランス中部 | いいえ | はい | https://francecentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| ドイツ中西部 | いいえ | はい | https://germanywestcentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| インド中部 | はい | はい | https://centralindia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| イタリア北部 | いいえ | はい | https://italynorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 東日本 | はい | はい | https://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 西日本 | いいえ | はい | https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 韓国中部 | はい | はい | https://koreacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国中北部 | いいえ | はい | https://northcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 北ヨーロッパ | はい | はい | https://northeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| ノルウェー東部 | いいえ | はい | https://norwayeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 南アフリカ北部 | いいえ | はい | https://southafricanorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国中南部 | はい | はい | https://southcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 東南アジア | はい | はい | https://southeastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| スウェーデン中部 | いいえ | はい | https://swedencentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| スイス北部 | いいえ | はい | https://switzerlandnorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| スイス西部 | いいえ | はい | https://switzerlandwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| アラブ首長国連邦北部 | いいえ | はい | https://uaenorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 英国南部 | はい | はい | https://uksouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国中西部 | いいえ | はい | https://westcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 西ヨーロッパ | はい | はい | https://westeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国西部 | はい | はい | https://westus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国西部 2 | はい | はい | https://westus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
| 米国西部 3 | いいえ | はい | https://westus3.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
メモ
上記のリージョンは、標準音声モデルのホスティングとリアルタイム合成で使用できます。 カスタム音声トレーニングは、一部のリージョンでのみ使用できます。 ただし、これらのリージョンから前の一覧の他のリージョンに カスタム音声モデル を簡単にコピーできます。
Long Audio API
Long Audio API は、一意のエンドポイントを持つ複数のリージョンで使用できます。
| 地域 | エンドポイント |
|---|---|
| オーストラリア東部 | https://australiaeast.customvoice.api.speech.microsoft.com |
| 米国東部 | https://eastus.customvoice.api.speech.microsoft.com |
| インド中部 | https://centralindia.customvoice.api.speech.microsoft.com |
| 米国中南部 | https://southcentralus.customvoice.api.speech.microsoft.com |
| 東南アジア | https://southeastasia.customvoice.api.speech.microsoft.com |
| 英国南部 | https://uksouth.customvoice.api.speech.microsoft.com |
| 西ヨーロッパ | https://westeurope.customvoice.api.speech.microsoft.com |
リクエストヘッダー
次の表に、テキスト読み上げ要求の必須ヘッダーと省略可能なヘッダーを示します。
| ヘッダー | 説明 | 必須または省略可能 |
|---|---|---|
Authorization |
Bearerという単語の前に置く承認トークン。 詳細については、「 認証」を参照してください。 |
必須 |
Content-Type |
指定されたテキストのコンテンツ タイプを指定します。 受け入れ可能な値: application/ssml+xml。 |
必須 |
X-Microsoft-OutputFormat |
オーディオ出力形式を指定します。 受け入れ可能な値の完全な一覧については、「 オーディオ出力」を参照してください。 | 必須 |
User-Agent |
アプリケーション名。 指定する値は 255 文字未満にする必要があります。 | 必須 |
要求本文
カスタム音声を使用している場合は、要求の本文をプレーン テキスト (ASCII または UTF-8) として送信できます。 それ以外の場合は、各 POST 要求の本文が SSML として送信されます。 SSML を使用すると、テキスト読み上げ機能が返す合成音声の音声と言語を選択できます。 サポートされている音声の完全な一覧については、 Speech サービスの言語と音声のサポートに関するページを参照してください。
サンプル依頼
この HTTP 要求では、SSML を使用して音声と言語を指定します。 本文が長すぎて、生成されるオーディオが 10 分を超える場合は、10 分に切り捨てられます。 つまり、オーディオの長さは 10 分を超えることはできません。
POST /cognitiveservices/v1 HTTP/1.1
X-Microsoft-OutputFormat: riff-24khz-16bit-mono-pcm
Content-Type: application/ssml+xml
Host: westus.tts.speech.microsoft.com
Content-Length: <Length>
Authorization: Bearer [Base64 access_token]
User-Agent: <Your application name>
<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Male'
name='en-US-ChristopherNeural'>
I'm excited to try text to speech!
</voice></speak>
* Content-Length には、独自のコンテンツ長を使用する必要があります。 ほとんどの場合、この値は自動的に計算されます。
HTTP 状態コード
各応答の HTTP 状態コードは、成功または一般的なエラーを示します。
| HTTP 状態コード | 説明 | 考えられる理由 |
|---|---|---|
| 200 | わかりました | 要求が成功しました。 応答本文はオーディオ ファイルです。 |
| 400 | 要求が正しくありません | 必要なパラメーターが見つからない、空、または null です。 または、必須または省略可能なパラメーターに渡される値が無効です。 一般的な理由は、ヘッダーが長すぎる場合です。 |
| 401 | 不正 | 要求が承認されていません。 Speech リソース キーまたはトークンが有効で、正しいリージョンにあることを確認します。 |
| 415 | サポートされていないメディアの種類 | 間違った Content-Type 値が指定されている可能性があります。
Content-Type を application/ssml+xmlに設定する必要があります。 |
| 429 | 要求が多すぎます | リソースに対して許可されている要求のクォータまたはレートを超えました。 |
| 502 | 無効なゲートウェイ | ネットワークまたはサーバー側の問題があります。 この状態は、無効なヘッダーを示している場合もあります。 |
| 503 | サービス利用不可 | さまざまな理由でサーバー側の問題があります。 |
HTTP 状態が 200 OK場合、応答の本文には、要求された形式のオーディオ ファイルが含まれます。 このファイルは、転送、バッファーへの保存、またはファイルへの保存時に再生できます。
オーディオ出力
サポートされているストリーミングおよび非ストリーミング オーディオ形式は、各要求で X-Microsoft-OutputFormat ヘッダーとして送信されます。 各形式には、ビット レートとエンコードの種類が組み込まれています。 Speech サービスは、48 kHz、24 kHz、16 kHz、および 8 kHz のオーディオ出力をサポートします。 各標準音声モデルは、24kHz および高忠実度 48 kHz で利用できます。
amr-wb-16000hz
audio-16khz-16bit-32kbps-mono-opus
audio-16khz-32kbitrate-mono-mp3
audio-16khz-64kbitrate-mono-mp3
audio-16khz-128kbitrate-mono-mp3
audio-24khz-16bit-24kbps-mono-opus
audio-24khz-16bit-48kbps-mono-opus
audio-24khz-48kbitrate-mono-mp3
audio-24khz-96kbitrate-mono-mp3
audio-24khz-160kbitrate-mono-mp3
audio-48khz-96kbitrate-mono-mp3
audio-48khz-192kbitrate-mono-mp3
g722-16khz-64kbps
ogg-16khz-16bit-mono-opus
ogg-24khz-16bit-mono-opus
ogg-48khz-16bit-mono-opus
raw-8khz-8bit-mono-alaw
raw-8khz-8bit-mono-mulaw
raw-8khz-16bit-mono-pcm
raw-16khz-16bit-mono-pcm
raw-16khz-16bit-mono-truesilk
raw-22050hz-16bit-mono-pcm
raw-24khz-16bit-mono-pcm
raw-24khz-16bit-mono-truesilk
raw-44100hz-16bit-mono-pcm
raw-48khz-16bit-mono-pcm
webm-16khz-16bit-mono-opus
webm-24khz-16bit-24kbps-mono-opus
webm-24khz-16bit-mono-opus
メモ
48kHz 出力形式を選択すると、それに応じて 48kHz の高忠実度音声モデルが呼び出されます。 24kHz および 48kHz 以外のサンプル レートは、44.1kHz が 48kHz からダウンサンプリングされるなど、合成時にアップサンプリングまたはダウンサンプリングによって取得できます。
選択した音声と出力形式のビット レートが異なる場合、オーディオは必要に応じて再サンプリングされます。
ogg-24khz-16bit-mono-opusを使用して、形式をデコードできます。
認証
各要求には承認ヘッダーが必要です。 次の表は、各機能でサポートされているヘッダーを示しています。
| サポートされている承認ヘッダー | 音声テキスト変換 | テキスト読み上げ |
|---|---|---|
Ocp-Apim-Subscription-Key |
はい | はい |
Authorization: Bearer |
はい | はい |
Ocp-Apim-Subscription-Key ヘッダーを使用している場合は、リソース キーのみを指定する必要があります。 例えば:
'Ocp-Apim-Subscription-Key': 'YourSpeechResourceKey'
Authorization: Bearer ヘッダーを使用している場合は、issueToken エンドポイントに要求を行う必要があります。 この要求では、リソース キーを 10 分間有効なアクセス トークンと交換します。
もう 1 つのオプションは、Authorization: Bearer ヘッダーも使用するが、Microsoft Entra IDを介して発行されたトークンを使用するMicrosoft Entra認証を使用することです。
Microsoft Entra の認証の使用を参照してください。
アクセス トークンを取得する方法
アクセス トークンを取得するには、issueTokenとリソース キーを使用して、Ocp-Apim-Subscription-Key エンドポイントに要求を行う必要があります。
issueToken エンドポイントの形式は次のとおりです。
https://<REGION_IDENTIFIER>.api.cognitive.microsoft.com/sts/v1.0/issueToken
<REGION_IDENTIFIER>を、Speech リソースのリージョンと一致する識別子に置き換えます。
アクセス トークン要求を作成するには、次のサンプルを使用します。
HTTP サンプル
この例は、トークンを取得するための単純な HTTP 要求です。
YourSpeechResourceKeyを Speech サービスのリソース キーに置き換えます。 Speech リソースが米国西部リージョンにない場合は、 Host ヘッダーをリージョンのホスト名に置き換えます。
POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YourSpeechResourceKey
Host: eastus.api.cognitive.microsoft.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0
応答の本文には、JSON Web トークン (JWT) 形式のアクセス トークンが含まれています。
PowerShell サンプル
この例は、アクセス トークンを取得する単純な PowerShell スクリプトです。
YourSpeechResourceKeyを Speech サービスのリソース キーに置き換えます。 必ず、Speech リソースに一致するリージョンに適切なエンドポイントを使用してください。
$FetchTokenHeader = @{
'Content-type'='application/x-www-form-urlencoded';
'Content-Length'= '0';
'Ocp-Apim-Subscription-Key' = 'YourSpeechResourceKey'
}
$OAuthToken = Invoke-RestMethod -Method POST -Uri https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken
-Headers $FetchTokenHeader
# show the token received
$OAuthToken
cURL サンプル
cURL は、Linux (および Linux 用 Windows サブシステム) で使用できるコマンド ライン ツールです。 この cURL コマンドは、アクセス トークンを取得する方法を示しています。
YourSpeechResourceKeyを Speech サービスのリソース キーに置き換えます。 必ず、Speech リソースに一致するリージョンに適切なエンドポイントを使用してください。 この例は現在、米国西部に設定されています。
curl -v -X POST \
"https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken" \
-H "Content-type: application/x-www-form-urlencoded" \
-H "Content-Length: 0" \
-H "Ocp-Apim-Subscription-Key: YourSpeechResourceKey"
C# サンプル
この C# クラスは、アクセス トークンを取得する方法を示しています。 クラスをインスタンス化するときに、Speech サービスのリソース キーを渡します。 Speech リソースが別のリージョンにある場合は、speech リソースのリージョンに合わせて FetchTokenUri の値を変更します。
public class Authentication
{
public static readonly string FetchTokenUri =
"https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken";
private string subscriptionKey;
private string token;
public Authentication(string subscriptionKey)
{
this.subscriptionKey = subscriptionKey;
this.token = FetchTokenAsync(FetchTokenUri, subscriptionKey).Result;
}
public string GetAccessToken()
{
return this.token;
}
private async Task<string> FetchTokenAsync(string fetchUri, string subscriptionKey)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
UriBuilder uriBuilder = new UriBuilder(fetchUri);
var result = await client.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
Console.WriteLine("Token Uri: {0}", uriBuilder.Uri.AbsoluteUri);
return await result.Content.ReadAsStringAsync();
}
}
}
Python サンプル
# Request module must be installed.
# Run pip install requests if necessary.
import requests
subscription_key = 'REPLACE_WITH_YOUR_KEY'
def get_token(subscription_key):
fetch_token_url = 'https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken'
headers = {
'Ocp-Apim-Subscription-Key': subscription_key
}
response = requests.post(fetch_token_url, headers=headers)
access_token = str(response.text)
print(access_token)
アクセス トークンの使用方法
アクセス トークンは、 Authorization: Bearer <TOKEN> ヘッダーとしてサービスに送信する必要があります。 各アクセス トークンは 10 分間有効です。 新しいトークンはいつでも取得できますが、ネットワーク トラフィックと待機時間を最小限に抑えるために、同じトークンを 9 分間使用することをお勧めします。
短いオーディオ用の Speech to text REST API に対する HTTP 要求のサンプルを次に示します。
POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive
// Message body here...
Microsoft Entra認証を使用する
短いオーディオ用の Speech to text REST API でMicrosoft Entra認証を使用するには、アクセス トークンを作成する必要があります。 リソース ID と Microsoft Entra アクセス トークンで構成されるアクセス トークンを取得する手順は、Speech SDK を使用する場合と同じです。 Microsoft Entra認証の使用の手順に従います
- Speech の Foundry リソースを作成する
- Microsoft Entra認証用に Speech リソースを構成する
- Microsoft Entra アクセス トークンを取得する
- Speech リソース ID を取得する
リソース ID と Microsoft Entra アクセス トークンを取得した後、次の形式で実際のアクセス トークンを構築できます。
aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN
リソース ID とアクセス トークンの間に"aad#" プレフィックスと "#" (ハッシュ) 区切り記号を含める必要があります。
短いオーディオ用の Speech to text REST API に対する HTTP 要求のサンプルを次に示します。
POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive
// Message body here...
Microsoft Entra アクセス トークンの詳細、特にトークンの有効期間については、Microsoft ID プラットフォーム の Access トークン に関するページを参照してください。