Traitement audio avec Gemma

L'audio et la langue parlée sont de riches sources de données pour capturer les intentions des utilisateurs, enregistrer des informations sur le monde qui nous entoure et comprendre les problèmes spécifiques à résoudre. À partir de Gemma 3n, vous pouvez utiliser des données audio dans vos tâches d'invites et de génération avec Gemma. Vous pouvez l'utiliser pour diverses tâches d'analyse et d'interprétation audio. Le modèle a été entraîné pour gérer les tâches de traitement de la parole suivantes dans plus de 100 langues parlées :

  • Speech-to-Text (STT) : également appelée reconnaissance vocale automatique (ASR), cette technologie prend des données audio de langage parlé et les transcrit en texte dans la même langue. En savoir plus
  • Traduction vocale automatique (AST, Automated Speech Translation) : également appelée traduction de la parole en texte (S2TT, Speech-to-Text Translation), elle prend des données audio parlées dans une langue et les traduit en texte dans une autre langue. En savoir plus

Vous pouvez utiliser ces fonctionnalités dans diverses applications, par exemple :

  • Créer des interfaces d'application à commande vocale
  • Créer des services de transcription pour des réunions ou des conférences
  • Activer la fonctionnalité de recherche vocale dans des environnements multilingues

Ce guide présente les capacités de traitement audio de Gemma 3n, y compris les considérations relatives aux données, des exemples d'utilisation et les bonnes pratiques.

Données audio

Les données audio numériques peuvent se présenter sous de nombreux formats et niveaux de résolution. Les formats audio que vous pouvez utiliser avec Gemma, tels que les formats MP3 et WAV, sont déterminés par le framework que vous choisissez pour convertir les données audio en Tensors. Voici quelques points spécifiques à prendre en compte pour préparer les données audio à traiter avec Gemma :

  • Coût en jetons : chaque seconde d'audio correspond à 6,25 jetons.
  • Canaux audio : les données audio sont traitées comme un seul canal audio. Si vous utilisez de l'audio multicanal, comme les canaux gauche et droit, envisagez de réduire les données à un seul canal en supprimant des canaux ou en combinant les données audio en un seul canal.
  • Durée de l'extrait : nous vous recommandons d'utiliser des extraits audio de 30 secondes maximum, mais vous pouvez traiter des extraits plus longs, jusqu'à la taille de la fenêtre de contexte du modèle, en soustrayant les jetons de sortie que vous demandez.
  • Taux d'échantillonnage : le taux de traitement audio pour le tokenizer est de 16 kHz avec des frames de 32 millisecondes.
  • Profondeur de bits : le tokenizer audio utilise des données float 32 bits pour chaque frame dans la plage [-1, 1] pour chaque échantillon audio.

Si les données audio que vous prévoyez de traiter sont très différentes du traitement des entrées, en particulier en termes de canaux, de taux d'échantillonnage et de profondeur de bits, envisagez de rééchantillonner ou de couper vos données audio pour qu'elles correspondent à la résolution des données gérée par le modèle.

Encodage audio

Lorsque vous encodez des données audio avec votre propre implémentation de code pour les utiliser avec Gemma 3n, vous devez suivre le processus de conversion recommandé. Si vous travaillez avec des fichiers audio encodés dans un format spécifique, comme des données encodées au format MP3 ou WAV, vous devez d'abord les décoder en échantillons à l'aide d'une bibliothèque telle que ffmpeg. Une fois les données décodées, convertissez l'audio en formes d'onde mono-canal float32 de 16 kHz dans la plage [-1, 1]. Par exemple, si vous travaillez avec des fichiers WAV PCM stéréo 16 bits signés à 44,1 kHz, procédez comme suit :

  • Rééchantillonnez les données audio à 16 kHz.
  • Réduire le son de stéréo à mono en faisant la moyenne des deux canaux
  • Convertissez la valeur int16 en float32, puis divisez-la par 32768.0 pour la mettre à l'échelle dans la plage [-1, 1].

Reconnaissance vocale

Gemma 3n est entraîné pour la reconnaissance vocale multilingue, ce qui vous permet de transcrire des entrées audio dans différentes langues en texte. Les exemples de code suivants montrent comment inviter le modèle à transcrire du texte à partir de fichiers audio à l'aide de 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])

Pour obtenir un exemple de code plus complet, y compris l'installation de la bibliothèque, consultez la section audio de la documentation Exécuter Gemma avec Hugging Face Transformers.

Traduction vocale automatique

Gemma 3n est entraîné pour les tâches de traduction vocale multilingues, ce qui vous permet de traduire directement de l'audio parlé dans une autre langue. Les exemples de code suivants montrent comment demander au modèle de traduire du contenu audio parlé en texte à l'aide de 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])

Pour obtenir un exemple de code plus complet, y compris l'installation de la bibliothèque, consultez la section audio de la documentation Exécuter Gemma avec Hugging Face Transformers.