Interfejs API REST zamiany tekstu na mowę

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

Wskazówka

Przypadki użycia interfejsu REST API do 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 SDK można subskrybować zdarzenia, aby uzyskać więcej szczegółowych informacji na temat przetwarzania tekstu na mowę 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 interfejsu API dla punktu końcowego lub regionu, którego planujesz użyć, jest wymagany. Oto linki do dodatkowych informacji:

Ważne

Koszty różnią się w zależności od standardowych głosów i niestandardowych głosów. Aby uzyskać więcej informacji, zobacz cennik zamiany tekstu na mowę.

Przed użyciem API REST tekst na mowę, musisz dokonać wymiany tokenów jako część uwierzytelniania, aby uzyskać dostęp do usługi. Aby uzyskać więcej informacji, zobacz Authentication (Uwierzytelnianie).

Uzyskaj listę 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. Poprzedź punkt końcowy listy głosów nazwą regionu, 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 podzestawie regionów. Aby uzyskać bieżącą listę regionów obsługujących głosy i style w wersji zapoznawczej dostępnej publicznie, zobacz tabelę Regiony usługi Mowa.

Nagłówki żądań

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

Nagłówka Opis Wymagane lub opcjonalne
Ocp-Apim-Subscription-Key Klucz zasobu Speech. 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

Do tego żądania potrzebny jest tylko nagłówek autoryzacyjny.

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żliwa przyczyna
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 Nieautoryzowany Żą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 rozpoznawania mowy.

Standardowe głosy

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

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
Kanada Wschodnia https://canadaeast.tts.speech.microsoft.com/cognitiveservices/v1
Środkowe stany USA https://centralus.tts.speech.microsoft.com/cognitiveservices/v1
Azja Wschodnia https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1
Wschodnie stany USA 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
Włochy Północne https://italynorth.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
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
Katar Środkowy https://qatarcentral.tts.speech.microsoft.com/cognitiveservices/v1
Północna Republika Południowej Afryki https://southafricanorth.tts.speech.microsoft.com/cognitiveservices/v1
Południowo-środkowe stany USA https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Azja Południowo-Wschodnia 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
Południowe Zjednoczone Królestwo https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1
Zachodnie Zjednoczone Królestwo https://ukwest.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
Zachodnio-środkowe stany USA https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1
Europa Zachodnia 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

Wskazówka

Aby uzyskać bieżącą listę regionów obsługujących głosy w wersji zapoznawczej, zobacz tabelę Regiony usługi Mowa.

Niestandardowe głosy

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

Region Szkolenia Wdrażania 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}
Włochy Północne Nie Tak https://italynorth.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}
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}
Południowo-środkowe stany USA 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}
Szwecja Środkowa Nie Tak https://swedencentral.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

Wymienione regiony są dostępne dla hostingu standardowego modelu głosu i syntezy głosu w czasie rzeczywistym. Szkolenie niestandardowe dla głosu jest dostępne tylko w niektórych regionach. Można jednak łatwo skopiować niestandardowy model głosu z tych regionów do innych regionów na powyższej liście.

Interfejs API przeznaczony do dźwięku o długim czasie trwania

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

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
Południowo-środkowe stany USA https://southcentralus.customvoice.api.speech.microsoft.com
Azja Południowo-Wschodnia https://southeastasia.customvoice.api.speech.microsoft.com
Południowe Zjednoczone Królestwo https://uksouth.customvoice.api.speech.microsoft.com
Europa Zachodnia 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łówka Opis Wymagane lub opcjonalne
Authorization Token autoryzacji poprzedzony wyrazem Bearer. Aby uzyskać więcej informacji, zobacz Authentication (Uwierzytelnianie). Wymagane
Content-Type Określa typ zawartości dla podanego tekstu. Zaakceptowana wartość: application/ssml+xml. Wymagane
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. Wymagane
User-Agent Nazwa aplikacji. Podana wartość musi być mniejsza niż 255 znaków. Wymagane

Treść żądania

Jeśli używasz niestandardowego 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. SSML umożliwia wybór głosu oraz języka syntetyzowanej mowy zwracanej przez funkcję 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ść treści jest duża, a wynikowy dźwięk przekracza 10 minut, zostanie skrócony 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żliwa przyczyna
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 Nieautoryzowany Żą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ć na 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.
503 Usługa niedostępna Istnieje problem po stronie serwera z różnych powodów.

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

Wyjścia audio

Obsługiwane formaty audio strumieniowe i niestrumieniowe są wysyłane w każdym żądaniu w nagłówku X-Microsoft-OutputFormat. Każdy format zawiera szybkość bitów i typ kodowania. Usługa rozpoznawania mowy obsługuje wyjścia audio 48 kHz, 24 kHz, 16 kHz i 8 kHz. Każdy standardowy model głosu jest dostępny w 24kHz i o 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
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

Uwaga

W przypadku wyboru formatu wyjściowego 48kHz odpowiednio zostanie wywołany model głosu o wysokiej wierności 48kHz. Częstotliwości próbkowania inne niż 24kHz i 48kHz można uzyskać poprzez nadpróbkowanie lub podpróbkowanie podczas syntezy, na przykład 44,1kHz jest podpróbkowane 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.

Uwierzytelniania

Każde żądanie wymaga nagłówka autoryzującego. 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

W przypadku korzystania z nagłówka Ocp-Apim-Subscription-Key należy podać tylko klucz zasobu. Na przykład:

'Ocp-Apim-Subscription-Key': 'YourSpeechResourceKey'

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

Inną opcją jest użycie uwierzytelniania Microsoft Entra, które używa również nagłówka Authorization: Bearer, ale z tokenem wystawionym za pośrednictwem Microsoft Entra ID. Zobacz Użyj uwierzytelniania Microsoft Entra.

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> element identyfikatorem zgodnym z regionem zasobu usługi Mowa.

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 YourSpeechResourceKey kluczem zasobu dla usługi Mowa. Jeśli zasób usługi Mowa nie znajduje się w regionie Zachodnie USA, zastąp Host nagłówek nazwą hosta regionu.

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

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

Przykład programu PowerShell

W tym przykładzie jest prosty skrypt programu PowerShell umożliwiający uzyskanie tokenu dostępu. Zamień YourSpeechResourceKey na klucz zasobu dla usługi Speech. Upewnij się, że używasz poprawnego punktu końcowego dla regionu zgodnego z zasobem usługi Mowa.

$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

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 YourSpeechResourceKey kluczem zasobu dla usługi Mowy. Upewnij się, że używasz poprawnego punktu końcowego dla regionu zgodnego z zasobem usługi Mowa. Ten przykład jest obecnie ustawiony na Zachodnie 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: YourSpeechResourceKey"

Przykład w języku C#

Ta klasa języka C# ilustruje sposób uzyskiwania tokenu dostępu. Przekaż klucz zasobu dla usługi rozpoznawania mowy podczas tworzenia wystąpienia klasy. Jeśli zasób usługi Mowa znajduje się w innym regionie, zmień wartość FetchTokenUri w taki sposób, aby odpowiadała regionowi zasobu usługi Mowa.

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 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 nagłówek Authorization: Bearer <TOKEN>. 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 dla krótkich nagrań audio:

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

Korzystanie z uwierzytelniania Microsoft Entra

Aby użyć uwierzytelniania Microsoft Entra z interfejsem API REST do zamiany mowy na tekst dla krótkiego dźwięku, należy utworzyć token dostępu. Kroki uzyskiwania dostępu do tokenu, który składa się z identyfikatora zasobu i tokenu dostępu Microsoft Entra, są takie same jak w przypadku korzystania z pakietu Speech SDK. Wykonaj kroki opisane tutaj Użyj uwierzytelniania Microsoft Entra

  • Utwórz zasób Foundry dla Mowy
  • Konfigurowanie zasobu mowa na potrzeby uwierzytelniania Microsoft Entra
  • Uzyskiwanie tokenu dostępu Microsoft Entra
  • Pobierz identyfikator zasobu Mowy

Po uzyskaniu identyfikatora zasobu i tokenu dostępu Microsoft Entra można utworzyć rzeczywisty token dostępu w następującym formacie:

aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN

Należy uwzględnić prefiks "aad#" oraz separator "#" między identyfikatorem zasobu a tokenem dostępu.

Oto przykładowe żądanie HTTP do interfejsu API REST przekształcania mowy na tekst dla krótkiego nagrania audio.

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

Aby dowiedzieć się więcej na temat tokenów dostępu Microsoft Entra, w tym okres istnienia tokenu, odwiedź stronę Tokeny dostępu w Platforma tożsamości Microsoft.

Następne kroki