Procesamiento de audio con Gemma

El audio y el lenguaje hablado son fuentes de datos enriquecedoras para capturar las intenciones de los usuarios, registrar información sobre el mundo que nos rodea y comprender los problemas específicos que se deben resolver. A partir de Gemma 3n, puedes usar datos de audio en tus tareas de generación y de instrucciones con Gemma. Puedes usarlo para diversas tareas de análisis e interpretación de audio, y el modelo se entrenó para controlar las siguientes tareas de procesamiento de voz con más de 100 idiomas hablados:

  • Voz a texto (STT): También conocido como reconocimiento de voz automático (ASR), toma datos de audio de lenguaje hablado y los transcribe a texto en el mismo idioma. Más información
  • Traducción automática de voz (AST): También conocida como traducción de voz a texto traducción (S2TT), toma datos de audio hablado en un idioma y los traduce a texto en otro idioma. Más información

Puedes usar estas funciones en una variedad de aplicaciones, como las siguientes:

  • Crear interfaces de aplicaciones controladas por voz
  • Crear servicios de transcripción para reuniones o conferencias
  • Habilitar la funcionalidad de búsqueda por voz en entornos multilingües

En esta guía, se proporciona una descripción general de las capacidades de procesamiento de audio de Gemma 3n, incluidas las consideraciones de datos, los ejemplos de uso y las prácticas recomendadas.

Datos de audio

Los datos de audio digital pueden presentarse en muchos formatos y niveles de resolución. Los formatos de audio reales que puedes usar con Gemma, como los formatos MP3 y WAV, están determinados por el framework que elijas para convertir los datos de sonido en tensores. Estas son algunas consideraciones específicas para preparar datos de audio para el procesamiento con Gemma:

  • Costo de tokens: Cada segundo de audio es de 6.25 tokens.
  • Canales de audio: Los datos de audio se procesan como un solo canal de audio. Si usas audio multicanal, como canales izquierdo y derecho, considera reducir los datos a un solo canal quitando canales o combinando los datos de sonido en un solo canal.
  • Longitud del clip: Se recomiendan clips de audio de hasta 30 segundos, pero puedes procesar longitudes más largas, hasta el tamaño de la ventana de contexto del modelo, restando los tokens de salida que solicitas.
  • Tasa de muestreo: La tasa de procesamiento de audio para el tokenizador es de 16 kHz con fotogramas de 32 milisegundos.
  • Profundidad de bits: El tokenizador de audio usa datos de 32 bits de coma flotante para cada fotograma en el rango [-1, 1] para cada muestra de audio.

Si los datos de audio que planeas procesar son significativamente diferentes del procesamiento de entrada, en particular en términos de canales, tasa de muestreo y profundidad de bits, considera volver a muestrear o recortar tus datos de audio para que coincidan con la resolución de datos que controla el modelo.

Codificación de audio

Cuando codifiques datos de audio con tu propia implementación de código para usar con Gemma 3n, debes seguir el proceso de conversión recomendado. Si trabajas con archivos de audio codificados en un formato específico, como datos codificados en MP3 o WAV, primero debes decodificarlos en muestras con una biblioteca como ffmpeg. Una vez que se decodifiquen los datos, convierte el audio en formas de onda de 16 kHz de un solo canal y float32 en el rango [-1, 1]. Por ejemplo, si trabajas con archivos WAV PCM de 16 bits con signo estéreo a 44.1 kHz, sigue estos pasos:

  • Vuelve a muestrear los datos de audio a 16 kHz.
  • Realiza una mezcla inferior de estéreo a mono promediando los 2 canales.
  • Convierte de int16 a float32 y divide por 32768.0 para ajustar la escala al rango [-1, 1].

Voz a texto

Gemma 3n está entrenado para el reconocimiento de voz multilingüe, lo que te permite transcribir la entrada de audio en varios idiomas a texto. En los siguientes ejemplos de código, se muestra cómo solicitarle al modelo que transcriba texto de archivos de audio con Hugging Face Transformers:

import torch
from transformers import AutoProcessor, AutoModelForImageTextToText

GEMMA_MODEL_ID = "google/gemma-3n-E4B-it"

processor = AutoProcessor.from_pretrained(GEMMA_MODEL_ID, device_map="auto")
model = AutoModelForImageTextToText.from_pretrained(
            GEMMA_MODEL_ID, torch_dtype="auto", device_map="auto")

messages = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": "http://localhost/recording_01.wav"},
            {"type": "audio", "audio": "http://localhost/recording_02.wav"},
            {"type": "audio", "audio": "http://localhost/recording_03.wav"},
            {"type": "text", "text": "Transcribe these audio files in order"},
        ]
    }
]

input_ids = processor.apply_chat_template(
        messages,
        add_generation_prompt=True,
        tokenize=True, return_dict=True,
        return_tensors="pt",
)
input_ids = input_ids.to(model.device, dtype=model.dtype)

outputs = model.generate(**input_ids, max_new_tokens=64)

text = processor.batch_decode(
    outputs,
    skip_special_tokens=False,
    clean_up_tokenization_spaces=False
)
print(text[0])

Para obtener un ejemplo de código más completo, incluida la instalación de la biblioteca, consulta la documentación Ejecuta Gemma con Hugging Face Transformers, sección de audio.

Traducción automática de voz

Gemma 3n está entrenado para tareas de traducción de voz multilingüe, lo que te permite traducir audio hablado directamente a otro idioma. En los siguientes ejemplos de código, se muestra cómo solicitarle al modelo que traduzca audio hablado a texto con Hugging Face Transformers:

import torch
from transformers import AutoProcessor, AutoModelForImageTextToText

GEMMA_MODEL_ID = "google/gemma-3n-E4B-it"

processor = AutoProcessor.from_pretrained(GEMMA_MODEL_ID, device_map="auto")
model = AutoModelForImageTextToText.from_pretrained(
            GEMMA_MODEL_ID, torch_dtype="auto", device_map="auto")

messages = [
    {
        "role": "user",
        "content": [
            {"type": "audio", "audio": "https://ai.google.dev/gemma/docs/audio/roses-are.wav"},
            {"type": "text", "text": "Transcribe this audio into English, and then translate it into French."},
        ]
    }
]

input_ids = processor.apply_chat_template(
        messages,
        add_generation_prompt=True,
        tokenize=True, return_dict=True,
        return_tensors="pt",
)
input_ids = input_ids.to(model.device, dtype=model.dtype)

outputs = model.generate(**input_ids, max_new_tokens=64)

text = processor.batch_decode(
    outputs,
    skip_special_tokens=False,
    clean_up_tokenization_spaces=False
)
print(text[0])

Para obtener un ejemplo de código más completo, incluida la instalación de la biblioteca, consulta la documentación Ejecuta Gemma con Hugging Face Transformers, sección de audio.