Interfejs API REST zamiany tekstu na mowę

Usługa mowa umożliwia konwertowanie tekstu na syntetyzowany mowę i uzyskiwanie listy obsługiwanych głosów dla regionu przy użyciu interfejsu API REST. W tym artykule dowiesz się więcej o opcjach autoryzacji, opcjach zapytań, sposobie tworzenia struktury żądania i interpretowaniu odpowiedzi.

Napiwek

Przypadki użycia interfejsu API REST zamiany tekstu na mowę są ograniczone. Używaj go tylko w przypadkach, w których nie można używać zestawu SPEECH SDK. Na przykład za pomocą zestawu SPEECH SDK można subskrybować zdarzenia , aby uzyskać więcej szczegółowych informacji na temat tekstu do przetwarzania mowy i wyników.

Interfejs API REST zamiany tekstu na mowę obsługuje neuronowy tekst na głosy mowy w wielu ustawieniach regionalnych. Każdy dostępny punkt końcowy jest skojarzony z regionem. Klucz zasobu usługi Mowa dla punktu końcowego lub regionu, którego planujesz użyć, jest wymagany. Oto linki do dodatkowych informacji:

Ważne

Koszty różnią się wstępnie utworzonymi głosami neuronowymi (nazywanymi neuronowymi na stronie cen) i niestandardowymi głosami neuronowymi (nazywanymi niestandardowymi neuronami na stronie cen). Aby uzyskać więcej informacji, zobacz Cennik usługi Mowa.

Przed użyciem tekstu do interfejsu API REST rozpoznawania mowy należy ukończyć wymianę tokenów w ramach uwierzytelniania w celu uzyskania dostępu do usługi. Aby uzyskać więcej informacji, zobacz Authentication (Uwierzytelnianie).

Pobieranie listy głosów

Możesz użyć tts.speech.microsoft.com/cognitiveservices/voices/list punktu końcowego, aby uzyskać pełną listę głosów dla określonego regionu lub punktu końcowego. Prefiks listy głosów punkt końcowy z regionem, aby uzyskać listę głosów dla tego regionu. Aby na przykład uzyskać listę głosów dla westus regionu, użyj punktu końcowego https://westus.tts.speech.microsoft.com/cognitiveservices/voices/list . Aby uzyskać listę wszystkich obsługiwanych regionów, zobacz dokumentację regionów .

Uwaga

Głosy i style w wersji zapoznawczej są dostępne tylko w trzech regionach usługi: Wschodnie stany USA, Europa Zachodnia i Azja Południowo-Wschodnia.

Nagłówki żądań

Ta tabela zawiera listę wymaganych i opcjonalnych nagłówków dla żądań zamiany tekstu na mowę:

Nagłówek opis Wymagane lub opcjonalne
Ocp-Apim-Subscription-Key Klucz zasobu usługi Mowa. Ten nagłówek lub Authorization jest wymagany.
Authorization Token autoryzacji poprzedzony wyrazem Bearer. Aby uzyskać więcej informacji, zobacz Authentication (Uwierzytelnianie). Ten nagłówek lub Ocp-Apim-Subscription-Key jest wymagany.

Treść żądania

Treść nie jest wymagana w przypadku GET żądań do tego punktu końcowego.

Przykładowe żądanie

To żądanie wymaga tylko nagłówka autoryzacji:

GET /cognitiveservices/voices/list HTTP/1.1

Host: westus.tts.speech.microsoft.com
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY

Oto przykładowe polecenie curl:

curl --location --request GET 'https://YOUR_RESOURCE_REGION.tts.speech.microsoft.com/cognitiveservices/voices/list' \
--header 'Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY'

Przykładowa odpowiedź

Otrzymasz odpowiedź z treścią JSON zawierającą wszystkie obsługiwane ustawienia regionalne, głosy, płeć, style i inne szczegóły. Właściwość WordsPerMinute dla każdego głosu może służyć do oszacowania długości mowy wyjściowej. W tym przykładzie JSON przedstawiono częściowe wyniki ilustrujące strukturę odpowiedzi:

[  
    // 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
]

Kody stanu HTTP

Kod stanu HTTP dla każdej odpowiedzi wskazuje powodzenie lub typowe błędy.

Kod stanu HTTP opis Możliwe przyczyny
200 OK Żądanie zakończyło się pomyślnie.
400 Nieprawidłowe żądanie Brak wymaganego parametru, pusty lub null. Lub wartość przekazana do wymaganego lub opcjonalnego parametru jest nieprawidłowa. Częstą przyczyną jest zbyt długi nagłówek.
401 Brak autoryzacji Żądanie nie jest autoryzowane. Upewnij się, że klucz zasobu lub token jest prawidłowy i w poprawnym regionie.
429 Zbyt wiele żądań Przekroczono limit przydziału lub szybkość żądań dozwolonych dla zasobu.
502 Zła brama Wystąpił problem po stronie sieci lub serwera. Ten stan może również wskazywać na nieprawidłowe nagłówki.

Konwertowanie tekstu na mowę

Punkt cognitiveservices/v1 końcowy umożliwia konwertowanie tekstu na mowę przy użyciu języka znaczników syntezy mowy (SSML).

Regiony i punkty końcowe

Te regiony są obsługiwane w przypadku zamiany tekstu na mowę za pośrednictwem interfejsu API REST. Pamiętaj, aby wybrać punkt końcowy zgodny z regionem zasobu usługi Mowa.

Wstępnie utworzone głosy neuronowe

Ta tabela umożliwia określenie dostępności neuronowych głosów według regionu lub punktu końcowego:

Region (Region) Punkt końcowy
Australia Wschodnia https://australiaeast.tts.speech.microsoft.com/cognitiveservices/v1
Brazylia Południowa https://brazilsouth.tts.speech.microsoft.com/cognitiveservices/v1
Kanada Środkowa https://canadacentral.tts.speech.microsoft.com/cognitiveservices/v1
Central US https://centralus.tts.speech.microsoft.com/cognitiveservices/v1
Azja Wschodnia https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1
East US https://eastus.tts.speech.microsoft.com/cognitiveservices/v1
Wschodnie stany USA 2 https://eastus2.tts.speech.microsoft.com/cognitiveservices/v1
Francja Środkowa https://francecentral.tts.speech.microsoft.com/cognitiveservices/v1
Niemcy Środkowo-Zachodnie https://germanywestcentral.tts.speech.microsoft.com/cognitiveservices/v1
Indie Środkowe https://centralindia.tts.speech.microsoft.com/cognitiveservices/v1
Japonia Wschodnia https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1
Japonia Zachodnia https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1
Indie Zachodnie (Jio) https://jioindiawest.tts.speech.microsoft.com/cognitiveservices/v1
Korea Środkowa https://koreacentral.tts.speech.microsoft.com/cognitiveservices/v1
Północno-środkowe stany USA https://northcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Europa Północna https://northeurope.tts.speech.microsoft.com/cognitiveservices/v1
Norwegia Wschodnia https://norwayeast.tts.speech.microsoft.com/cognitiveservices/v1
South Central US https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Southeast Asia https://southeastasia.tts.speech.microsoft.com/cognitiveservices/v1
Szwecja Środkowa https://swedencentral.tts.speech.microsoft.com/cognitiveservices/v1
Szwajcaria Północna https://switzerlandnorth.tts.speech.microsoft.com/cognitiveservices/v1
Szwajcaria Zachodnia https://switzerlandwest.tts.speech.microsoft.com/cognitiveservices/v1
Północne Zjednoczone Emiraty Arabskie https://uaenorth.tts.speech.microsoft.com/cognitiveservices/v1
US Gov Arizona https://usgovarizona.tts.speech.azure.us/cognitiveservices/v1
US Gov Wirginia https://usgovvirginia.tts.speech.azure.us/cognitiveservices/v1
Południowe Zjednoczone Królestwo https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1
Zachodnio-środkowe stany USA https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1
West Europe https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1
Zachodnie stany USA https://westus.tts.speech.microsoft.com/cognitiveservices/v1
Zachodnie stany USA 2 https://westus2.tts.speech.microsoft.com/cognitiveservices/v1
Zachodnie stany USA 3 https://westus3.tts.speech.microsoft.com/cognitiveservices/v1

Napiwek

Głosy w wersji zapoznawczej są dostępne tylko w następujących trzech regionach: Wschodnie stany USA, Europa Zachodnia i Azja Południowo-Wschodnia.

Niestandardowe neuronowe głosy

Jeśli utworzono niestandardową czcionkę neuronowego głosu, użyj utworzonego punktu końcowego. Możesz również użyć następujących punktów końcowych. Zastąp {deploymentId} element identyfikatorem wdrożenia modelu neuronowego głosu.

Region (Region) Szkolenie Wdrożenie Punkt końcowy
Australia Wschodnia Tak Tak https://australiaeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Brazylia Południowa Nie. Tak https://brazilsouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Kanada Środkowa Nie. Tak https://canadacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Środkowe stany USA Nie. Tak https://centralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Azja Wschodnia Nie. Tak https://eastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Wschodnie stany USA Tak Tak https://eastus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Wschodnie stany USA 2 Tak Tak https://eastus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Francja Środkowa Nie. Tak https://francecentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Niemcy Środkowo-Zachodnie Nie. Tak https://germanywestcentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Indie Środkowe Tak Tak https://centralindia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Japonia Wschodnia Tak Tak https://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Japonia Zachodnia Nie. Tak https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Indie Zachodnie (Jio) Nie. Tak https://jioindiawest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Korea Środkowa Tak Tak https://koreacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Północno-środkowe stany USA Nie. Tak https://northcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Europa Północna Tak Tak https://northeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Norwegia Wschodnia Nie. Tak https://norwayeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Północna Republika Południowej Afryki Nie. Tak https://southafricanorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
South Central US Tak Tak https://southcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Azja Południowo-Wschodnia Tak Tak https://southeastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Szwajcaria Północna Nie. Tak https://switzerlandnorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Szwajcaria Zachodnia Nie. Tak https://switzerlandwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Północne Zjednoczone Emiraty Arabskie Nie. Tak https://uaenorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Południowe Zjednoczone Królestwo Tak Tak https://uksouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Zachodnio-środkowe stany USA Nie. Tak https://westcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Europa Zachodnia Tak Tak https://westeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Zachodnie stany USA Tak Tak https://westus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Zachodnie stany USA 2 Tak Tak https://westus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}
Zachodnie stany USA 3 Nie. Tak https://westus3.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId}

Uwaga

Poprzednie regiony są dostępne na potrzeby hostowania modelu neuronowego głosu i syntezy w czasie rzeczywistym. Niestandardowe trenowanie neuronowego głosu jest dostępne tylko w niektórych regionach. Jednak użytkownicy mogą łatwo skopiować model neuronowego głosu z tych regionów do innych regionów na powyższej liście.

Long Audio API

Długi interfejs API audio jest dostępny w wielu regionach z unikatowymi punktami końcowymi:

Region (Region) Punkt końcowy
Australia Wschodnia https://australiaeast.customvoice.api.speech.microsoft.com
Wschodnie stany USA https://eastus.customvoice.api.speech.microsoft.com
Indie Środkowe https://centralindia.customvoice.api.speech.microsoft.com
South Central US https://southcentralus.customvoice.api.speech.microsoft.com
Southeast Asia https://southeastasia.customvoice.api.speech.microsoft.com
Południowe Zjednoczone Królestwo https://uksouth.customvoice.api.speech.microsoft.com
West Europe https://westeurope.customvoice.api.speech.microsoft.com

Nagłówki żądań

Ta tabela zawiera listę wymaganych i opcjonalnych nagłówków dla żądań zamiany tekstu na mowę:

Nagłówek opis Wymagane lub opcjonalne
Authorization Token autoryzacji poprzedzony wyrazem Bearer. Aby uzyskać więcej informacji, zobacz Authentication (Uwierzytelnianie). Wymagania
Content-Type Określa typ zawartości dla podanego tekstu. Zaakceptowana wartość: application/ssml+xml. Wymagania
X-Microsoft-OutputFormat Określa format danych wyjściowych dźwięku. Aby uzyskać pełną listę akceptowanych wartości, zobacz Dane wyjściowe audio. Wymagania
User-Agent Nazwa aplikacji. Podana wartość musi być mniejsza niż 255 znaków. Wymagania

Treść żądania

Jeśli używasz niestandardowego neuronowego głosu, treść żądania może zostać wysłana jako zwykły tekst (ASCII lub UTF-8). W przeciwnym razie treść każdego POST żądania jest wysyłana jako SSML. Język SSML umożliwia wybranie głosu i języka syntetyzowanej mowy zwracanej przez funkcję zamiany tekstu na mowę. Aby uzyskać pełną listę obsługiwanych głosów, zobacz Obsługa języka i głosu dla usługi Mowa.

Przykładowe żądanie

To żądanie HTTP używa języka SSML do określania głosu i języka. Jeśli długość ciała jest długa, a wynikowy dźwięk przekracza 10 minut, zostanie obcięty do 10 minut. Innymi słowy, długość dźwięku nie może przekroczyć 10 minut.

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>

* W przypadku wartości Content-Length należy użyć własnej długości zawartości. W większości przypadków ta wartość jest obliczana automatycznie.

Kody stanu HTTP

Kod stanu HTTP dla każdej odpowiedzi wskazuje powodzenie lub typowe błędy:

Kod stanu HTTP opis Możliwe przyczyny
200 OK Żądanie zakończyło się pomyślnie. Treść odpowiedzi jest plikiem audio.
400 Nieprawidłowe żądanie Brak wymaganego parametru, pusty lub null. Lub wartość przekazana do wymaganego lub opcjonalnego parametru jest nieprawidłowa. Częstą przyczyną jest zbyt długi nagłówek.
401 Brak autoryzacji Żądanie nie jest autoryzowane. Upewnij się, że klucz zasobu lub token usługi Mowa jest prawidłowy i w poprawnym regionie.
415 Nieobsługiwany typ nośnika Możliwe, że podano nieprawidłową Content-Type wartość. Content-Type należy ustawić wartość application/ssml+xml.
429 Zbyt wiele żądań Przekroczono limit przydziału lub szybkość żądań dozwolonych dla zasobu.
502 Zła brama Wystąpił problem po stronie sieci lub serwera. Ten stan może również wskazywać na nieprawidłowe nagłówki.

Jeśli stan HTTP to 200 OK, treść odpowiedzi zawiera plik audio w żądanym formacie. Ten plik może być odtwarzany jako przesyłany, zapisywany w buforze lub zapisywany w pliku.

Dane wyjściowe audio

Obsługiwane formaty przesyłania strumieniowego i nieprzesyłania strumieniowego audio są wysyłane w każdym żądaniu X-Microsoft-OutputFormat jako nagłówek. Każdy format zawiera szybkość bitów i typ kodowania. Usługa mowa obsługuje wyjścia audio 48-kHz, 24-kHz, 16-kHz i 8 kHz. Każdy wstępnie utworzony model neuronowego głosu jest dostępny na poziomie 24kHz i wysokiej wierności 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

Uwaga

W przypadku wybrania formatu wyjściowego 48kHz model głosu o wysokiej wierności z 48kHz zostanie odpowiednio wywołany. Częstotliwość próbkowania innych niż 24kHz i 48kHz można uzyskać za pośrednictwem upsampling lub downsampling podczas syntezy, na przykład 44,1kHz jest w dół z 48kHz.

Jeśli wybrany format głosu i wyjścia ma różne szybkości bitów, dźwięk jest ponownie próbkowany zgodnie z potrzebami. Format można zdekodować ogg-24khz-16bit-mono-opus za pomocą kodera Opus.

Uwierzytelnianie

Każde żądanie wymaga nagłówka autoryzacji. W tej tabeli przedstawiono, które nagłówki są obsługiwane dla każdej funkcji:

Obsługiwany nagłówek autoryzacji Zamiana mowy na tekst Zamiana tekstu na mowę
Ocp-Apim-Subscription-Key Tak Tak
Authorization: Bearer Tak Tak

Jeśli używasz nagłówka Ocp-Apim-Subscription-Key , musisz podać tylko klucz zasobu. Na przykład:

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

Gdy używasz nagłówka Authorization: Bearer , musisz wysłać żądanie do punktu końcowego issueToken . W tym żądaniu wymieniasz klucz zasobu dla tokenu dostępu ważnego przez 10 minut.

Jak uzyskać token dostępu

Aby uzyskać token dostępu, musisz wysłać żądanie do punktu końcowego issueToken przy użyciu polecenia Ocp-Apim-Subscription-Key i klucza zasobu.

Punkt issueToken końcowy ma następujący format:

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

Zastąp <REGION_IDENTIFIER> ciąg identyfikatorem zgodnym z regionem subskrypcji.

Użyj poniższych przykładów, aby utworzyć żądanie tokenu dostępu.

Przykład HTTP

W tym przykładzie jest proste żądanie HTTP w celu uzyskania tokenu. Zastąp YOUR_SUBSCRIPTION_KEY ciąg kluczem zasobu dla usługi Mowa. Jeśli Twoja subskrypcja nie znajduje się w regionie Zachodnie stany USA, zastąp Host nagłówek nazwą hosta twojego regionu.

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

Treść odpowiedzi zawiera token dostępu w formacie JSON Web Token (JWT).

Przykładowy skrypt programu PowerShell

W tym przykładzie jest prosty skrypt programu PowerShell umożliwiający uzyskanie tokenu dostępu. Zastąp YOUR_SUBSCRIPTION_KEY ciąg kluczem zasobu dla usługi Mowa. Upewnij się, że używasz poprawnego punktu końcowego dla regionu zgodnego z subskrypcją. Ten przykład jest obecnie ustawiony na Zachodnie stany USA.

$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

Przykład cURL

cURL to narzędzie wiersza polecenia dostępne w systemie Linux (i w Podsystem Windows dla systemu Linux). To polecenie cURL ilustruje sposób uzyskiwania tokenu dostępu. Zastąp YOUR_SUBSCRIPTION_KEY ciąg kluczem zasobu dla usługi Mowa. Upewnij się, że używasz poprawnego punktu końcowego dla regionu zgodnego z subskrypcją. Ten przykład jest obecnie ustawiony na Zachodnie stany USA.

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"

Przykład w języku C#

Ta klasa języka C# ilustruje sposób uzyskiwania tokenu dostępu. Przekaż klucz zasobu dla usługi Mowa podczas tworzenia wystąpienia klasy. Jeśli Twoja subskrypcja nie znajduje się w regionie Zachodnie stany USA, zmień wartość FetchTokenUri na zgodną z regionem subskrypcji.

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();
        }
    }
}

Przykład języka 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)

Jak używać tokenu dostępu

Token dostępu powinien zostać wysłany do usługi jako Authorization: Bearer <TOKEN> nagłówek. Każdy token dostępu jest ważny przez 10 minut. Nowy token można uzyskać w dowolnym momencie, ale aby zminimalizować ruch sieciowy i opóźnienie, zalecamy użycie tego samego tokenu przez dziewięć minut.

Oto przykładowe żądanie HTTP do interfejsu API REST zamiany mowy na tekst w celu uzyskania krótkiego dźwięku:

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

Następne kroki