Speech-to-Text es una de las tres APIs preentrenadas de Vertex AI en Google Distributed Cloud (GDC) air-gapped. El servicio de Speech-to-Text reconoce la voz en los archivos de audio y transcribe el audio a texto. Speech-to-Text cumple con los requisitos de residencia y cumplimiento de datos.
En la siguiente tabla, se describen las funciones clave de Speech-to-Text:
| Funciones clave | |
|---|---|
| Transcripción | Aplica algoritmos avanzados de la red neuronal de aprendizaje profundo para el reconocimiento de voz automático. |
| Modelos | Implementa modelos de reconocimiento de menos de 1 GB de tamaño que consumen recursos mínimos. |
| Compatible con la API | Usa la API de Speech-to-Text y sus bibliotecas cliente para enviar audio y recibir una transcripción de texto del servicio de Speech-to-Text. |
Codificaciones de audio compatibles con Speech-to-Text
La API de Speech-to-Text admite varias codificaciones diferentes. En la siguiente tabla, se enumeran los códecs de audio compatibles:
| Códec | Nombre | Sin pérdida | Notas de uso |
|---|---|---|---|
FLAC |
Códec de audio sin pérdida gratuito | Sí | Se requieren 16 bits o 24 bits para transmisión continua. |
LINEAR16 |
PCM lineal | Sí | Codificación de modulación lineal por impulsos codificados (PCM) de 16 bits. El encabezado debe contener la tasa de muestreo. |
MULAW |
Ley μ | No | Codificación PCM de 8 bits |
OGG_OPUS |
Tramas de audio con codificación Opus en un contenedor Ogg | No | La tasa de muestreo debe ser una de las siguientes: 8,000 Hz, 12,000 Hz, 16,000 Hz, 24,000 Hz, o 48,000 Hz. |
FLAC es tanto un códec de audio como un formato de archivo de audio. Para transcribir archivos de audio
con codificación FLAC, debes proporcionarlos en el formato de archivo .FLAC,
que incluye un encabezado que contiene metadatos.
Speech-to-Text admite archivos WAV con audio codificado en LINEAR16 o MULAW.
Para obtener más información sobre los códecs de audio de Speech-to-Text, consulta la
AudioEncoding
documentación de referencia.
Si puedes elegir la codificación del material fuente, usa una codificación sin pérdida, como FLAC o LINEAR16 para un mejor reconocimiento de voz.
Funciones de Speech-to-Text
Speech-to-Text en Distributed Cloud tiene los siguientes tres métodos para realizar el reconocimiento de voz:
Reconocimiento síncrono: Envía datos de audio a la API de Speech-to-Text, realiza el reconocimiento de esos datos y muestra los resultados después del procesamiento de audio. Las solicitudes de reconocimiento síncrono están limitadas a un minuto o menos de datos de audio.
Reconocimiento asíncrono: 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 consultar 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.
Reconocimiento de transmisión: Realiza el reconocimiento de los datos de audio proporcionados dentro de una transmisión bidireccional. Las solicitudes de transmisión están diseñadas con fines de reconocimiento en tiempo real, como la captura de audio en vivo de un micrófono. El reconocimiento de transmisión 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 y datos de audio. En las siguientes secciones, se describen estas solicitudes de reconocimiento, las respuestas que generan y cómo manejar esas respuestas con más detalle.
Solicitudes y respuestas síncronas
Una solicitud de reconocimiento síncrona de Speech-to-Text es el método más simple para hacer el reconocimiento en datos de audio de voz. Con Speech-to-Text, se puede procesar hasta un minuto de datos de audio de voz enviados en una solicitud síncrona. En Speech-to-Text, una vez que se procesa y reconoce todo el audio, se muestra una respuesta.
Speech-to-Text debe mostrar una respuesta antes de procesar la siguiente solicitud. En Speech-to-Text, normalmente se procesa el audio más rápido que en tiempo real; en promedio, se procesan 30 segundos de audio en 15 segundos. Si el audio es de mala calidad, la solicitud de reconocimiento puede tardar mucho más tiempo.
Solicitudes de reconocimiento de voz
Una solicitud síncrona de la API de Speech-to-Text consta de una configuración de reconocimiento de voz y datos de audio. En el siguiente ejemplo, se muestra una solicitud:
{
"config": {
"encoding": "LINEAR16",
"sample_rate_hertz": 16000,
"language_code": "en-US",
},
"audio": {
"content": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyjv..."
}
}
Todas las solicitudes de reconocimiento síncrono de Speech-to-Text deben incluir un campo config de reconocimiento de voz del tipo RecognitionConfig. Un objeto RecognitionConfig contiene los siguientes subcampos obligatorios:
encoding: Especifica el esquema de codificación del audio suministrado. Este campo es del tipoAudioEncoding. Si puedes seleccionar el códec, opta por una codificación sin pérdida comoFLACoLINEAR16para un mejor rendimiento. Para obtener una lista de los formatos de codificación de audio compatibles, consulta Codificaciones de audio compatibles con Speech-to-Text. El campoencodinges opcional para los archivosFLACyWAV, que incluyen la codificación en el encabezado del archivo.sample_rate_hertz: Especifica la tasa de muestreo del audio suministrado en hercios. Para obtener más información sobre las tasas de muestreo, consulta Tasas de muestreo. El camposample_rate_hertzes opcional para los archivosFLACyWAV, que incluyen la tasa de muestreo en el encabezado del archivo.language_code: Contiene el idioma y la región que se usarán para el reconocimiento de voz del audio suministrado. El código de idioma debe ser un BCP-47. Los códigos de idioma constan de etiquetas del idioma principal y subetiquetas de la región secundaria que indican los dialectos. En el ejemplo,enes para inglés yUSpara Estados Unidos. Para obtener una lista de los idiomas admitidos, consulta Idiomas admitidos.
Para obtener más información y una descripción de los subcampos opcionales que puedes incluir en
el config campo, consulta RecognitionConfig.
Proporciona audio a Speech-to-Text a través del audio parámetro de tipo
RecognitionAudio.
El campo audio contiene el siguiente subcampo:
content: Contiene el audio que se va a evaluar, incorporado en la solicitud. Los bytes de datos de audio se codifican con una representación binaria pura. Las representaciones JSON usan Base64. Consulta Contenido de audio incorporado para obtener más información. El audio transferido directamente en este campo tiene un límite de un minuto de duración.
Tasas de muestreo
Especifica la tasa de muestreo de tu audio en el campo sample_rate_hertz de la configuración de la solicitud, que debe coincidir con la tasa de muestreo del contenido de audio asociado. Speech-to-Text admite tasas de muestreo entre 8,000 Hz y 48,000 Hz. Puedes especificar la tasa de muestreo para un archivo FLAC o WAV en el encabezado del archivo, en lugar de usar el campo sample_rate_hertz. Sin embargo, el campo sample_rate_hertz es obligatorio para todos los demás formatos de audio.
Si puedes elegir 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 grabaste tus datos de audio con una tasa de muestreo 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, proporciónaselo a la API de Speech-to-Text a su tasa de muestreo original.
Idiomas
El motor de reconocimiento de Speech-to-Text admite una variedad de idiomas y dialectos. Especifica el idioma de tu audio (y el dialecto nacional o regional)
en el campo language_code de la configuración de la solicitud con un
BCP-47.
En la página Idiomas admitidos, encontrarás una lista completa de los idiomas compatibles para cada función.
Selección del modelo
Cuando envías una solicitud de transcripción de audio a Speech-to-Text, puedes procesar tus archivos de audio con un modelo de aprendizaje automático entrenado para reconocer audios de voz de ese tipo particular de fuente.
Para especificar un modelo destinado al reconocimiento de voz, incluye el model campo
en el RecognitionConfig
objeto de tu solicitud, con la especificación del modelo que deseas usar.
Speech-to-Text en Distributed Cloud admite el siguiente modelo:
default: Transcribe audio que no es un modelo de audio específico, como audio de formato largo.
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 de la solicitud. Para el audio incorporado que se proporciona como contenido dentro de una solicitud de REST, este debe ser compatible con la serialización JSON.
Puedes enviar datos de audio directamente en el campo content para su reconocimiento síncrono solo si tienen una duración máxima de 60 segundos y un tamaño de 10 MB. Todos los datos de audio en el campo content deben estar en formato Base64.
Cuando construyes una solicitud con una biblioteca cliente,
escribes estos datos binarios o codificados en Base64 directamente en el campo content.
La mayoría de los entornos de desarrollo incluyen una utilidad base64 para codificar un objeto binario en datos de texto ASCII, lo que te proporciona las herramientas y la asistencia necesarias.
Además, Python tiene mecanismos integrados para el contenido de codificación en Base64. En los siguientes ejemplos, se muestra cómo codificar un archivo:
Linux
Codifica el archivo con la herramienta de línea de comandos de base64. Para evitar el ajuste de línea, usa la marca -w 0:
base64 INPUT_FILE -w 0 > OUTPUT_FILE
Python
En Python, puedes codificar archivos de audio codificados en Base64 de la siguiente manera:
# Import the base64 encoding library.
import base64
# Pass the audio data to an encoding function.
def encode_audio(audio):
audio_content = audio.read()
return base64.b64encode(audio_content)
Respuestas de reconocimiento de voz
Una respuesta síncrona de la API de Speech-to-Text puede tardar un tiempo en mostrar los resultados. Una vez procesada, la API muestra una respuesta como en el siguiente ejemplo:
{
"results": [
{
"alternatives": [
{
"transcript": "how old is the Brooklyn Bridge",
"words": [
{
"word": "how"
},
{
"word": "old"
},
{
"word": "is"
},
{
"word": "the"
},
{
"word": "Brooklyn"
},
{
"word": "Bridge"
}
]
}
]
}
]
}
Todas las respuestas de reconocimiento síncrono de la API de Speech-to-Text incluyen resultados de reconocimiento de voz del tipo RecognizeResponse. Un objeto RecognizeResponse contiene los siguientes campos:
results: Contiene la lista de resultados del tipoSpeechRecognitionResult, en la que cada resultado corresponde a un segmento de audio. Cada resultado consta de uno o más de los siguientes subcampos:alternatives: Contiene una lista de transcripciones posibles del tipoSpeechRecognitionAlternative. La primera alternativa en la respuesta siempre es la que tiene más probabilidades. Cada alternativa consta de los siguientes subcampos:transcript: Contiene el texto transcrito. Cuando se proporcionen alternativas secuenciales, puedes concatenar estas transcripciones.words: Contiene una lista de información específica de palabras para cada palabra reconocida.
Para obtener más información, consulta RecognizeResponse.
Solicitudes y respuestas asíncronas
Una solicitud asíncrona de la API de Speech-to-Text es idéntica a una solicitud síncrona. Sin embargo, en lugar de mostrar una respuesta, la solicitud asíncrona inicia una operación de larga duración y la muestra de inmediato. Puedes usar el reconocimiento de voz asíncrono con audio de cualquier duración con un máximo de 480 minutos.
A continuación, se muestra un ejemplo de una respuesta de operación:
{
"name": "OPERATION_NAME",
"metadata": {
"@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeMetadata"
"progressPercent": 34,
"startTime": "2016-08-30T23:26:29.579144Z",
"lastUpdateTime": "2016-08-30T23:26:29.826903Z"
}
}
Ten en cuenta que aún no hay resultados. Speech-to-Text continúa procesando el audio y usa esta operación para almacenar los resultados. Los resultados aparecen en el campo response de la operación que se devuelve cuando se completa la solicitud LongRunningRecognize.
A continuación, se muestra un ejemplo de una respuesta completa una vez que finaliza la solicitud:
{
"name": "1268386125834704889",
"metadata": {
"lastUpdateTime": "2016-08-31T00:16:32.169Z",
"@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeMetadata",
"startTime": "2016-08-31T00:16:29.539820Z",
"progressPercent": 100
}
"response": {
"@type": "type.googleapis.com/google.cloud.speech_v1p1beta1.LongRunningRecognizeResponse",
"results": [{
"alternatives": [{
"transcript": "how old is the Brooklyn Bridge",
"words": [
{
"word": "how"
},
{
"word": "old"
},
{
"word": "is"
},
{
"word": "the"
},
{
"word": "Brooklyn"
},
{
"word": "Bridge"
}
]
}]}]
},
"done": True
}
Ten en cuenta que done se configuró como True y que el elemento response de la operación contiene un
conjunto de resultados del tipo
SpeechRecognitionResult,
que es el mismo tipo que muestra una solicitud de reconocimiento síncrona.
Solicitudes y respuestas de transmisión
Una llamada de reconocimiento a la API de Speech-to-Text de transmisión está diseñada para la captura y el reconocimiento de audio en tiempo real, dentro de una transmisión bidireccional. Tu aplicación puede enviar audios en la transmisión de la solicitud y recibir resultados de reconocimiento provisionales y finales en tiempo real en la transmisión de la respuesta. Los resultados intermedios representan el resultado del reconocimiento actual correspondiente a una sección de audio, mientras que el resultado del reconocimiento final representa la última y mejor interpretación de esa sección de audio.
Solicitudes de reconocimiento de transmisión
A diferencia de las llamadas síncronas y asíncronas, en las que envías la configuración y el audio en una misma solicitud, la llamada a la API de Speech-to-Text de transmisión requiere el envío de varias solicitudes. La primera
StreamingRecognizeRequest
debe contener una configuración del tipo
StreamingRecognitionConfig.
Un elemento StreamingRecognitionConfig consta del campo config, que contiene
información de configuración para el audio del tipo
RecognitionConfig
y es igual al que se muestra en las solicitudes síncronas y asíncronas.
Respuestas de reconocimiento de transmisión
Los resultados del reconocimiento de voz de transmisión muestran una serie de respuestas del tipo
StreamingRecognizeResponse.
Esta respuesta consta de los campos que se indican a continuación:
speech_event_type: Contiene eventos del tipoSpeechEventType. El valor de estos eventos indica el momento en el que se haya determinado que se completó un enunciado. Los eventos de voz funcionan como marcadores en la respuesta de la transmisión.results: Contiene la lista de resultados, que pueden ser resultados provisorios o finales del tipoStreamingRecognitionResult. La listaresultsincluye los siguientes subcampos:alternatives: Contiene una lista de transcripciones alternativas.is_final: Indica si los resultados obtenidos en esta entrada de lista son provisorios o finales.result_end_time: Indica la compensación de tiempo del final de este resultado en relación con el comienzo del audio.