Este documento es una guía sobre los aspectos básicos del uso de Speech-to-Text. En esta guía conceptual se describen los tipos de solicitudes que puedes enviar a Speech-to-Text, cómo crearlas y cómo gestionar sus respuestas. Recomendamos que todos los usuarios de Speech-to-Text lean esta guía y uno de los tutoriales asociados antes de empezar a usar la API.
Solicitudes de reconocimiento de Speech-to-Text
Speech-to-Text cuenta con tres métodos principales para realizar el reconocimiento de voz. Son los siguientes:
Reconocimiento síncrono: (REST y gRPC) envía datos de audio a la API 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 se limitan a datos de audio de 1 minuto o menos.
Reconocimiento asíncrono (REST y gRPC) envía datos de audio a la API Speech-to-Text e inicia una operación de larga duración. Con esta operación, puedes sondear periódicamente los resultados del reconocimiento. Usa solicitudes asíncronas para datos de audio de cualquier duración de hasta 480 minutos.
StreamingRecognition (solo gRPC) reconoce los datos de audio proporcionados en un flujo 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 de streaming proporciona resultados provisionales mientras se captura el audio, lo que permite que aparezcan resultados, por ejemplo, mientras el usuario sigue hablando.
Las solicitudes contienen parámetros de configuración y datos de audio. Las solicitudes de reconocimiento pueden incluir de forma opcional un reconocedor, que es una configuración de reconocimiento almacenada y reutilizable.
Metadatos de audio
En la mayoría de los archivos de audio, la API 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 sobre codificación para ver qué tipos de archivos se admiten.
En el caso de los archivos de audio sin encabezado, la API Speech-to-Text 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 cuando codifiques el material de origen, captura el audio con una frecuencia de muestreo de 16.000 Hz. Los valores inferiores a este pueden alterar la precisión del reconocimiento de voz y con los valores superiores no se aprecia una mejora en la calidad del reconocimiento de voz.
Sin embargo, si ya se han grabado los datos de audio con una frecuencia distinta, no vuelvas a realizar el muestreo del audio a 16.000 Hz. La mayoría de los audios telefónicos antiguos, por ejemplo, utilizan frecuencias de muestreo de 8000 Hz, de modo que los resultados pueden ser menos precisos. Si tienes que usar ese audio, proporciónalo a la API Speech-to-Text con su frecuencia de muestreo nativa.
Idiomas
El motor de reconocimiento de Speech-to-Text 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 disponibles para cada función en la página Idiomas disponibles.
Funciones de reconocimiento
La API Speech-to-Text tiene funciones de reconocimiento adicionales, como la puntuación automática y la confianza a nivel de palabra. Se habilitan en la configuración de reconocimiento de las solicitudes. Consulta el código de ejemplo proporcionado en los enlaces anteriores y la página de idiomas para ver la disponibilidad de estas funciones.
Selección de modelos
La API Speech-to-Text 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
El audio insertado se incluye en la solicitud de reconocimiento de voz cuando se pasa un parámetro content
en el campo audio_source
de la solicitud. En el caso del audio insertado que se proporciona como contenido en una solicitud gRPC, ese audio debe ser compatible con la serialización Proto3 y proporcionarse como datos binarios. En cambio, para audio insertado proporcionado como contenido en una solicitud REST, el audio debe ser compatible con la serialización JSON y debe codificarse primero en Base64. Consulte Codificación Base64 de audio para obtener más información.
Cuando crees una solicitud con una biblioteca de cliente de Google Cloud, normalmente escribirás estos datos binarios (o codificados en base64) directamente en el campo content
.
Transferir audio referenciado por 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 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 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 las políticas de gestión de identidades y accesos de proyectos, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
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 de la documentación de Cloud Storage.
Respuestas de la API Speech-to-Text
Una vez que se ha procesado el audio, la API Speech-to-Text devuelve los resultados de la transcripción en mensajes SpeechRecognitionResult
para solicitudes síncronas y por lotes, y en mensajes StreamingRecognitionResult
para 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 Speech-to-Text determina que una alternativa tiene un valor de confianza suficiente, se incluye en la respuesta. La primer alternativa mostrada en la respuesta es siempre la mejor, es decir, la más probable.
Si se asigna 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 proporcionada en la respuesta contendrá un elemento transcript
que incluirá el texto reconocido. Cuando se proporcionen alternativas secuenciales, deberías concatenar 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 individuales se hayan reconocido correctamente. Este campo normalmente solo se proporciona para la hipótesis principal y solo para los resultados en los que is_final=true
. Por ejemplo, puedes usar el valor confidence
para decidir si quieres mostrar resultados alternativos al usuario o pedirle que confirme.
Sin embargo, ten en cuenta que el modelo determina el resultado mejor clasificado en función de más señales que 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, es posible que el resultado "óptimo" que se devuelva tenga un valor de confianza inferior al esperado. Esto puede ocurrir, por ejemplo, en los casos en los que se usan palabras poco frecuentes. A una palabra que se usa poco se le puede asignar un valor de "probabilidad" bajo, aunque se reconozca correctamente. Si el modelo determina que la palabra poco común es la opción más probable en función del contexto, ese resultado se devuelve en la parte superior, aunque el valor confidence
del resultado sea inferior al de otras opciones.
Siguientes pasos
- Usa bibliotecas de cliente para transcribir audio con tu lenguaje de programación favorito.
- Practica transcribiendo archivos de audio cortos.
- Consulta cómo transcribir audio de streaming.
- Consulta cómo transcribir archivos de audio largos.