Text to Speech REST API

Speech Service では、REST API を使用して、テキストを合成音声に変換したり、リージョンでサポートされている音声の一覧を取得したりできます。 この記事では、承認オプション、クエリ オプション、要求を構造化する方法、応答を解釈する方法について説明します。

ヒント

Text to speech REST API ユース ケースは制限されています。 Speech SDK を使用できない場合にのみ使用してください。 たとえば、Speech SDK を使用すると、テキスト読み上げ処理と結果についてより多くの分析情報を得るためにイベントをサブスクライブできます。

テキスト読み上げ REST API では、多くのロケールでニューラル テキストから音声への音声がサポートされています。 利用可能な各エンドポイントは、リージョンに関連付けられています。 使用する予定のエンドポイントまたはリージョンの Speech リソース キーが必要です。 詳細情報へのリンクを以下に示します。

重要

コストは、事前構築済みのニューラル音声 (価格ページでは "ニューラル") とカスタム ニューラル音声 (価格ページでは "カスタム ニューラル") によって異なります。 詳細については、「Speech Services の価格」を参照してください。

Text to speech REST API を使用する前に、サービスにアクセスするための認証の一部としてトークン交換を完了する必要があることを覚えておいてください。 詳細については、認証に関するページをご覧ください。

音声の一覧を取得する

tts.speech.microsoft.com/cognitiveservices/voices/list エンドポイントを使用して、特定のリージョンまたはエンドポイントの音声の完全なリストを取得できます。 音声の一覧エンドポイントにリージョンのプレフィックスを付けて、そのリージョンの音声の一覧を取得します。 たとえば、westus リージョンの音声の一覧を取得するには、https://westus.tts.speech.microsoft.com/cognitiveservices/voices/list エンドポイントを使用します。 サポートされているすべてのリージョンの一覧については、リージョンのドキュメントを参照してください。

Note

プレビュー段階の音声とスタイルは、3 つのサービス リージョン (米国東部、西ヨーロッパ、東南アジア) でのみ使用できます。

要求ヘッダー

この表は、テキスト読み上げ要求の必須のヘッダーと省略可能なヘッダーの一覧です。

Header 説明 必須または省略可能
Ocp-Apim-Subscription-Key Speech リソースのキー。 このヘッダーと Authorization のどちらかが必須となります。
Authorization 単語 Bearer が前に付いた認証トークン。 詳細については、認証に関するページをご覧ください。 このヘッダーと Ocp-Apim-Subscription-Key のどちらかが必須となります。

要求本文

このエンドポイントへの GET 要求の本文は不要です。

要求のサンプル

この要求には Authorization ヘッダーのみが必要です。

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 OK 要求は成功しました。
400 正しくない要求 必須パラメーターが指定されていない、空、または null です。 または、必須またはオプションのパラメーターに渡された値が無効です。 よくある原因は、長すぎるヘッダーです。
401 権限がありません 要求は承認されません。 リソース キーまたはトークンが有効であり、正しいリージョンにあることを確認してください。
429 Too many requests リソースに対して許可されている要求のクォータまたはレートを超えました。
502 Bad gateway ネットワークまたはサーバー側に問題があります。 この状態は、無効なヘッダーを示している可能性もあります。

テキストを音声に変換する

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://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://japaneast.tts.speech.microsoft.com/cognitiveservices/v1
西日本 https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1
JIO インド西部 https://jioindiawest.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://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
US Gov アリゾナ https://usgovarizona.tts.speech.azure.us/cognitiveservices/v1
US Gov バージニア州 https://usgovvirginia.tts.speech.azure.us/cognitiveservices/v1
英国南部 https://uksouth.tts.speech.microsoft.com/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

ヒント

プレビュー段階の音声は、米国東部、西ヨーロッパ、および東南アジアの 3 つのリージョンでのみ使用できます。

カスタム ニューラル音声

カスタム ニューラル音声フォントを作成した場合は、作成したエンドポイントを使用します。 次のエンドポイントを使用することもできます。 {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}
East US はい はい 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://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
西日本 いいえ はい https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
JIO インド西部 いいえ はい https://jioindiawest.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://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

要求ヘッダー

この表は、テキスト読み上げ要求の必須のヘッダーと省略可能なヘッダーの一覧です。

Header 説明 必須または省略可能
Authorization 単語 Bearer が前に付いた認証トークン。 詳細については、認証に関するページをご覧ください。 必須
Content-Type 指定したテキストのコンテンツ タイプを指定します。 指定できる値は application/ssml+xml です。 必須
X-Microsoft-OutputFormat オーディオ出力形式を指定します。 指定可能な値の完全なリストについては、「オーディオ出力」を参照してください。 必須
User-Agent アプリケーション名です。 指定する値は、255 文字未満である必要があります。 必須

要求本文

カスタム ニューラル音声を使用する場合は、要求の本文をプレーン テキスト (ASCII または UTF-8) として送信できます。 それ以外の場合は、各 POST 要求の本文が SSML として送信されます。 SSML では、テキスト読み上げ機能が返す合成音声の音声と言語を選ぶことができます。 サポートされている音声の完全なリストについては、「音声サービスの言語と音声のサポート」を参照してください。

要求のサンプル

この 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 OK 要求は成功しました。 応答本文は、オーディオ ファイルです。
400 正しくない要求 必須パラメーターが指定されていない、空、または null です。 または、必須またはオプションのパラメーターに渡された値が無効です。 よくある原因は、長すぎるヘッダーです。
401 権限がありません 要求は承認されません。 Speech リソース キーまたはトークンが有効であり、正しいリージョンにあることを確認してください。
415 メディアの種類がサポートされていません 間違った Content-Type 値が指定された可能性があります。 Content-Typeapplication/ssml+xml に設定する必要があります。
429 Too many requests リソースに対して許可されている要求のクォータまたはレートを超えました。
502 Bad gateway ネットワークまたはサーバー側に問題があります。 この状態は、無効なヘッダーを示している可能性もあります。

HTTP ステータスが 200 OK の場合、応答の本文には要求された形式のオーディオ ファイルが含まれています。 このファイルは、転送と同時に再生することも、バッファーまたはファイルに保存することもできます。

オーディオ出力

サポートされているストリーミングおよび非ストリーミング オーディオ形式は、各要求でヘッダーとして X-Microsoft-OutputFormat 送信されます。 各形式には、ビット レートとエンコードの種類が組み込まれています。 音声サービスでは、48 kHz、24 kHz、16 kHz、および 8 kHz のオーディオ出力がサポートされます。 事前構築済みの各ニューラル音声モデルは、24kHz および高忠実度の 48kHz で利用できます。

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
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

Note

48kHz 出力形式を選択した場合は、それに応じて 48kHz の高忠実度音声モデルが呼び出されます。 24kHz と 48kHz 以外のサンプル レートは、44.1kHz が 48kHz からダウンサンプリングされるなど、合成時にアップサンプリングまたはダウンサンプリングを通じて得ることができます。

選択した音声と出力形式のビット レートが異なる場合、オーディオは必要に応じて再サンプリングされます。 ogg-24khz-16bit-mono-opus 形式は、Opus コーデックを使用してデコードできます。

認証

各要求には Authorization ヘッダーが必要です。 次の表は、各機能でサポートされているヘッダーを示したものです。

サポートされている Authorization ヘッダー 音声テキスト変換 テキストを音声に変換する
Ocp-Apim-Subscription-Key はい イエス
Authorization: Bearer イエス はい

Ocp-Apim-Subscription-Key ヘッダーを使用する場合、指定する必要があるのはリソース キーだけです。 次に例を示します。

'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'

Authorization: Bearer ヘッダーを使用する場合は、issueToken エンドポイントに対して要求を実行する必要があります。 この要求では、リソース キーを、10 分間有効なアクセス トークンと交換します。

アクセス トークンを取得する方法

アクセス トークンを取得するには、Ocp-Apim-Subscription-Key とリソース キーを使用して、issueToken エンドポイントに対して要求を実行する必要があります。

issueToken エンドポイントの形式は次のとおりです。

https://<REGION_IDENTIFIER>.api.cognitive.microsoft.com/sts/v1.0/issueToken

ご利用のサブスクリプションのリージョンと一致する識別子で <REGION_IDENTIFIER> を置き換えてください。

アクセス トークン要求の作成にあたっては、以下のサンプルを使用してください。

HTTP のサンプル

この例は、トークンを取得するための単純な HTTP 要求です。 YOUR_SUBSCRIPTION_KEY は、お使いの Azure Cognitive Service for Speech サービスのリソース キーに置き換えてください。 お使いのサブスクリプションが米国西部リージョンにない場合は、Host ヘッダーをご自身のリージョンのホスト名に置き換えます。

POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
Host: eastus.api.cognitive.microsoft.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0

応答の本文には、JSON Web トークン (JWT) 形式のアクセス トークンが格納されます。

PowerShell のサンプル

この例は、アクセス トークンを取得するための単純な PowerShell スクリプトです。 YOUR_SUBSCRIPTION_KEY は、お使いの Azure Cognitive Service for Speech サービスのリソース キーに置き換えてください。 必ず、実際のサブスクリプションに合ったリージョンの正しいエンドポイントを使用してください。 この例では現在、米国西部に設定されています。

$FetchTokenHeader = @{
  'Content-type'='application/x-www-form-urlencoded';
  'Content-Length'= '0';
  'Ocp-Apim-Subscription-Key' = 'YOUR_SUBSCRIPTION_KEY'
}

$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 (および Windows Subsystem for Linux) で使用できるコマンドライン ツールです。 この cURL コマンドは、アクセス トークンを取得する方法を示しています。 YOUR_SUBSCRIPTION_KEY は、お使いの Azure Cognitive Service for 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: YOUR_SUBSCRIPTION_KEY"

C# のサンプル

この C# クラスは、アクセス トークンを取得する方法を示しています。 クラスをインスタンス化するときに、お使いの Azure Cognitive Service for 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 for short audio への 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...

次のステップ