Conceptos básicos de Speech-to-Text

Este documento es una guía de los conceptos básicos del uso de Speech-to-Text. En esta guía conceptual, se abordan los tipos de solicitudes que puedes hacer a Speech-to-Text, cómo construir esas solicitudes y cómo manejar sus respuestas. Recomendamos que todos los usuarios de Speech-to-Text lean esta guía y uno de los instructivos asociados antes de comenzar a usar la API.

Solicitudes de reconocimiento de Speech-to-Text

En Speech-to-Text, se dispone de tres métodos principales para realizar el reconocimiento de voz. Estos se mencionan a continuación:

  • Reconocimiento síncrono (REST y gRPC) envía datos de audio a la API de Speech-to-Text, realiza el reconocimiento de esos datos y muestra los resultados luego de procesar todo el audio. Las solicitudes de reconocimiento síncronas están limitadas a los datos de audio de 1 minuto o menos de duración.

  • El Reconocimiento asíncrono (REST y gRPC) envía los datos de audio a la API de Speech-to-Text y también inicia una operación de larga duración. Esta operación te permite sondear periódicamente los resultados del reconocimiento. Usa las solicitudes asíncronas para los datos de audio de cualquier duración hasta 480 minutos.

  • El Reconocimiento de transmisión (gRPC únicamente) realiza el reconocimiento de los datos de audio proporcionados dentro de una transmisión bidireccional de gRPC. Las solicitudes de transmisión continua están diseñadas para fines de reconocimiento en tiempo real, como la captura de audio en vivo de un micrófono. El reconocimiento de transmisión continua proporciona resultados provisorios mientras se captura el audio, lo que permite que el resultado aparezca, por ejemplo, mientras un usuario aún está hablando.

Las solicitudes contienen parámetros de configuración, así como datos de audio. Las solicitudes de reconocimiento pueden contener de forma opcional un reconocedor, una configuración de reconocimiento almacenada y reutilizable.

Metadatos de audio

En la mayoría de los archivos de audio, la API de Speech-to-Text puede deducir automáticamente los metadatos de audio. Speech-to-Text analiza el encabezado del archivo y lo decodifica según esa información. Consulta la página de codificación para conocer los tipos de archivo compatibles.

En el caso de los archivos de audio sin encabezado, la API de Speech-to-Text permite especificar los metadatos de audio de forma explícita en la configuración de reconocimiento. Consulta la página de precios y obtén más información.

Si tienes la opción durante la codificación del material de origen, captura audio con una tasa de muestreo de 16,000 Hz. Los valores más bajos pueden afectar la exactitud del reconocimiento de voz, y los niveles más altos no tienen un efecto apreciable en la calidad del reconocimiento.

Sin embargo, si tus datos de audio ya se grabaron con una tasa de muestreo existente diferente de 16,000 Hz, no vuelvas a realizar un muestreo de tu audio a 16,000 Hz. La mayoría del audio de telefonía heredado, por ejemplo, usa tasas de muestreo de 8,000 Hz, lo que puede dar resultados menos exactos. Si debes usar ese audio, proporciona el audio a la API de Speech-to-Text a su tasa de muestreo nativa.

Idiomas

El motor de reconocimiento de Speech-to-Text admite una variedad de idiomas y dialectos. Especifica el idioma (y el dialecto nacional o regional) de tu audio dentro del campo languageCode de la configuración de la solicitud, con un identificador BCP-47.

En la página Idiomas compatibles, encontrarás una lista completa de los idiomas admitidos por cada función.

Funciones de reconocimiento

La API de Speech-to-Text tiene funciones de reconocimiento adicionales, como la puntuación automática y la confianza a nivel de palabra. Estos se habilitan en la configuración de reconocimiento en las solicitudes. Consulta el código de muestra que se proporciona en los vínculos anteriores y la página de idiomas para conocer la disponibilidad de estas funciones.

Selección del modelo

Speech-to-Text puede usar uno de varios modelos de aprendizaje automático para transcribir tu archivo de audio. Google entrenó estos modelos de reconocimiento de voz para tipos y fuentes de audio específicos. Consulta la documentación sobre la selección de modelos para obtener información sobre los modelos disponibles y cómo seleccionar uno en tus solicitudes.

Contenido de audio incorporado

El audio incorporado se incluye en la solicitud de reconocimiento de voz cuando se transfiere un parámetro content en el campo audio_source de la solicitud. En el caso del audio incorporado que se proporciona como contenido dentro de una solicitud de gRPC, ese audio debe ser compatible con la serialización Proto3 y se debe proporcionar como datos binarios. Para el audio incorporado que se proporciona como contenido dentro de una solicitud de REST, ese audio debe ser compatible con la serialización JSON y, primeramente, se debe codificar en Base64. Para obtener más información, consulta [Codifica tu audio en Base64][base64-encoding].

Cuando construyas una solicitud con una biblioteca cliente de Google Cloud, por lo general, escribirás estos datos binarios (o codificados en Base64) directamente en el campo content.

Transfiere audio cuya referencia es un URI

Con más frecuencia, pasarás un parámetro uri dentro del campo audio_source de la solicitud a la API de Speech-to-Text y dirigirás a un archivo de audio (en formato binario, no Base64) ubicado en Cloud Storage de la siguiente forma:

gs://bucket-name/path/to/audio/file

Speech-to-Text usa una cuenta de servicio para acceder a tus archivos en Cloud Storage. De forma predeterminada, la cuenta de servicio tiene acceso a los archivos de Cloud Storage en el mismo proyecto.

La siguiente es la dirección de correo electrónico de la cuenta de servicio:

service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com

Para transcribir archivos de Cloud Storage en otro proyecto, puedes otorgar a esta cuenta de servicio el rol Agente de servicio de Speech-to-Text en el otro proyecto:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/speech.serviceAgent

Para obtener más información sobre la política del IAM del proyecto, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes otorgar acceso a una cuenta de servicio más detallada si le das permiso a un bucket de Cloud Storage específico:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com:admin \
    gs://BUCKET_NAME

Para obtener más información sobre la administración del acceso a Cloud Storage, consulta Crea y administra listas de control de acceso en la documentación de Cloud Storage.

Respuestas de la API de Speech-to-Text

Una vez que se procesa el audio, la API de Speech-to-Text muestra los resultados de la transcripción en mensajes SpeechRecognitionResult para solicitudes síncronas y por lotes, y en mensajes StreamingRecognitionResult para las solicitudes de transmisión. En las solicitudes síncronas y por lotes, la respuesta de RPC contiene una lista de resultados. La lista de audio reconocido aparece en orden contiguo. Para las respuestas de transmisión, todos los resultados marcados como is_final aparecen en orden contiguo.

Selecciona alternativas

Cada resultado dentro de una respuesta de reconocimiento síncrono correcto puede contener una o más alternatives (si max_alternatives es mayor que 1). Si Speech-to-Text determina que una alternativa tiene un valor de confianza suficiente, entonces esa alternativa se incluye en la respuesta. La primera alternativa en la respuesta siempre es la mejor alternativa (con más probabilidades).

La configuración de max_alternatives como un valor mayor que 1 no implica o garantiza que se mostrarán varias alternativas. En general, más de una alternativa es lo más apropiado para proporcionar opciones en tiempo real a los usuarios que obtienen los resultados a través de una solicitud de reconocimiento de transmisión.

Maneja las transcripciones

Cada alternativa suministrada en la respuesta contendrá un elemento transcript con el texto reconocido. Cuando se proporcionen alternativas secuenciales, deberías concatenar estas transcripciones.

Valores de confianza

El valor confidence es una estimación entre 0.0 y 1.0. Se calcula agregando los valores de "probabilidad" asignados a cada palabra en el audio. Un número más alto indica una mayor probabilidad estimada de que las palabras individuales reconocidas sean correctas. Por lo general, este campo está destinado a las principales hipótesis y solo se proporciona para los resultados en los que sucede lo siguiente: is_final=true. Por ejemplo, puedes usar el valor de confidence para decidir si deseas mostrar resultados alternativos al usuario o pedir la confirmación del usuario.

Sin embargo, ten en cuenta que el modelo determina el "mejor" resultado en función de más señales que la puntuación confidence sola (como el contexto de la oración). Debido a esto, hay casos ocasionales en los que el resultado superior no tiene la puntuación de confianza más alta. Si no solicitaste múltiples resultados alternativos, el "mejor" resultado mostrado puede tener un valor de confianza menor al previsto. Por ejemplo, esto puede ocurrir en casos en que se usan palabras raras. A una palabra que se usa con poca frecuencia se le puede asignar un valor bajo de "probabilidad", incluso si se reconoce correctamente. Si el modelo determina que la palabra infrecuente es la opción más probable según el contexto, ese resultado se muestra en la parte superior, aunque el valor confidence del resultado sea menor que las opciones alternativas.

¿Qué sigue?