Utiliser l’API REST de reconnaissance vocale pour l’audio court

Utilisez l’API REST Speech to text uniquement pour l’audio court dans les cas où vous ne pouvez pas utiliser le SDK Speech ou l’API de transcription rapide.

Avant d’utiliser l’API REST Speech to text pour l’audio court, tenez compte des limitations suivantes :

Avant d’utiliser l’API REST Speech to text pour l’audio court, comprenez que vous devez effectuer un échange de jetons dans le cadre de l’authentification pour accéder au service. Pour plus d’informations, consultez Authentification.

Régions et points de terminaison

Le point de terminaison de l’API REST pour l’audio court a ce format :

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

Remplacez YourResourceName par le nom de votre ressource Speech.

Note

Pour Azure Government et Microsoft Azure gérés par des points de terminaison 21Vianet, consultez cet article sur les clouds souverains.

Formats audio

L’audio est envoyé dans le corps de la requête HTTP POST . Il doit se trouver dans l’un des formats de ce tableau :

Format Codec Débit de bits Taux d’échantillonnage
WAV PCM 256 Kbits/s 16 kHz, mono
OGG OPUS 256 Kbits/s 16 kHz, mono

Note

Les formats précédents sont pris en charge par le biais de l’API REST pour l’audio court et les WebSockets dans le service Speech. Le SDK Speech prend en charge le format WAV avec codec PCM ainsi que d’autres formats.

En-têtes de requête

Ce tableau répertorie les en-têtes obligatoires et facultatifs pour les demandes de reconnaissance vocale :

En-tête Description Obligatoire ou facultatif
Ocp-Apim-Subscription-Key Votre clé de ressource pour le service de reconnaissance vocale. Cet en-tête ou Authorization est obligatoire.
Authorization Jeton d’autorisation précédé du mot Bearer. Pour plus d’informations, consultez Authentification. Cet en-tête ou Ocp-Apim-Subscription-Key est obligatoire.
Pronunciation-Assessment Spécifie les paramètres d’affichage des scores de prononciation dans les résultats de reconnaissance. Ces scores évaluent la qualité de prononciation de l’entrée vocale, avec des indicateurs tels que la précision, la fluidité et l’exhaustivité.

Ce paramètre est un JSON encodé en Base64 qui contient plusieurs paramètres détaillés. Pour savoir comment générer cet en-tête, consultez les paramètres d’évaluation de la prononciation.
Optionnel
Content-type Décrit le format et le codec des données audio fournies. Les valeurs acceptées sont audio/wav; codecs=audio/pcm; samplerate=16000 et audio/ogg; codecs=opus. Obligatoire
Transfer-Encoding Spécifie que les données audio segmentées sont envoyées, plutôt qu’un seul fichier. Utilisez cet en-tête uniquement si vous segmentez des données audio. Optionnel
Expect Si vous utilisez un transfert segmenté, envoyez Expect: 100-continue. Le service Speech reconnaît la demande initiale et attend davantage de données. Obligatoire si vous envoyez des données audio segmentées.
Accept Si elle est fournie, elle doit être application/json. Le service Speech fournit des résultats au format JSON. Certaines infrastructures de requête fournissent une valeur par défaut incompatible. Il est recommandé d’inclure Accepttoujours . Facultatif, mais recommandé.

Paramètres de requête

Ces paramètres peuvent être inclus dans la chaîne de requête de la requête REST.

Note

Vous devez ajouter le paramètre de langage à l’URL pour éviter de recevoir une erreur HTTP 4xx. Par exemple, la langue définie sur l’anglais américain est la suivante : https://YourResourceName.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US.

Paramètre Description Obligatoire ou facultatif
language Identifie la langue parlée qui est reconnue. Consultez les langues prises en charge. Obligatoire
format Spécifie le format de résultat. Les valeurs acceptées sont simple et detailed. Les résultats simples incluent RecognitionStatus, , DisplayTextOffsetet Duration. Les réponses détaillées incluent quatre représentations différentes du texte d’affichage. Le paramètre par défaut est simple. Optionnel
profanity Spécifie comment gérer les propos offensants dans les résultats de reconnaissance. Les valeurs acceptées sont les suivantes :

masked, qui remplace la profanité par des astérisques.
removed, qui supprime toutes les profanités du résultat.
raw, qui inclut la profanité dans le résultat.

Le paramètre par défaut est masked.
Optionnel

Paramètres d’évaluation de la prononciation

Ce tableau répertorie les paramètres obligatoires et facultatifs pour l’évaluation de la prononciation :

Paramètre Description Obligatoire ou facultatif
ReferenceText Texte sur lequel la prononciation est évaluée. Obligatoire
GradingSystem Système de point pour l’étalonnage du score. Le FivePoint système donne un score à virgule flottante de 0-5 et HundredMark donne un score à virgule flottante de 0-100. Valeur par défaut : FivePoint. Optionnel
Granularity Granularité de l’évaluation. Les valeurs acceptées sont les suivantes :

Phoneme, qui affiche le score sur les niveaux de texte intégral, de mot et de phonème.
Word, qui indique le score aux niveaux du texte intégral et du mot.
FullText, qui affiche le score au niveau du texte intégral uniquement.

Le paramètre par défaut est Phoneme.
Optionnel
Dimension Définit les paramètres de sortie. Les valeurs acceptées sont les suivantes :

Basic, qui affiche le score de précision uniquement.
Comprehensive, qui affiche les scores sur d’autres dimensions (par exemple, score de fluidité et score d’exhaustivité au niveau du texte intégral et type d’erreur au niveau du mot).

Pour afficher les définitions de différentes dimensions de score et types d’erreurs de mots, consultez Propriétés de réponse. Le paramètre par défaut est Basic.
Optionnel
EnableMiscue Active le calcul de faute de langue. Avec ce paramètre activé, les mots prononcés sont comparés au texte de référence. Elles sont marquées avec omission ou insertion en fonction de la comparaison. Les valeurs acceptées sont False et True. Le paramètre par défaut est False. Optionnel
EnableProsodyAssessment Permet d’analyser la prosodie dans le cadre de l’évaluation de votre prononciation. Cette fonctionnalité évalue les aspects tels que le stress, l’intonation, la vitesse de parole et le rythme. Cette fonctionnalité fournit des insights sur la nature et l’expressivité de votre discours.

Si cette propriété est définie sur True, la valeur de résultat ProsodyScore est retournée.
Optionnel
ScenarioId Un GUID qui indique un système de points personnalisé. Optionnel

Voici un exemple JSON qui contient les paramètres d’évaluation de la prononciation :

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

L’exemple de code suivant montre comment générer les paramètres d’évaluation de prononciation dans l’en-tête 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);

Nous vous recommandons vivement de charger en continu (transfert segmenté) pendant que vous publiez les données audio, ce qui peut réduire considérablement la latence. Pour savoir comment activer la diffusion en continu, consultez le code sample dans différents langages de programmation.

Note

Pour plus d’informations, consultez l’évaluation de la prononciation.

Exemple de requête

L’exemple suivant inclut le nom d’hôte et les en-têtes requis. Il est important de noter que le service attend également des données audio, qui ne sont pas incluses dans cet exemple. Comme mentionné précédemment, la segmentation est recommandée, mais pas obligatoire.

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

Pour activer l’évaluation de la prononciation, vous pouvez ajouter l’en-tête suivant. Pour savoir comment générer cet en-tête, consultez les paramètres d’évaluation de la prononciation.

Pronunciation-Assessment: eyJSZWZlcm...

Codes d’état HTTP

Le code d’état HTTP pour chaque réponse indique la réussite ou les erreurs courantes.

Code d’état HTTP Description Raisons possibles
100 Continuer La demande initiale est acceptée. Poursuivez l’envoi du reste des données. (Ce code est utilisé avec le transfert en bloc.)
200 D'ACCORD La demande a été traitée avec succès. Le corps de la réponse est un objet JSON.
400 Demande incorrecte Le code de langue n’a pas été fourni, la langue n’est pas prise en charge ou le fichier audio n’est pas valide (par exemple).
401 Non autorisée Une clé de ressource ou un jeton d’autorisation n’est pas valide dans la région spécifiée, ou un point de terminaison n’est pas valide.
403 Interdit Une clé de ressource ou un jeton d’autorisation est manquant.

Exemples de réponses

Voici une réponse classique pour simple reconnaissance :

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

Voici une réponse classique pour detailed reconnaissance :

{
  "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"
    }
  ]
}

Voici une réponse classique pour la reconnaissance avec l’évaluation de la prononciation :

{
  "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
                }
              }
            }
          }
        }
      ]
    }
  ]
}

Propriétés de réponse

Les résultats sont fournis en tant que JSON. Le simple format inclut les champs de niveau supérieur suivants :

Propriété Description
RecognitionStatus État, tel que Success pour une reconnaissance ayant réussi. Consultez le tableau suivant.
DisplayText Texte reconnu après mise en majuscules, ponctuation, normalisation de texte inverse et masquage de la profanité. Présent uniquement en cas de succès. La normalisation de texte inverse est la conversion de texte parlé en formes plus courtes, telles que 200 pour « deux cents » ou « Dr Smith » pour « docteur smith ».
Offset Heure (en unités de 100 nanosecondes) à laquelle la parole reconnue commence dans le flux audio.
Duration Durée (en unités de 100 nanosecondes) de la parole reconnue dans le flux audio.
SNR Rapport signal-bruit (SNR) de la voix reconnue dans le flux audio.

Le RecognitionStatus champ peut contenir ces valeurs :

Statut Description
Success La reconnaissance a réussi et le DisplayText champ est présent.
NoMatch Un discours a été détecté dans le flux audio, mais aucun mot de la langue cible n’a été identifié. Cet état signifie généralement que la langue de reconnaissance est différente de la langue que l’utilisateur parle.
InitialSilenceTimeout Le début du flux audio contenait uniquement un silence, et le service a dépassé son délai d’attente de paroles.
BabbleTimeout Le début du flux audio contenait uniquement du bruit, et le service a dépassé son délai d’attente de paroles.
Error Le service de reconnaissance a rencontré une erreur interne et n’a pas pu continuer. Réessayez si possible.

Note

Si l’audio se compose uniquement de grossièretés et que le paramètre de requête profanity est défini sur remove, le service ne retourne pas de résultat de reconnaissance vocale.

Le detailed format inclut davantage de formes de résultats reconnus. Lorsque vous utilisez le detailed format, DisplayText est fourni comme Display pour chaque résultat de la NBest liste.

L’objet de la NBest liste peut inclure :

Propriété Description
Confidence Valeur de confiance de la donnée, de 0,0 (pas de confiance) à 1,0 (confiance totale).
Lexical Forme lexicale du texte reconnu : les mots réels reconnus.
ITN Forme de texte inverse normalisée (ITN) ou canonique du texte reconnu, avec des numéros de téléphone, des nombres, des abréviations (« docteur smith » à « dr smith ») et d’autres transformations appliquées.
MaskedITN Formulaire ITN avec masquage des grossièretés appliqué, si cela est demandé.
Display Forme d’affichage du texte reconnu, avec ponctuation et mise en majuscule ajoutée. Ce paramètre est identique à ce que DisplayText fournit lorsque le format est défini à simple.
AccuracyScore Précision de la prononciation du discours. La précision indique la précision selon laquelle les phonèmes correspondent à la prononciation d’un orateur natif. Le score de précision au niveau du mot et du texte intégral est agrégé à partir du score de précision au niveau phonème.
FluencyScore Fluidité de la parole fournie. La fluidité évalue à quel point le discours correspond à l'usage qu'un locuteur natif fait des pauses silencieuses entre les mots.
ProsodyScore Prosodie du discours donné. La prosodie indique à quel point le discours donné est naturel, y compris l'accentuation, l'intonation, la vitesse de parole et le rythme.

Pour afficher les définitions des résultats de l’évaluation de la prosodie en détail, consultez les paramètres de résultat.
CompletenessScore Complétivité de la parole, déterminée par le calcul du ratio de mots prononcés pour référencer l’entrée de texte.
PronScore Score global qui indique la qualité de prononciation de la parole fournie. Ce score est agrégé à partir de AccuracyScore, FluencyScoreet CompletenessScore avec un poids.
ErrorType Valeur qui indique si un mot est omis, inséré ou mal prononcé, comparé à ReferenceText. Les valeurs possibles sont None (ce qui signifie qu’aucune erreur sur ce mot), Omission, Insertionet Mispronunciation.

Transfert par segments

Le transfert en bloc (Transfer-Encoding: chunked) peut contribuer à réduire la latence de reconnaissance. Il permet au service Speech de commencer à traiter le fichier audio pendant sa transmission. L’API REST pour l’audio court ne fournit pas de résultats partiels ou intermédiaires.

L’exemple de code suivant montre comment envoyer de l’audio en blocs. Seul le premier bloc doit contenir l’en-tête du fichier audio. request est un HttpWebRequest objet connecté au point de terminaison REST approprié. audioFile est le chemin d’accès à un fichier audio sur le disque.

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

Authentification

Chaque demande nécessite un en-tête d’autorisation. Ce tableau illustre les en-têtes pris en charge pour chaque fonctionnalité :

En-tête d’autorisation pris en charge Transcription de la parole Synthèse vocale
Ocp-Apim-Subscription-Key Oui Oui
Authorization: Bearer Oui Oui

Lorsque vous utilisez l’en-tête Ocp-Apim-Subscription-Key , seule votre clé de ressource doit être fournie. Par exemple :

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

Si vous utilisez le flux de jeton du porteur STS avec Authorization: Bearer, envoyez d'abord une requête au point de terminaison issueToken. Dans cette demande, vous échangez votre clé de ressource pour un jeton d’accès valide pendant 10 minutes.

Une autre option consiste à utiliser l’authentification Microsoft Entra qui utilise également l’en-tête Authorization: Bearer, mais avec un jeton émis via Microsoft Entra ID. Consultez Utiliser l’authentification Microsoft Entra.

Comment obtenir un jeton d’accès STS

Pour obtenir un jeton d’accès STS, effectuez une requête auprès du point de terminaison issueToken à l’aide de Ocp-Apim-Subscription-Key et de votre clé de ressource.

Le issueToken point de terminaison a ce format :

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

Remplacez YourResourceName par le nom de votre ressource Speech.

Note

Ce point de terminaison nécessite que votre ressource ait un sous-domaine personnalisé configuré. Pour les ressources sans domaine personnalisé, utilisez plutôt le point de terminaison régional : https://<region>.api.cognitive.microsoft.com/sts/v1.0/issueToken. Remplacez <region> par la région Azure de votre ressource (par exemple, eastus).

Utilisez les exemples suivants pour créer votre demande de jeton d’accès.

Exemple HTTP

Cet exemple est une requête HTTP simple pour obtenir un jeton. Remplacez YourSpeechResourceKey par votre clé de ressource pour le service Speech. Remplacez YourResourceName par le nom de votre ressource 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

Le corps de la réponse contient le jeton d’accès au format JWT (JSON Web Token).

Exemple de PowerShell

Cet exemple est un script PowerShell simple pour obtenir un jeton d’accès. Remplacez YourSpeechResourceKey par votre clé de ressource pour le service Speech. Remplacez YourResourceName par le nom de votre ressource 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

exemple de cURL

cURL est un outil en ligne de commande disponible dans Linux (et dans le Sous-système Windows pour Linux). Cette commande cURL montre comment obtenir un jeton d’accès. Remplacez YourSpeechResourceKey par votre clé de ressource pour le service Speech. Remplacez YourResourceName par le nom de votre ressource 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"

Exemple C#

Cette classe C# montre comment obtenir un jeton d’accès. Transmettez votre clé de ressource pour le service Speech lorsque vous instanciez la classe. Remplacez YourResourceName par le nom de votre ressource 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();
        }
    }
}

exemple de 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)

Comment utiliser un jeton d’accès

Le jeton d’accès doit être envoyé au service en tant qu’en-tête Authorization: Bearer <TOKEN> . Chaque jeton d’accès est valide pendant 10 minutes. Vous pouvez obtenir un nouveau jeton à tout moment, mais pour réduire le trafic réseau et la latence, nous vous recommandons d’utiliser le même jeton pendant neuf minutes.

Important

Les jetons de porteur sont associés au point de terminaison qui les a émis. Un jeton obtenu à partir de YourResourceName.cognitiveservices.azure.com fonctionne uniquement pour les demandes adressées à ce même hôte. Un jeton provenant de <region>.api.cognitive.microsoft.com n’est valable qu’avec les points de terminaison régionaux de Speech. Si vous recevez une erreur 401 lors de l’utilisation d’un jeton porteur, utilisez Ocp-Apim-Subscription-Key plutôt votre clé de ressource, qui fonctionne avec tous les formats de point de terminaison.

Voici un exemple de requête HTTP adressée à l’API REST Speech to text pour l’audio court :

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

Utiliser l’authentification Microsoft Entra

Pour utiliser l’authentification Microsoft Entra avec l’API REST de transcription vocale pour les courts enregistrements audio, vous devez créer un jeton d’accès. Les étapes d’obtention du jeton d’accès constitué de l’ID de ressource et du jeton d’accès Microsoft Entra sont identiques à celles de l’utilisation du Kit de développement logiciel (SDK) Speech. Suivez les étapes ci-dessous Utiliser l’authentification Microsoft Entra

  • Créer une ressource Foundry pour Speech
  • Configurer la ressource Speech pour l’authentification Microsoft Entra
  • Obtenir un jeton d’accès Microsoft Entra
  • Obtenir l’ID de ressource Speech

Une fois que l’ID de ressource et le jeton d’accès Microsoft Entra ont été obtenus, le jeton d’accès réel peut être construit au format suivant :

aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN

Vous devez inclure le préfixe « aad# » et le séparateur « # » (hachage) entre l’ID de ressource et le jeton d’accès.

Voici un exemple de requête HTTP adressée à l’API REST Speech to text pour l’audio court :

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

Pour en savoir plus sur les jetons d’accès Microsoft Entra, y compris la durée de vie des jetons, visitez Access tokens dans la plateforme Microsoft Identity.