Información general sobre Cloud Speech-to-Text

Cloud Speech-to-Text es una API que te permite integrar las tecnologías de reconocimiento de voz de Google en tus aplicaciones de desarrollador. En este documento se explican los conceptos básicos para usar Cloud Speech-to-Text, incluidos los tipos de solicitudes que puedes enviar a Cloud STT, cómo crear esas solicitudes y cómo gestionar sus respuestas. Antes de empezar a usar la API, lee esta guía y uno de los tutoriales asociados.

Solicitudes de reconocimiento de Cloud Speech-to-Text

Cloud Speech-to-Text (STT) cuenta con tres métodos principales para realizar el reconocimiento de voz. Están disponibles los siguientes métodos:

  • El reconocimiento síncrono (REST y gRPC) envía datos de audio a la API Cloud Speech-to-Text, realiza el reconocimiento de esos datos y devuelve los resultados una vez que se ha procesado todo el audio. Las solicitudes de reconocimiento síncronas procesan datos de audio de 1 minuto o menos.

  • El reconocimiento asíncrono (REST y gRPC) envía datos de audio a la API Cloud Speech-to-Text e inicia una operación de larga duración. Con esta operación, puedes sondear periódicamente para obtener resultados de reconocimiento. Usa solicitudes asíncronas para obtener datos de audio de cualquier duración de hasta 480 minutos.

  • Reconocimiento de streaming (solo gRPC): realiza el reconocimiento de los datos de audio proporcionados en un stream bidireccional de gRPC. Las solicitudes de streaming están diseñadas para el reconocimiento en tiempo real, como la captura de audio en directo desde un micrófono. El reconocimiento en streaming proporciona resultados provisionales a medida que se captura el audio. Por ejemplo, los resultados pueden aparecer mientras el usuario sigue hablando.

Las solicitudes contienen parámetros de configuración y 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 Cloud Speech-to-Text puede deducir automáticamente los metadatos de audio. Cloud STT analiza el encabezado del archivo y lo decodifica según esa información. Consulta la página sobre codificación para ver los tipos de archivo admitidos.

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

Si tienes la opción de elegir al codificar el material de origen, captura el audio con una frecuencia de muestreo de 16.000 Hz. Los valores inferiores pueden afectar a la precisión del reconocimiento de voz, y los superiores no tienen un efecto apreciable en la calidad del reconocimiento de voz.

Sin embargo, si tus datos de audio ya se han grabado a una frecuencia de muestreo distinta de 16.000 Hz, no vuelvas a muestrear el audio a 16.000 Hz. Por ejemplo, la mayoría del audio de telefonía antiguo usa frecuencias de muestreo de 8000 Hz, lo que puede dar resultados menos precisos. Si debes usar este tipo de audio, proporciónalo a la API Cloud Speech-to-Text con su frecuencia de muestreo original.

Idiomas

El motor de reconocimiento de Cloud STT admite varios idiomas y dialectos. Puedes especificar el idioma (y el dialecto nacional o regional) del audio en el campo languageCode de la configuración de la solicitud mediante un identificador BCP-47.

Puedes consultar la lista completa de idiomas admitidos para cada función en la página Idiomas admitidos.

Funciones de reconocimiento

La API Cloud Speech-to-Text tiene funciones de reconocimiento adicionales, como la puntuación automática y la confianza a nivel de palabra. Puedes habilitar estas funciones en la configuración de reconocimiento de las solicitudes. Consulta el código de muestra de los enlaces proporcionados y la página de idiomas para ver la disponibilidad de las funciones.

Selección de modelos

Transcripción de voz de Cloud puede usar uno de los varios modelos de aprendizaje automático para transcribir tu archivo de audio. Google ha entrenado 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 insertado

Para incluir audio insertado en la solicitud de reconocimiento de voz, debes enviar un parámetro content en el campo audio_source de la solicitud. En el caso del audio insertado que proporciones como contenido en una solicitud gRPC, el audio debe ser compatible con la serialización Proto3 y proporcionarse como datos binarios. En el caso del audio insertado que proporciones como contenido en una solicitud REST, el audio debe ser compatible con la serialización JSON y debe estar codificado en Base64. Consulte Codificación Base64 de audio para obtener más información.

Cuando se crea una solicitud con una biblioteca de cliente de Google Cloud, normalmente se escriben estos datos binarios (o codificados en Base64) directamente en el campo content.

Transfiere el audio al que se hace referencia mediante un URI

Lo más habitual es que envíes un parámetro uri en el campo audio_source de la solicitud de la API Cloud Speech-to-Text, que apunta a un archivo de audio (en formato binario, no en Base64) ubicado en Cloud Storage con el siguiente formato:

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

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

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

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

Para transcribir archivos de Cloud Storage en otro proyecto, puedes asignar a esta cuenta de servicio el rol [Agente de servicio de Transcripción de voz][speech-service-agent] 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 de gestión de identidades y accesos de un proyecto, consulta el artículo [Gestionar acceso a proyectos, carpetas y organizaciones][manage-access].

También puedes dar a la cuenta de servicio un acceso más específico dándole permiso para un segmento de Cloud Storage concreto:

gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/storage.admin

Para obtener más información sobre cómo gestionar el acceso a Cloud Storage, consulta el artículo [Crear y gestionar listas de control de acceso][buckets-manage-acl] de la documentación de Cloud Storage.

Respuestas de la API Cloud Speech-to-Text

Una vez que la API Cloud Speech-to-Text procesa el audio, devuelve los resultados de la transcripción en mensajes SpeechRecognitionResult para las solicitudes síncronas y por lotes, y en mensajes StreamingRecognitionResult para las solicitudes de streaming. En las solicitudes síncronas y por lotes, la respuesta de la llamada a procedimiento remoto contiene una lista de resultados. La lista de audio reconocido aparece en orden contiguo. En el caso de las respuestas de streaming, todos los resultados marcados como is_final aparecen en orden contiguo.

Seleccionar alternativas

Cada resultado de una respuesta de reconocimiento síncrono correcta puede contener uno o varios alternatives (si max_alternatives es mayor que 1). Si Cloud STT determina que una alternativa tiene un valor de confianza suficiente, la incluye en la respuesta. La primera alternativa de la respuesta siempre es la mejor (la más probable).

Si asignas a max_alternatives un valor superior a 1, no se implica ni se garantiza que se devuelvan varias alternativas. En general, es más adecuado ofrecer más de una alternativa para proporcionar opciones en tiempo real a los usuarios que obtienen resultados a través de una solicitud de reconocimiento de streaming.

Administración de transcripciones

Cada alternativa de la respuesta contiene un elemento transcript con el texto reconocido. Cuando recibas alternativas secuenciales, concatena estas transcripciones.

Valores de confianza

El valor de confidence es una estimación entre 0,0 y 1,0. Se calcula agregando los valores de "probabilidad" asignados a cada palabra del audio. Un número más alto indica una mayor probabilidad estimada de que las palabras se reconozcan correctamente. Este campo solo se suele proporcionar en la hipótesis principal y solo en los resultados en los que is_final=true. Por ejemplo, puedes usar el valor confidence para decidir si quieres mostrar resultados alternativos o pedir confirmación.

Sin embargo, ten en cuenta que el modelo determina el resultado "mejor" o mejor clasificado en función de más señales que solo la puntuación confidence (como el contexto de la frase). Por este motivo, en ocasiones, el resultado principal no tiene la puntuación de confianza más alta. Si no has solicitado varios resultados alternativos, el resultado único "mejor" puede tener un valor de confianza inferior al previsto. Esto puede ocurrir, por ejemplo, cuando se usan palabras poco frecuentes. Aunque el sistema reconozca correctamente una palabra que se usa poco, se le puede asignar un valor de "probabilidad" bajo. Si el modelo determina que la palabra poco común es la opción más probable en función del contexto, devuelve ese resultado en la parte superior aunque el valor de confidence del resultado sea inferior al de otras opciones.

Siguientes pasos