Usare l'API REST da voce a testo per brevi file audio

Usare l'API REST Riconoscimento vocale per l'audio breve solo nei casi in cui non è possibile usare l'SDK Voce o l'API di trascrizione rapida.

Prima di usare l'API REST da Voce a Testo per l'audio breve, tenere presente le seguenti limitazioni:

  • Le richieste che usano l'API REST per l'audio breve e la trasmissione diretta dell'audio non possono contenere più di 60 secondi di audio. Per la valutazione della pronuncia, la durata audio non deve superare i 30 secondi. I formati audio di input sono più limitati rispetto a Speech SDK.
  • L'API REST per l'audio breve restituisce solo i risultati finali. Non fornisce risultati parziali.
  • La traduzione vocale non è supportata tramite l'API REST per l'audio breve. È necessario usare Speech SDK.
  • La trascrizione batch e il riconoscimento vocale personalizzato non sono supportati tramite l'API REST per l'audio breve. È consigliabile usare sempre la Speech to text REST API per la trascrizione batch e il discorso personalizzato.

Prima di usare l'API REST Riconoscimento vocale per audio brevi, è necessario completare uno scambio di token come parte dell'autenticazione per accedere al servizio. Per altre informazioni, vedere Autenticazione.

Aree ed endpoint

L'endpoint per l'API REST per audio breve ha questo formato:

https://YourResourceName.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1

Sostituisci YourResourceName con il nome della tua risorsa Speech.

Nota

Per Azure per enti pubblici e Microsoft Azure gestiti da 21Vianet, vedere questo articolo sui cloud sovrani.

Formati audio

L'audio viene inviato nel corpo della richiesta HTTP POST . Deve essere in uno dei formati in questa tabella:

Formato Codec Velocità in bit Frequenza di campionamento
WAV PCM 256 kbps 16 kHz, mono
OGG OPUS 256 kbps 16 kHz, mono

Nota

I formati precedenti sono supportati tramite l'API REST per brevi audio e WebSocket nel servizio Voce. Speech SDK supporta il formato WAV con codec PCM e altri formati.

Intestazioni della richiesta

Questa tabella elenca le intestazioni obbligatorie e facoltative per le richieste di trascrizione vocale.

Intestazione Descrizione Obbligatorio o facoltativo
Ocp-Apim-Subscription-Key La tua chiave di risorsa per il servizio di sintesi vocale. È necessaria questa intestazione o Authorization.
Authorization Token di autorizzazione preceduto dalla parola Bearer. Per altre informazioni, vedere Autenticazione. È necessaria questa intestazione o Ocp-Apim-Subscription-Key.
Pronunciation-Assessment Specifica i parametri per visualizzare i punteggi di pronuncia nei risultati del riconoscimento. Questi punteggi valutano la qualità della pronuncia dell'input vocale, con indicatori come accuratezza, fluenza e completezza.

Questo parametro è un json con codifica Base64 che contiene più parametri dettagliati. Per informazioni su come creare questa intestazione, vedere Parametri di valutazione della pronuncia.
Opzionale
Content-type Descrive il formato e il codec dei dati audio forniti. I valori accettati sono audio/wav; codecs=audio/pcm; samplerate=16000 e audio/ogg; codecs=opus. Obbligatorio
Transfer-Encoding Specifica che i dati audio in blocchi vengono inviati, anziché un singolo file. Usare questa intestazione solo se si segmentano dati audio in blocchi. Opzionale
Expect Se si usa il trasferimento in blocchi, inviare Expect: 100-continue. Il servizio Voce riconosce la richiesta iniziale e attende più dati. Obbligatorio se si inviano dati audio in blocchi.
Accept Se specificato, deve essere application/json. Il servizio Voce fornisce risultati in JSON. Alcuni framework di richiesta forniscono un valore predefinito incompatibile. È consigliabile includere Acceptsempre . Facoltativo, ma consigliato.

Parametri di query

Questi parametri potrebbero essere inclusi nella stringa di query della richiesta REST.

Nota

È necessario aggiungere il parametro language all'URL per evitare di ricevere un errore HTTP 4xx. Ad esempio, la lingua impostata su Inglese (Stati Uniti) è: https://YourResourceName.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US.

Parametro Descrizione Obbligatorio o facoltativo
language Identifica la lingua parlata che viene riconosciuta. Vedere Lingue supportate. Obbligatorio
format Specifica il formato del risultato. I valori accettati sono simple e detailed. I risultati semplici includono RecognitionStatus, DisplayTextOffset, e Duration. Le risposte dettagliate includono quattro diverse rappresentazioni del testo visualizzato. L'impostazione predefinita è simple. Opzionale
profanity Specifica come gestire il contenuto volgare nei risultati del riconoscimento. I valori accettati sono:

masked, che sostituisce il contenuto volgare con asterischi.
removed, che rimuove tutte le espressioni volgari dal risultato.
raw, che include contenuto volgare nel risultato.

L'impostazione predefinita è masked.
Opzionale

Parametri di valutazione della pronuncia

Questa tabella elenca i parametri obbligatori e facoltativi per la valutazione della pronuncia:

Parametro Descrizione Obbligatorio o facoltativo
ReferenceText Testo rispetto al quale viene valutata la pronuncia. Obbligatorio
GradingSystem Sistema di punti per la calibrazione del punteggio. Il FivePoint sistema assegna un punteggio a virgola mobile da 0 a 5 e HundredMark assegna un punteggio a virgola mobile pari a 0-100. Impostazione predefinita: FivePoint. Opzionale
Granularity Granularità della valutazione. I valori accettati sono:

Phoneme, che mostra il punteggio sui livelli di testo completo, parola e fonema.
Word, che mostra il punteggio a livello di testo completo e parola.
FullText, che mostra il punteggio solo a livello di testo completo.

L'impostazione predefinita è Phoneme.
Opzionale
Dimension Definisce i criteri di output. I valori accettati sono:

Basic, che mostra solo il punteggio di accuratezza.
Comprehensive, che mostra i punteggi su più dimensioni (ad esempio, punteggio di fluenza e punteggio di completezza sul livello full-text e tipo di errore a livello di parola).

Per visualizzare le definizioni di diverse dimensioni del punteggio e tipi di errore delle parole, vedere Proprietà della risposta. L'impostazione predefinita è Basic.
Opzionale
EnableMiscue Abilita il calcolo degli errori. Con questo parametro abilitato, le parole pronunciate vengono confrontate con il testo di riferimento. Sono contrassegnati con omissione o inserimento in base al confronto. I valori accettati sono False e True. L'impostazione predefinita è False. Opzionale
EnableProsodyAssessment Abilita la valutazione della prosodia per la valutazione della pronuncia. Questa funzionalità valuta aspetti come stress, intonazione, velocità di conversazione e ritmo. Questa funzionalità fornisce informazioni dettagliate sulla naturalezza e l'espressività del discorso.

Se questa proprietà è impostata su True, viene restituito il valore del ProsodyScore risultato.
Opzionale
ScenarioId Un GUID che indica un sistema di punti personalizzato. Opzionale

Ecco un esempio json che contiene i parametri di valutazione della pronuncia:

{
  "ReferenceText": "Good morning.",
  "GradingSystem": "HundredMark",
  "Granularity": "Word",
  "Dimension": "Comprehensive",
  "EnableProsodyAssessment": "True"
}

Il codice di esempio seguente illustra come compilare i parametri di valutazione della pronuncia nell'intestazione Pronunciation-Assessment :

var pronAssessmentParamsJson = $"{{\"ReferenceText\":\"Good morning.\",\"GradingSystem\":\"HundredMark\",\"Granularity\":\"Word\",\"Dimension\":\"Comprehensive\",\"EnableProsodyAssessment\":\"True\"}}";
var pronAssessmentParamsBytes = Encoding.UTF8.GetBytes(pronAssessmentParamsJson);
var pronAssessmentHeader = Convert.ToBase64String(pronAssessmentParamsBytes);

Raccomandiamo vivamente di effettuare l'upload in streaming (trasferimento in blocchi) durante il caricamento dei dati audio, riducendo in modo significativo la latenza. Per informazioni su come abilitare lo streaming, vedere il codice sample in vari linguaggi di programmazione.

Nota

Per altre informazioni, vedere Valutazione della pronuncia.

Richiesta di esempio

L'esempio seguente include il nome host e le intestazioni obbligatorie. È importante notare che il servizio prevede anche dati audio, che non sono inclusi in questo esempio. Come accennato in precedenza, la suddivisione in blocchi è consigliata ma non obbligatoria.

POST speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed HTTP/1.1
Accept: application/json;text/xml
Content-Type: audio/wav; codecs=audio/pcm; samplerate=16000
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY
Host: YourResourceName.cognitiveservices.azure.com
Transfer-Encoding: chunked
Expect: 100-continue

Per abilitare la valutazione della pronuncia, è possibile aggiungere l'intestazione seguente. Per informazioni su come creare questa intestazione, vedere Parametri di valutazione della pronuncia.

Pronunciation-Assessment: eyJSZWZlcm...

Codici di stato HTTP

Il codice di stato HTTP per ogni risposta indica il successo o errori comuni.

Codice di stato HTTP Descrizione Possibili motivi
100 Continuare La richiesta iniziale viene accettata. Procedere con l'invio del resto dei dati. Questo codice viene usato con il trasferimento in blocchi.
200 OK La richiesta ha avuto esito positivo. Il corpo della risposta è un oggetto JSON.
400 Richiesta non valida Il codice della lingua non è stato fornito, la lingua non è supportata o il file audio non è valido (ad esempio).
401 Non autorizzato Una chiave di risorsa o un token di autorizzazione non è valida nell'area specificata oppure un endpoint non è valido.
403 Proibito Manca una chiave di risorsa o un token di autorizzazione.

Risposte di esempio

Ecco una risposta tipica per il riconoscimento simple:

{
  "RecognitionStatus": "Success",
  "DisplayText": "Remind me to buy 5 pencils.",
  "Offset": "1236645672289",
  "Duration": "1236645672289"
}

Ecco una risposta tipica per il riconoscimento detailed:

{
  "RecognitionStatus": "Success",
  "Offset": "1236645672289",
  "Duration": "1236645672289",
  "NBest": [
    {
      "Confidence": 0.9052885,
      "Display": "What's the weather like?",
      "ITN": "what's the weather like",
      "Lexical": "what's the weather like",
      "MaskedITN": "what's the weather like"
    },
    {
      "Confidence": 0.92459863,
      "Display": "what is the weather like",
      "ITN": "what is the weather like",
      "Lexical": "what is the weather like",
      "MaskedITN": "what is the weather like"
    }
  ]
}

Ecco una risposta tipica per il riconoscimento con la valutazione della pronuncia:

{
  "RecognitionStatus": "Success",
  "Offset": 700000,
  "Duration": 8400000,
  "DisplayText": "Good morning.",
  "SNR": 38.76819,
  "NBest": [
    {
      "Confidence": 0.98503506,
      "Lexical": "good morning",
      "ITN": "good morning",
      "MaskedITN": "good morning",
      "Display": "Good morning.",
      "AccuracyScore": 100.0,
      "FluencyScore": 100.0,
      "ProsodyScore": 87.8,
      "CompletenessScore": 100.0,
      "PronScore": 95.1,
      "Words": [
        {
          "Word": "good",
          "Offset": 700000,
          "Duration": 2600000,
          "Confidence": 0.0,
          "AccuracyScore": 100.0,
          "ErrorType": "None",
          "Feedback": {
            "Prosody": {
              "Break": {
                "ErrorTypes": [
                  "None"
                ],
                "BreakLength": 0
              },
              "Intonation": {
                "ErrorTypes": [],
                "Monotone": {
                  "Confidence": 0.0,
                  "WordPitchSlopeConfidence": 0.0,
                  "SyllablePitchDeltaConfidence": 0.91385907
                }
              }
            }
          }
        },
        {
          "Word": "morning",
          "Offset": 3400000,
          "Duration": 5700000,
          "Confidence": 0.0,
          "AccuracyScore": 100.0,
          "ErrorType": "None",
          "Feedback": {
            "Prosody": {
              "Break": {
                "ErrorTypes": [
                  "None"
                ],
                "UnexpectedBreak": {
                  "Confidence": 3.5294118e-08
                },
                "MissingBreak": {
                  "Confidence": 1.0
                },
                "BreakLength": 0
              },
              "Intonation": {
                "ErrorTypes": [],
                "Monotone": {
                  "Confidence": 0.0,
                  "WordPitchSlopeConfidence": 0.0,
                  "SyllablePitchDeltaConfidence": 0.91385907
                }
              }
            }
          }
        }
      ]
    }
  ]
}

Proprietà della risposta

I risultati vengono forniti come JSON. Il simple formato include i campi di primo livello seguenti:

Proprietà Descrizione
RecognitionStatus Stato, ad esempio Success per il riconoscimento riuscito. Vedere la tabella successiva.
DisplayText Testo riconosciuto dopo l'uso delle maiuscole, la punteggiatura, l'inversione della normalizzazione del testo e il mascheramento delle espressioni volgari. Presente solo in caso di esito positivo. La normalizzazione del testo inversa è la conversione di testo parlato in forme abbreviate, ad esempio 200 per "duecento" o "Dr. Smith" per "Doctor Smith".
Offset Ora (in unità di 100 nanosecondi) in cui inizia il riconoscimento vocale nel flusso audio.
Duration Durata (in unità di 100 nanosecondi) del riconoscimento vocale nel flusso audio.
SNR Rapporto segnale-rumore (SNR) del parlato riconosciuto nel flusso audio.

Il RecognitionStatus campo può contenere questi valori:

Stato Descrizione
Success Il riconoscimento è riuscito e il DisplayText campo è presente.
NoMatch Il riconoscimento vocale è stato rilevato nel flusso audio, ma non è stata trovata alcuna corrispondenza tra parole della lingua di destinazione. Questo stato significa in genere che la lingua di riconoscimento è diversa dalla lingua che l'utente sta parlando.
InitialSilenceTimeout L'inizio del flusso audio conteneva solo il silenzio e si è verificato il timeout del servizio durante l'attesa del parlato.
BabbleTimeout L'inizio del flusso audio conteneva solo rumore e si è verificato il timeout del servizio durante l'attesa del parlato.
Error Il servizio di riconoscimento ha rilevato un errore interno e non è stato possibile continuare. Riprovare se possibile.

Nota

Se l'audio è costituito solo da contenuto volgare e il profanity parametro di query è impostato su remove, il servizio non restituisce un risultato vocale.

Il detailed formato include più forme di risultati riconosciuti. Quando si usa il detailed formato, DisplayText viene fornito come Display per ogni risultato nell'elenco NBest .

L'oggetto nell'elenco NBest può includere:

Proprietà Descrizione
Confidence Punteggio di attendibilità della voce, da 0,0 (bassa attendibilità) a 1,0 (attendibilità completa).
Lexical Forma lessicale del testo riconosciuto: le parole effettive riconosciute.
ITN Il testo riconosciuto dopo la normalizzazione inversa o la forma "canonica" del testo riconosciuto, con numeri di telefono, numeri, abbreviazioni ("Dottor Rossi" in "Dr. Rossi") e altre trasformazioni applicate.
MaskedITN Modulo ITN con mascheratura di contenuti volgari applicata, se richiesto.
Display Forma di visualizzazione del testo riconosciuto, con punteggiatura e maiuscola aggiunta. Questo parametro è uguale a quello DisplayText fornito quando il formato è impostato su simple.
AccuracyScore Accuratezza della pronuncia del parlato. L'accuratezza indica quanto i fonemi corrispondano alla pronuncia di un parlante nativo. Il punteggio di accuratezza a livello di parola e di testo completo è ottenuto aggregando il punteggio di accuratezza a livello di fonema.
FluencyScore Fluenza del discorso fornito. La fluenza indica quanto il parlato corrisponda all'uso di un parlante nativo di interruzioni silenziose tra le parole.
ProsodyScore Prosodia del discorso dato. La prosodia indica il grado di naturalezza del discorso, inclusi l'accento, l'intonazione, la velocità di espressione e il ritmo.

Per visualizzare in dettaglio le definizioni dei risultati della valutazione prosodia, vedere Parametri dei risultati.
CompletenessScore Completezza del parlato, determinato calcolando il rapporto tra parole pronunciate e input di testo di riferimento.
PronScore Punteggio complessivo che indica la qualità della pronuncia del parlato fornito. Questo punteggio viene aggregato da AccuracyScore, FluencyScoree CompletenessScore con peso.
ErrorType Valore che indica se una parola viene omessa, inserita o pronunciata in modo non valido, rispetto a ReferenceText. I valori possibili sono None (ovvero nessun errore in questa parola), Omission, Insertione Mispronunciation.

Trasferimento in blocchi

Il trasferimento in blocchi (Transfer-Encoding: chunked) può contribuire a ridurre la latenza di riconoscimento. Consente al servizio Voce di iniziare a elaborare il file audio durante la trasmissione. L'API REST per l'audio breve non fornisce risultati parziali o provvisori.

L'esempio di codice seguente illustra come inviare audio in blocchi. Solo il primo blocco deve contenere l'intestazione del file audio. request è un HttpWebRequest oggetto connesso all'endpoint REST appropriato. audioFile è il percorso di un file audio su disco.

var request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
request.SendChunked = true;
request.Accept = @"application/json;text/xml";
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.Host = host;
request.ContentType = @"audio/wav; codecs=audio/pcm; samplerate=16000";
request.Headers["Ocp-Apim-Subscription-Key"] = "YOUR_RESOURCE_KEY";
request.AllowWriteStreamBuffering = false;

using (var fs = new FileStream(audioFile, FileMode.Open, FileAccess.Read))
{
    // Open a request stream and write 1,024-byte chunks in the stream one at a time.
    byte[] buffer = null;
    int bytesRead = 0;
    using (var requestStream = request.GetRequestStream())
    {
        // Read 1,024 raw bytes from the input audio file.
        buffer = new Byte[checked((uint)Math.Min(1024, (int)fs.Length))];
        while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
        {
            requestStream.Write(buffer, 0, bytesRead);
        }

        requestStream.Flush();
    }
}

Autenticazione

Ogni richiesta richiede un'intestazione di autorizzazione. Questa tabella illustra le intestazioni supportate per ogni funzionalità:

Intestazione di autorizzazione supportata Da voce a testo Sintesi vocale
Ocp-Apim-Subscription-Key
Authorization: Bearer

Quando si usa l'intestazione Ocp-Apim-Subscription-Key , è necessario specificare solo la chiave di risorsa. Per esempio:

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

Se si usa il flusso con token bearer STS con Authorization: Bearer, inviare prima una richiesta all'endpoint issueToken. In questa richiesta si scambia la chiave della risorsa per un token di accesso valido per 10 minuti.

Un'altra opzione consiste nell'usare l'autenticazione Microsoft Entra che usa anche l'intestazione Authorization: Bearer, ma con un token rilasciato tramite Microsoft Entra ID. Vedere Usa l'autenticazione di Microsoft Entra.

Come ottenere un token di accesso STS

Per ottenere un token di accesso STS, invia una richiesta all'endpoint issueToken utilizzando Ocp-Apim-Subscription-Key e la chiave della risorsa.

L'endpoint issueToken ha questo formato:

https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken

Sostituisci YourResourceName con il nome della tua risorsa Speech.

Nota

Questo endpoint richiede che la risorsa abbia un sottodominio personalizzato configurato. Per le risorse senza un dominio personalizzato, usare invece l'endpoint a livello di area: https://<region>.api.cognitive.microsoft.com/sts/v1.0/issueToken. Sostituire <region> con l'area di Azure della risorsa, ad esempio eastus.

Usare gli esempi seguenti per creare la richiesta di token di accesso.

Esempio HTTP

Questo esempio è una semplice richiesta HTTP per ottenere un token. Sostituire YourSpeechResourceKey con la chiave di risorsa per il servizio Speech. Sostituisci YourResourceName con il nome della tua risorsa Speech.

POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YourSpeechResourceKey
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0

Il corpo della risposta contiene il token di accesso in formato JWT (JSON Web Token).

Esempio di PowerShell

Questo esempio è un semplice script di PowerShell per ottenere un token di accesso. Sostituire YourSpeechResourceKey con la chiave di risorsa per il servizio Speech. Sostituisci YourResourceName con il nome della tua risorsa Speech.

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

$OAuthToken = Invoke-RestMethod -Method POST `
    -Uri https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken `
    -Headers $FetchTokenHeader

# show the token received
$OAuthToken

Esempio cURL

cURL è uno strumento da riga di comando disponibile in Linux (e nel sottosistema Windows per Linux). Questo comando cURL illustra come ottenere un token di accesso. Sostituire YourSpeechResourceKey con la chiave di risorsa per il servizio Speech. Sostituisci YourResourceName con il nome della tua risorsa Speech.

curl -v -X POST \
 "https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken" \
 -H "Content-type: application/x-www-form-urlencoded" \
 -H "Content-Length: 0" \
 -H "Ocp-Apim-Subscription-Key: YourSpeechResourceKey"

Esempio C#

Questa classe C# illustra come ottenere un token di accesso. Passare la chiave di risorsa per il servizio Voce quando si crea un'istanza della classe. Sostituisci YourResourceName con il nome della tua risorsa Speech.

public class Authentication
{
    public static readonly string FetchTokenUri =
        "https://YourResourceName.cognitiveservices.azure.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();
        }
    }
}

esempio di 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://YourResourceName.cognitiveservices.azure.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)

Come usare un token di accesso

Il token di accesso deve essere inviato al servizio nell'intestazione Authorization: Bearer <TOKEN>. Ogni token di accesso è valido per 10 minuti. È possibile ottenere un nuovo token in qualsiasi momento, ma per ridurre al minimo il traffico di rete e la latenza, è consigliabile usare lo stesso token per nove minuti.

Important

I token bearer sono limitati all'endpoint che li ha emessi. Un token ottenuto da YourResourceName.cognitiveservices.azure.com funziona solo per le richieste allo stesso host. Un token da <region>.api.cognitive.microsoft.com funziona solo con endpoint di Riconoscimento vocale a livello di area geografica. Se viene visualizzato un errore 401 quando si utilizza un token Bearer, utilizzare invece Ocp-Apim-Subscription-Key con la chiave della risorsa, che funziona con tutti i formati degli endpoint.

Ecco una richiesta HTTP di esempio all'API REST Speech to text per audio brevi:

POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...

Usare l'autenticazione Microsoft Entra

Per usare l'autenticazione di Microsoft Entra con l'API REST da voce a testo per audio breve, è necessario creare un token di accesso. I passaggi per ottenere il token di accesso costituito dall'ID risorsa e dal token di accesso di Microsoft Entra sono gli stessi di quando si utilizza il Speech SDK. Seguire questa procedura Usare l'autenticazione Microsoft Entra

  • Creare una risorsa Foundry per Voce
  • Configurare la risorsa Voce per l'autenticazione Microsoft Entra
  • Ottenere un token di accesso Microsoft Entra
  • Ottenere l'ID della risorsa Voce

Dopo aver ottenuto l'ID risorsa e il token di accesso Microsoft Entra, il token di accesso effettivo può essere costruito seguendo questo formato:

aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN

È necessario includere il prefisso "aad#" e il separatore "#" (hash) tra l'ID risorsa e il token di accesso.

Ecco una richiesta HTTP di esempio all'API REST Speech to text per audio brevi:

POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...

Per altre informazioni sui token di accesso Microsoft Entra, inclusa la durata dei token, visitare Access tokens in the Microsoft Identity Platform.