Résoudre les problèmes avec le Kit de développement logiciel (SDK) Speech

Cet article fournit des informations pour vous aider à résoudre des problèmes que vous pourriez rencontrer lors de l’utilisation du Kit de développement logiciel (SDK) Speech.

Échec de l'authentification.

Vous pouvez observer l’une des erreurs d’authentification, en fonction de l’environnement de programmation, de l’API ou du SDK. Voici quelques exemples d’erreurs :

  • Avez-vous défini la clé de ressource vocale et les valeurs de région ?
  • AuthenticationFailure
  • HTTP 403 Refusé ou HTTP 401 Non autorisé. Les demandes de connexion sans en-tête Ocp-Apim-Subscription-Key ou Authorization valide sont rejetées. Elles renvoient un code d’état 403 ou 401.
  • ValueError : ne peut pas construire SpeechConfig avec les arguments donnés (ou une variante de ce message). Cette erreur peut être observée, par exemple, lorsque vous exécutez l’un des démarrages rapides du Kit de développement logiciel (SDK) Speech pour Python sans définir de variables d’environnement. Vous pouvez également le voir lorsque vous définissez les variables d’environnement sur un élément non valide, tel que votre clé ou votre région.
  • Exception avec un code d’erreur : 0x5. Cette erreur de refus d’accès peut être observée, par exemple, lorsque vous exécutez l’un des démarrages rapides du Kit de développement logiciel (SDK) Speech pour C# sans définir de variables d’environnement.

Pour obtenir des conseils de dépannage de l’authentification de base, consultez Valider votre clé de ressource et valider un jeton d’autorisation. Pour plus d’informations sur la confirmation des informations d’identification, voir Obtenir les clés de votre ressource.

Valider votre clé de ressource

Vous pouvez vérifier que vous disposez d’une clé de ressource valide en exécutant l’une des commandes suivantes.

Notes

Remplacez YOUR_RESOURCE_KEY et YOUR_REGION par votre propre clé de ressource et la région associée.

$FetchTokenHeader = @{
    'Content-type'='application/x-www-form-urlencoded'
    'Content-Length'= '0'
    'Ocp-Apim-Subscription-Key' = 'YOUR_RESOURCE_KEY'
}
$OAuthToken = Invoke-RestMethod -Method POST -Uri https://YOUR_REGION.api.cognitive.microsoft.com/sts/v1.0/issueToken -Headers $FetchTokenHeader
$OAuthToken

Si vous avez entré une clé de ressource valide, la commande renvoie un jeton d’autorisation, voire une erreur dans le cas contraire.

Valider un jeton d’autorisation

Si vous utilisez un jeton d’autorisation pour l’authentification, vous verrez peut-être une erreur d’authentification pour les raisons suivantes :

  • Le jeton d’autorisation n’est pas valide.
  • Le jeton d’autorisation a expiré.

Si vous utilisez un jeton d’autorisation pour l’authentification, exécutez l’une des commandes suivantes pour vérifier que le jeton d’autorisation est toujours valide. Les jetons sont valides pendant 10 minutes.

Notes

Remplacez YOUR_AUDIO_FILE par le chemin de votre fichier audio préenregistré. Remplacez YOUR_ACCESS_TOKEN par le jeton d’autorisation retourné à l’étape précédente. Remplacez YOUR_REGION par la région correcte.

$SpeechServiceURI =
'https://YOUR_REGION.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?language=en-US'

# $OAuthToken is the authorization token returned by the token service.
$RecoRequestHeader = @{
    'Authorization' = 'Bearer '+ $OAuthToken
    'Transfer-Encoding' = 'chunked'
    'Content-type' = 'audio/wav; codec=audio/pcm; samplerate=16000'
}

# Read audio into byte array.
$audioBytes = [System.IO.File]::ReadAllBytes("YOUR_AUDIO_FILE")

$RecoResponse = Invoke-RestMethod -Method POST -Uri $SpeechServiceURI -Headers $RecoRequestHeader -Body $audioBytes

# Show the result.
$RecoResponse

Si vous avez entré une jeton d'autorisation valide, la commande renvoie la transcription de votre fichier audio, voire une erreur dans le cas contraire.

InitialSilenceTimeout via RecognitionStatus

Ce problème est généralement observé avec la reconnaissance d’un seul coup d’un seul énoncé. Par exemple, l’erreur peut être retournée dans les circonstances suivantes :

  • L’audio commence par une longue étendue de silence. Dans ce cas, le service arrête la reconnaissance après quelques secondes et renvoie InitialSilenceTimeout.
  • Le contenu audio utilise un format de codec non pris en charge, ce qui fait que les données audio sont traitées comme s’il s’agissait d’un silence.

Il est acceptable d’avoir le silence au début de l’audio, mais uniquement lorsque vous utilisez la reconnaissance continue.

SPXERR_AUDIO_SYS_LIBRARY_NOT_FOUND

Cette erreur peut être renvoyée, par exemple, lorsque plusieurs versions de Python sont installées ou si vous n’utilisez pas une version prise en charge de Python. Vous pouvez essayer d’utiliser un autre interpréteur Python ou désinstaller toutes les versions de Python et réinstaller la dernière version de Python et le Kit de développement logiciel (SDK) Speech.

HTTP 400 Requête incorrecte

Cette erreur est généralement due au fait que le corps de la requête contient des données audio non valides. Seul le format WAV est pris en charge. De même, vérifiez les en-têtes de la requête pour vous assurer que vous spécifiez des valeurs appropriées pour Content-Type et Content-Length.

HTTP 408 Délai d’expiration de la demande

L’erreur est très probablement due au fait qu’aucune donnée audio n’est envoyée au service. Des problèmes de réseau peuvent également être à l’origine de cette erreur.

Étapes suivantes