Dépannage

Découvrez les étapes de dépannage qui pourraient vous être utiles si vous rencontrez des problèmes avec Speech-to-Text.

Impossible de s'authentifier auprès de Speech-to-Text

Vous pouvez recevoir un message d'erreur indiquant que les "identifiants par défaut de l'application" ne sont pas disponibles, ou vous vous demandez peut-être comment obtenir une clé API à utiliser lors de l'appel de Speech-to-Text.

Speech-to-Text utilise le service Identifiants par défaut de l'application (ADC) pour l'authentification.

Les identifiants ADC doivent être disponibles dans le contexte d'appel de l'API Speech-to-Text. Par exemple, si vous configurez le service ADC dans votre terminal, mais que vous exécutez votre code dans le débogueur de votre IDE, le contexte d'exécution du code peut ne pas avoir accès aux identifiants. Dans ce cas, la requête à Speech-to-Text peut échouer.

Pour savoir comment fournir des identifiants à ADC, consultez la page Configurer les identifiants par défaut de l'application.

Speech-to-Text renvoie une réponse vide

Speech-to-Text peut renvoyer une réponse vide pour plusieurs raisons. La source du problème peut être RecognitionConfig ou le contenu audio lui-même.

Résoudre les problèmes liés à la configuration RecognitionConfig

L'objet RecognitionConfig (ou StreamingRecognitionConfig) fait partie d'une requête de reconnaissance vocale Speech-to-Text. Il existe deux catégories principales de champs à définir pour effectuer une transcription correctement :

  • Configuration audio.
  • Modèle et langue.

L'une des causes les plus courantes de réponses vides (par exemple, vous recevez une réponse JSON {} vide) fournit des informations incorrectes sur les métadonnées audio. Si les champs de configuration audio ne sont pas définis correctement, la transcription échouera probablement et le modèle de reconnaissance renverra des résultats vides.

La configuration audio contient les métadonnées de l'audio fourni. Vous pouvez obtenir les métadonnées de votre fichier audio à l'aide de la commande ffprobe, qui fait partie de FFMPEG.

L'exemple suivant montre comment utiliser la fonction ffprobe pour obtenir les métadonnées de https://storage.googleapis.com/cloud-samples-tests/speech/commercial_mono.wav.

$ ffprobe commercial_mono.wav
[...]
Input #0, wav, from 'commercial_mono.wav':
  Duration: 00:00:35.75, bitrate: 128 kb/s
  Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 8000 Hz, 1 channels, s16, 128 kb/s

La commande ci-dessus montre que le fichier contient les éléments suivants :

  • sample_rate_hertz : 8000
  • canaux : 1
  • encoding LINEAR16 (s16)

Vous pouvez utiliser ces informations dans votre configuration RecognitionConfig.

D'autres facteurs liés à l'audio pouvant expliquer une réponse vide peuvent être liés à l'encodage audio. Voici d'autres outils et solutions à essayer :

  1. Lisez le fichier, puis écoutez le résultat. Le contenu audio est-il clair ? Le discours est-il intelligible ?

    Pour lire des fichiers, vous pouvez exécuter la commande SoX (Sound eXchange) play. Quelques exemples basés sur différents formats d'encodage audio sont présentés ci-dessous.

    Les fichiers FLAC comprennent un en-tête indiquant le taux d'échantillonnage, le type d'encodage et le nombre de canaux. Ils peuvent être lus comme suit :

    play audio.flac

    Les fichiers LINEAR16 n'incluent pas d'en-tête. Pour les lire, vous devez spécifier le taux d'échantillonnage, le type d'encodage et le nombre de canaux. Le format d'encodage LINEAR16 doit être un nombre entier little-endian de 16 bits signés.

    play --channels=1 --bits=16 --rate=16000 --encoding=signed-integer \
    --endian=little audio.raw

    Les fichiers MULAW n'incluent pas non plus d'en-tête et utilisent souvent un taux d'échantillonnage moins élevé.

    play --channels=1 --rate=8000 --encoding=u-law audio.raw
  2. Assurez-vous que l'encodage audio de vos données correspond aux paramètres indiqués dans RecognitionConfig. Par exemple, si les éléments "encoding":"FLAC" et "sampleRateHertz":16000 sont spécifiés dans votre requête, les paramètres de données audio répertoriés par la commande SoX play doivent correspondre, comme indiqué ci-dessous :

    play audio.flac

    doit répertorier :

    Encoding: FLAC
    Channels: 1 @ 16-bit
    Sampleratehertz: 16000Hz
    

    Si la liste SoX indique un taux d’échantillonnage Sampleratehertz différent de 16000Hz, modifiez "sampleRateHertz" dans InitialRecognizeRequest pour qu'il soit identique. Vous ne pouvez pas utiliser ce fichier directement si Encoding n'est pas défini sur FLAC ou Channels sur 1 @ 16-bit. Vous devrez d'abord le convertir dans un format d'encodage compatible (voir l'étape suivante).

  3. Si votre fichier audio n'est pas encodé au format FLAC, essayez de le convertir en FLAC avec SoX, puis répétez les étapes ci-dessus afin de lire le fichier et de vérifier l'encodage, le taux d'échantillonnage et les canaux. Voici quelques exemples qui permettent de convertir plusieurs formats de fichier audio en fichier FLAC.

    sox audio.wav --channels=1 --bits=16 audio.flac
    sox audio.ogg --channels=1 --bits=16 audio.flac
    sox audio.au --channels=1 --bits=16 audio.flac
    sox audio.aiff --channels=1 --bits=16 audio.flac
    

    Pour convertir un fichier RAW en FLAC, vous devez connaître l'encodage audio du fichier. Par exemple, pour convertir un fichier little-endian de 16 bits signés avec un taux d'échantillonnage de 16 000 Hz en fichier FLAC, procédez comme suit :

    sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \
    --endian=little audio.raw --channels=1 --bits=16 audio.flac
    
  4. Exécutez l'exemple de démarrage rapide ou l'un des exemples d'applications à l'aide du fichier audio fourni. Une fois que l'exemple fonctionne correctement, remplacez le fichier audio par votre propre fichier.

Configuration du modèle et de la langue

La sélection de modèles est très importante pour obtenir des résultats de transcription de haute qualité. Speech-to-Text fournit plusieurs modèles qui ont été adaptés à différents cas d'utilisation et qui doivent être choisis pour correspondre le plus à votre contenu audio. Par exemple, certains modèles (tels que latest_short et command_and_search) sont des modèles courts, qui sont plus adaptés aux audios et aux invites courts. Ces modèles sont susceptibles de renvoyer des résultats dès qu'ils détectent une période de silence. Les modèles longs (latest_short, phone_call, video and default, par exemple) conviennent davantage aux contenus audio plus longs et sont moins susceptibles d'interpréter le silence comme la fin de l'audio.

Si votre reconnaissance se termine trop brusquement ou ne renvoie pas rapidement, vous pouvez vérifier et tester d'autres modèles pour voir si vous pouvez obtenir une meilleure qualité de transcription. Vous pouvez tester plusieurs modèles à l'aide de l'interface utilisateur de la reconnaissance vocale.

Résultats inattendus de la reconnaissance vocale

Si les résultats renvoyés par Speech-to-Text ne correspondent pas à vos attentes, procédez comme suit :

  • Vérifiez que la réponse ne contient pas de messages d'erreur.
  • Notez les quotas et les limites.

  • Pour améliorer la précision de la reconnaissance, respectez les consignes décrites dans les bonnes pratiques.