Cloud Speech-to-Text es una API que te permite integrar las tecnologías de reconocimiento de voz de Google en tus aplicaciones para desarrolladores. En este documento, se abordan los conceptos básicos para usar Cloud Speech-to-Text, incluidos los tipos de solicitudes que puedes realizar a Cloud STT, cómo construir esas solicitudes y cómo manejar sus respuestas. Antes de comenzar a usar la API, lee esta guía y uno de los instructivos asociados.
Solicitudes de reconocimiento de Cloud Speech-to-Text
Cloud Speech-to-Text (STT) tiene tres métodos principales para realizar el reconocimiento de voz. Los siguientes métodos están disponibles:
El reconocimiento síncrono (REST y gRPC) envía datos de audio a la API de Cloud Speech-to-Text, realiza el reconocimiento de esos datos y devuelve los resultados luego de procesar todo el audio. Las solicitudes de reconocimiento síncrono procesan datos de audio de 1 minuto o menos.
El reconocimiento asíncrono (REST y gRPC) envía los datos de audio a la API de Cloud Speech-to-Text y también inicia una operación de larga duración. Esta operación te permite sondear de forma periódica los resultados del reconocimiento. Usa las solicitudes asíncronas para los datos de audio con cualquier duración de hasta 480 minutos.
El reconocimiento de transmisión (solo gRPC) realiza el reconocimiento de los datos de audio proporcionados dentro de una transmisión bidireccional de gRPC. Las solicitudes de transmisión están diseñadas para el reconocimiento en tiempo real, como la captura de audio en vivo de un micrófono. El reconocimiento de transmisión brinda resultados provisorios a medida que se captura el audio. Por ejemplo, los resultados pueden aparecer 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 Cloud Speech-to-Text puede deducir los metadatos de audio de forma automática. Cloud STT analiza el encabezado del archivo y lo decodifica según esa información. Consulta la página codificación para conocer los tipos de archivo compatibles.
En el caso de los archivos de audio sin encabezado, la API de 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 puedes elegir la codificación del material de referencia, 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 esta frecuencia. Por ejemplo, la mayoría del audio de telefonía heredado usa tasas de muestreo de 8,000 Hz, lo que puede dar resultados menos exactos. Si debes usar ese audio, proporciónalo a la API de Cloud Speech-to-Text en su tasa de muestreo original.
Idiomas
El motor de reconocimiento de Cloud STT 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 admitidos, encontrarás una lista completa de los idiomas compatibles para cada función.
Funciones de reconocimiento
La API de Cloud Speech-to-Text tiene funciones de reconocimiento adicionales, como la puntuación automática y la confianza a nivel de la palabra. Habilita estas funciones en la configuración de reconocimiento en las solicitudes. Consulta el código de muestra en los vínculos proporcionados y la página de idiomas para conocer la disponibilidad de las funciones.
Selección del modelo
Cloud STT puede usar uno de varios modelos de aprendizaje automático para transcribir archivos de audio. En Google, se entrenaron 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
Para incluir audio incorporado en la solicitud de reconocimiento de voz, debes transferir un
parámetro content en el campo audio_source de la solicitud. En el caso del audio
incorporado que brindes como contenido dentro de una solicitud de gRPC, el audio debe ser
compatible con la serialización
Proto3
y se debe brindar como datos binarios. Para el audio incorporado que brindas
como contenido dentro de una solicitud de REST, el audio debe ser compatible con la serialización
JSON y, en principio, se debe codificar en Base64. Para obtener más información, consulta Codifica tu audio en Base64.
Cuando construyes una solicitud con una biblioteca
cliente de Google Cloud, por lo general,
escribes estos datos binarios (o codificados en Base64) directamente en el campo
content.
Transfiere audio referenciado por un URI
Con más frecuencia, transfieres un parámetro uri dentro del campo audio_source de la solicitud a la
API de Cloud Speech-to-Text y lo apuntas hacia 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][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.serviceAgentPara obtener más información sobre la política de IAM del proyecto, consulta [Administra el acceso a proyectos, carpetas y organizaciones][manage-access].
También puedes otorgar acceso a una cuenta de servicio más detallada dándole permiso a un bucket de Cloud Storage específico:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
--role=roles/storage.adminPara obtener más información sobre la administración del acceso a Cloud Storage, consulta [Crea y administra listas de control de acceso][buckets-manage-acl] en la documentación de Cloud Storage.
Respuestas de la API de Cloud Speech-to-Text
Después de que la API de Cloud Speech-to-Text procesa el audio, devuelve los resultados de la transcripción en
mensajes SpeechRecognitionResult para
las solicitudes por lotes y síncronas, y en mensajes StreamingRecognitionResult para las solicitudes de transmisión. En
las solicitudes por lotes y síncronas, 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.
Elige 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 Cloud STT
determina que una alternativa tiene un valor de
confianza suficiente, Cloud STT incluye esa
alternativa en la respuesta. La primera alternativa en la respuesta siempre es la
mejor (la que tiene más probabilidades).
La configuración de max_alternatives como un valor mayor que 1 no implica ni
garantiza que se devolverán varias alternativas. En general, más de una
alternativa es lo más apropiado para brindar 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 en la respuesta contiene un transcript con el texto
reconocido. Cuando recibas alternativas secuenciales, concatena estas
transcripciones.
Valores de confianza
El valor confidence es una estimación entre 0.0 y 1.0. Para calcularlo,
se agregan 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 se
reconozcan de forma correcta. Por lo general, este campo solo se brinda a las principales
hipótesis y para los resultados en los sucede lo siguiente: is_final=true. Por ejemplo, puedes usar el valor
confidence para decidir si deseas mostrar resultados alternativos o pedir
tu confirmación.
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).
Por este motivo, en ocasiones, el resultado principal no tiene la
puntuación de confianza más alta. Si no solicitaste varios resultados alternativos,
el único "mejor" resultado que se muestre puede tener un valor de confianza menor al previsto.
Por ejemplo, esto puede ocurrir cuando se usan palabras poco comunes. Incluso si el sistema
reconoce de forma correcta una palabra que se usa con poca frecuencia, se le puede asignar un valor de "probabilidad"
bajo. Si el modelo determina que la palabra poco usada es la opción más probable según
el contexto, devuelve ese resultado en la parte superior, aunque el valor confidence
del resultado sea menor que las otras opciones.
¿Qué sigue?
- Usa las bibliotecas cliente para transcribir audio con el lenguaje de programación que prefieras.
- Obtén más información para transcribir archivos de audio cortos.
- Obtén más información para transcribir audio de transmisión.
- Obtén información para transcribir archivos de audio largos.