Soluciona problemas

Obtén información sobre los pasos para solucionar problemas que pueden servirte si tienes dificultades con Speech-to-Text.

No puedes autenticar en Speech-to-Text

Es posible que recibas un mensaje de error que indica que tus “credenciales predeterminadas” de la aplicación no están disponibles, o tal vez te preguntes cómo obtener una clave de API para llamar a Speech-to-Text.

En Speech-to-Text, se usan credenciales predeterminadas de la aplicación (ADC) para la autenticación.

Las credenciales para ADC deben estar disponibles dentro del contexto en que llamas a la API de Speech-to-Text. Por ejemplo, si configuras ADC en tu terminal, pero ejecutas tu código en el depurador del IDE, el contexto de ejecución del código podría no tener acceso a las credenciales. En ese caso, tu solicitud a Speech-to-Text podría fallar.

Para obtener información sobre cómo proporcionar credenciales a ADC, consulta Configura credenciales predeterminadas de la aplicación.

Se muestra una respuesta vacía en Speech-to-Text

Existen varias razones por las que Speech-to-Text podría mostrar una respuesta vacía. El origen del problema puede ser RecognitionConfig o el audio en sí.

Soluciona problemas de RecognitionConfig

El objeto RecognitionConfig (o StreamingRecognitionConfig) es parte de una solicitud de reconocimiento de Speech-to-Text. Hay 2 categorías de campos principales que se deben establecer para realizar una transcripción de forma correcta:

  • Configuración de audio
  • Modelo e idioma

Una de las causas más comunes de las respuestas vacías (por ejemplo, recibes una respuesta JSON {} vacía) es proporcionar información incorrecta sobre los metadatos de audio. Si los campos de configuración de audio no están configurados de forma correcta, es probable que la transcripción falle y el modelo de reconocimiento muestre resultados vacíos.

La configuración de audio contiene los metadatos del audio proporcionado. Puedes obtener los metadatos para el archivo de audio mediante el comando ffprobe, que forma parte de FFMPEG.

En el siguiente ejemplo, se demuestra el uso de ffprobe para obtener los metadatos 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

Con el comando anterior, podemos ver que el archivo tiene lo siguiente:

  • sample_rate_hertz: 8000
  • canales: 1
  • codificación LINEAR16 (s16)

Puedes usar esta información en tu RecognitionConfig.

Los motivos adicionales relacionados con el audio para una respuesta vacía pueden estar relacionados con la codificación de audio. Estas son otras herramientas y cosas que puedes probar:

  1. Reproduce el archivo y escucha el sonido saliente. ¿El audio es claro y la voz inteligible?

    Para reproducir archivos, puedes utilizar el comando play de SoX (Sound eXchange). A continuación, se muestran algunos ejemplos basados en diferentes codificaciones de audio.

    Los archivos FLAC incluyen un encabezado que indica la tasa de muestreo, el tipo de codificación y el número de canales, y se pueden reproducir de la siguiente manera:

    play audio.flac

    Los archivos LINEAR16 no incluyen un encabezado. Para reproducirlos, debes especificar la tasa de muestreo, el tipo de codificación y el número de canales. La codificación LINEAR16 debe ser de 16 bits, número entero con signo y little-endian.

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

    Los archivos MULAW tampoco incluyen un encabezado y, a menudo, utilizan una tasa de muestreo más baja.

    play --channels=1 --rate=8000 --encoding=u-law audio.raw
  2. Verifica que la codificación de audio de tus datos coincida con los parámetros que enviaste en RecognitionConfig. Por ejemplo, si tu solicitud especificó "encoding":"FLAC" y "sampleRateHertz":16000, los parámetros de datos de audio enumerados por el comando play de SoX deben coincidir con estos parámetros, de la siguiente manera:

    play audio.flac

    debería enumerar:

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

    Si la lista de SoX muestra un Sampleratehertz distinto de 16000Hz, cambia "sampleRateHertz" en InitialRecognizeRequest para que coincida. Si Encoding no es FLAC o Channels no es 1 @ 16-bit, no puedes usar este archivo directamente y tendrás que convertirlo en una codificación compatible (consulta el siguiente paso).

  3. Si tu archivo de audio no posee codificación FLAC, intenta convertirlo en FLAC mediante SoX, y repite los pasos anteriores para reproducir el archivo y verificar la codificación, sampleRateHertz y los canales. Aquí hay algunos ejemplos que convierten varios formatos de archivos de audio en codificación 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
    

    Para convertir un archivo RAW en FLAC, debes conocer la codificación de audio del archivo. Por ejemplo, para convertir estéreo de 16 bits con signo de little-endian a 16000 Hz a FLAC, haz lo siguiente:

    sox --channels=2 --bits=16 --rate=16000 --encoding=signed-integer \
    --endian=little audio.raw --channels=1 --bits=16 audio.flac
    
  4. Ejecuta el ejemplo de la guía de inicio rápido o una de las aplicaciones de muestra con el archivo de audio de muestra suministrado. Una vez que el ejemplo se ejecute con éxito, reemplaza el archivo de audio de muestra con tu archivo de audio.

Configuración de modelo y lenguaje

La selección de modelos es muy importante para obtener resultados de transcripción de alta calidad. Speech-to-Text proporciona varios modelos que se ajustan a diferentes casos de uso y que se deben elegir para que coincidan lo más posible con tu audio. Por ejemplo, algunos modelos (como latest_short y command_and_search) son modelos cortos, lo que significa que son más adecuados para audios y mensajes cortos. Es probable que estos modelos muestren resultados apenas detecten un período de silencio. Por otro lado, los modelos de formato largo (como latest_short, phone_call, video and default) son más adecuados para audios más largos y no son tan sensibles para interpretar el silencio como el final del audio.

Si tu reconocimiento finaliza de forma abrupta o no se muestra rápido, es posible que desees verificar y experimentar con otros modelos para ver si puedes obtener una mejor calidad de transcripción. Puedes experimentar con varios modelos mediante la IU de Speech.

Resultados inesperados del reconocimiento de voz

Si los resultados que muestra Speech-to-Text no son los esperados, haz lo siguiente:

  • Comprueba la respuesta para los mensajes de error.
  • Observa las cuotas y límites.

  • Para mejorar la precisión del reconocimiento, sigue las pautas de las Recomendaciones.