Elaborazione dell'audio con Gemma

L'audio e la lingua parlata sono fonti ricche di dati per acquisire le intenzioni degli utenti, registrare informazioni sul mondo che ci circonda e comprendere problemi specifici da risolvere. A partire da Gemma 3n, puoi utilizzare i dati audio nelle attività di prompt e generazione con Gemma. Puoi utilizzarlo per una serie di attività di analisi e interpretazione audio e il modello è stato addestrato per gestire le seguenti attività di elaborazione vocale in oltre 100 lingue parlate:

  • Speech-to-Text (STT): noto anche come riconoscimento vocale automatico (ASR), prende i dati audio della lingua parlata e li trascrive in un output di testo nella stessa lingua. Scopri di più
  • Traduzione vocale automatica (AST): nota anche come traduzione vocale in testo (S2TT), prende i dati audio parlati in una lingua e li traduce in testo in un'altra lingua. Scopri di più

Puoi utilizzare queste funzionalità in varie applicazioni, ad esempio:

  • Creazione di interfacce di applicazioni controllate con la voce
  • Creazione di servizi di trascrizione per riunioni o lezioni
  • Attivazione della funzionalità di ricerca vocale in ambienti multilingue

Questa guida fornisce una panoramica delle funzionalità di elaborazione audio di Gemma 3n, inclusi considerazioni sui dati, esempi di utilizzo e best practice.

Dati audio

I dati audio digitali possono essere disponibili in molti formati e livelli di risoluzione. I formati audio effettivi che puoi utilizzare con Gemma, ad esempio MP3 e WAV, sono determinati dal framework che scegli per convertire i dati audio in tensori. Ecco alcune considerazioni specifiche per la preparazione dei dati audio per l'elaborazione con Gemma:

  • Costo dei token:ogni secondo di audio corrisponde a 6,25 token.
  • Canali audio:i dati audio vengono elaborati come un unico canale audio. Se utilizzi l'audio multicanale, ad esempio i canali sinistro e destro, valuta la possibilità di ridurre i dati a un singolo canale rimuovendo i canali o combinando i dati audio in un unico canale.
  • Durata del clip: sono consigliati clip audio di massimo 30 secondi, ma puoi elaborare durate più lunghe, fino alle dimensioni della finestra contestuale del modello, sottraendo i token di output che richiedi.
  • Frequenza di campionamento:la frequenza di elaborazione audio per il tokenizer è 16 kHz con frame di 32 millisecondi.
  • Profondità di bit:il tokenizer audio utilizza dati float a 32 bit per ogni frame nell'intervallo [-1, 1] per ogni campione audio.

Se i dati audio che prevedi di elaborare sono significativamente diversi dall'elaborazione dell'input, in particolare in termini di canali, frequenza di campionamento e profondità di bit, valuta la possibilità di ricampionare o tagliare i dati audio in modo che corrispondano alla risoluzione dei dati gestita dal modello.

Codifica audio

Quando codifichi i dati audio con la tua implementazione del codice per l'utilizzo con Gemma 3n, devi seguire la procedura di conversione consigliata. Se lavori con file audio codificati in un formato specifico, ad esempio dati codificati in MP3 o WAV, devi prima decodificarli in campioni utilizzando una libreria come ffmpeg. Una volta decodificati i dati, converti l'audio in forme d'onda mono-canale a 16 kHz float32 nell'intervallo [-1, 1]. Ad esempio, se lavori con file WAV PCM stereo a 16 bit con segno a 44,1 kHz, segui questi passaggi:

  • Ricampiona i dati audio a 16 kHz
  • Riduzione del mixaggio da stereo a mono calcolando la media dei due canali
  • Converti da int16 a float32 e dividi per 32768, 0 per scalare all'intervallo [-1, 1]

Speech-to-Text

Gemma 3n è addestrato per il riconoscimento vocale multilingue, il che ti consente di trascrivere l'input audio in varie lingue in testo. I seguenti esempi di codice mostrano come chiedere al modello di trascrivere il testo dai file audio utilizzando 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])

Per un esempio di codice più completo, inclusa l'installazione della libreria, consulta la documentazione Esegui Gemma con Hugging Face Transformers, sezione audio.

Traduzione vocale automatica

Gemma 3n è addestrato per attività di traduzione vocale multilingue, consentendoti di tradurre l'audio parlato direttamente in un'altra lingua. Gli esempi di codice seguenti mostrano come richiedere al modello di tradurre l'audio parlato in testo utilizzando 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])

Per un esempio di codice più completo, inclusa l'installazione della libreria, consulta la documentazione Esegui Gemma con Hugging Face Transformers, sezione audio.