1

Mise à jour: le code fonctionne parfaitement avec la clé d'essai de Microsoft (f2da0a19f4d94875880e9fbaceabc97d), mais échoue avec ma propre clé générée dans Azure. Whaat? Solution: J'ai utilisé une clé pour "Translator Speech API" au lieu de "Bing Speech API". C'était l'erreur. Sensationnel. Deux heures gaspillées. Je suis en train d'écrire un bot qui prend l'entrée de la parole. Pour cela, j'utilise l'API Bing Speech de Microsoft.403 Interdit lorsque vous essayez d'appeler l'API Microsoft Bing Speech à partir d'un bot

J'envoie une requête comme suit et j'obtiens une erreur 403 Forbidden. Selon les documents officiels, 403 signifie l'authentification ou le problème de quota. Cependant, j'ai un compte payant (pas un compte gratuit) et le jeton d'authentification semble être reçu correctement.

URL:

https://speech.platform.bing.com/recognize?scenarios=ulm&appid=D4D52672-91D7-4C74-8AD8-42B1D98141A5&locale=en-US&device.os=bot&version=3.0&format=json&instanceid=45d58c78-e2d8-444f-83c8-9a5dca7225ba&requestid=a3613a79-d84b-497d-87d7-19b19552c0a5

têtes:

Autorisation: Bearer eyJ0eXAiOiJlV1QiLCJhbGciOiJIUzI1NiJ9.eyJzY29wZSI6Imh0dHBzOi8vZGV2Lm1pY3Jvc29mdHRyYW5zbGF0b3IuY29tLyIsInN1YnNjcmlwdGlvbi1pZCI6ImM4ZWQyMTNlNjUyMTRhYzc4MDFlNGU0M2RjZmQ1ZWZkIiwicHJvZHVjdC1pZCI6IlNwZWVjaFRyYW5zbGF0b3IuUzEiLCJjb2duaXRpdmUtc2VydmljZXMtZW5kcG9pbnQiOiJodHRwczovL2F waS5jb2duaXRpdmUubWljcm9zb2Z0LmNvbS9pbnRlcm5hbC92MS4wLyIsImF6dXJlLXJlc291cmNlLWlkIjoiL3N1YnNjcmlwdGlvbnMvZmU4ZjI4ZDktZDJlNy00YWY0LxIwOGUtNWU3N2Y5YTc0ODY2L3Jlc291cmNlR3JvdXBzL2JvdHMvcHJvdmlkZXJzL01pY3Jvc29mdC5Db2duaXRpdmVTZXJ2aWNlcy ...} bWljcm9zb2Z0dHJhbnNsYXRvciIsImV4cCI6MTQ5MTQwNTcxM30.mdFdi98OGyjZ_sDYvd2lMWZqvPMROYyiChQz0JKh7fk

La réponse que je reçois est 403 interdite sans aucune information supplémentaire.

Des idées? J'utilise simplement l'implémentation de référence de Microsoft ici - https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/intelligence-SpeechToText - mais avec ma propre clé d'abonnement.

code:

public async Task<string> GetTextFromAudioAsync(Stream audiostream) 
    { 
     var requestUri = @"https://speech.platform.bing.com/recognize?scenarios=ulm&appid=D4D52672-91D7-4C74-8AD8-42B1D98141A5&locale=en-US&device.os=bot&version=3.0&format=json&instanceid=45d58c78-e2d8-444f-83c8-9a5dca7225ba&requestid=" + Guid.NewGuid(); 

     using (var client = new HttpClient()) 
     { 
      var token = Authentication.Instance.GetAccessToken(); 
      client.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); 

      //using (var binaryContent = new ByteArrayContent(StreamToBytes(audiostream))) 
      using (var binaryContent = new ByteArrayContent(File.ReadAllBytes(Environment.GetEnvironmentVariable("HOME").ToString() + "\\site\\wwwroot\\test.wav"))) 
      { 
       binaryContent.Headers.TryAddWithoutValidation("content-type", "audio/wav; codec=\"audio/pcm\"; samplerate=8000"); 

       var response = await client.PostAsync(requestUri, binaryContent); 
       var responseString = await response.Content.ReadAsStringAsync(); 
       try 
       { 
        dynamic data = JsonConvert.DeserializeObject(responseString); 
        if (data == null) 
        { 
         throw new Exception("Server responded: " + response.StatusCode); 
        } 
        return data.header.name; 
       } 
       catch (JsonReaderException ex) 
       { 
        throw new Exception(responseString, ex); 
       } 
      } 
     } 
    } 
+1

Si vous avez trouvé votre réponse, postez-la comme réponse et acceptez-la comme telle. Je vous remercie. –

Répondre

0

J'ai utilisé une clé pour "Traducteur API Speech" au lieu de "Bing Speech API". C'était l'erreur. Sensationnel. Deux heures gaspillées.