Przetwarzanie dźwięku za pomocą modelu Gemma

Dźwięk i język mówiony są bogatymi źródłami danych, które pozwalają rejestrować intencje użytkowników, zapisywać informacje o otaczającym nas świecie i rozumieć konkretne problemy, które należy rozwiązać. Począwszy od modelu Gemma 3n, możesz używać danych audio w swoich zadaniach związanych z promptowaniem i generowaniem treści w Gemma. Możesz go używać do różnych zadań związanych z analizą i interpretacją dźwięku. Model został wytrenowany do wykonywania tych zadań przetwarzania mowy w ponad 100 językach:

  • Zamiana mowy na tekst (STT): znana też jako automatyczne rozpoznawanie mowy (ASR). Przetwarza dane audio w postaci języka mówionego i transkrybuje je na tekst w tym samym języku. Więcej informacji
  • Automatyczne tłumaczenie mowy (AST): znane też jako tłumaczenie z zamianą mowy na tekst (S2TT). Polega na przekształcaniu danych audio w jednym języku na tekst w innym języku. Więcej informacji

Możesz korzystać z tych funkcji w różnych aplikacjach, np.:

  • Tworzenie interfejsów aplikacji sterowanych głosem
  • tworzenie usług transkrypcji spotkań lub wykładów;
  • Włączanie funkcji wyszukiwania głosowego w środowiskach wielojęzycznych

Ten przewodnik zawiera omówienie możliwości przetwarzania dźwięku przez model Gemma 3n, w tym kwestie związane z danymi, przykłady zastosowań i sprawdzone metody.

Dane audio

Dane audio w formie cyfrowej mogą mieć wiele formatów i poziomów rozdzielczości. Rzeczywiste formaty audio, których możesz używać z Gemma, takie jak MP3 i WAV, są określane przez platformę, którą wybierzesz do przekształcania danych dźwiękowych w tensory. Oto kilka konkretnych kwestii, które warto wziąć pod uwagę podczas przygotowywania danych audio do przetwarzania za pomocą Gemmy:

  • Koszt tokenów: każda sekunda dźwięku to 6,25 tokena.
  • Kanały audio: dane audio są przetwarzane jako pojedynczy kanał audio. Jeśli używasz dźwięku wielokanałowego, np. kanałów lewego i prawego, rozważ zmniejszenie ilości danych do jednego kanału, usuwając kanały lub łącząc dane dźwiękowe w jeden kanał.
  • Długość klipu: zalecane są klipy audio o długości do 30 sekund, ale możesz przetwarzać dłuższe klipy, aż do rozmiaru okna kontekstu modelu, odejmując żądane tokeny wyjściowe.
  • Częstotliwość próbkowania: częstotliwość przetwarzania dźwięku dla tokenizatora wynosi 16 kHz z 32-milisekundowymi ramkami.
  • Głębia bitowa: tokenizer audio używa 32-bitowych danych zmiennoprzecinkowych dla każdej klatki w zakresie [-1, 1] dla każdej próbki audio.

Jeśli dane audio, które chcesz przetworzyć, znacznie różnią się od danych wejściowych, zwłaszcza pod względem liczby kanałów, częstotliwości próbkowania i głębi bitowej, rozważ ponowne próbkowanie lub przycięcie danych audio, aby dopasować je do rozdzielczości danych obsługiwanej przez model.

Kodowanie dźwięku

Podczas kodowania danych audio za pomocą własnej implementacji kodu do użytku z Gemma 3n należy postępować zgodnie z zalecanym procesem konwersji. Jeśli pracujesz z plikami audio zakodowanymi w określonym formacie, np. MP3 lub WAV, musisz najpierw zdekodować je do próbek za pomocą biblioteki takiej jak ffmpeg. Po zdekodowaniu danych przekonwertuj dźwięk na jednokanałowe przebiegi float32 o częstotliwości 16 kHz w zakresie [-1, 1]. Jeśli na przykład pracujesz ze stereofonicznymi plikami WAV z 16-bitowymi liczbami całkowitymi PCM ze znakiem o częstotliwości próbkowania 44, 1 kHz, wykonaj te czynności:

  • Ponowne próbkowanie danych audio do 16 kHz
  • Downmix z stereo do mono przez uśrednienie 2 kanałów
  • Przekonwertuj wartość z typu int16 na float32 i podziel przez 32768.0, aby przeskalować ją do zakresu [-1, 1].

Zamiana mowy na tekst

Model Gemma 3n jest trenowany pod kątem wielojęzycznego rozpoznawania mowy, co umożliwia transkrypcję danych wejściowych audio w różnych językach na tekst. Przykłady kodu poniżej pokazują, jak poprosić model o transkrypcję tekstu z plików audio za pomocą biblioteki 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])

Bardziej szczegółowy przykład kodu, w tym instalację biblioteki, znajdziesz w sekcji dotyczącej dźwięku w dokumentacji Uruchamianie modelu Gemma za pomocą biblioteki Hugging Face Transformers.

Automatyczne tłumaczenie mowy

Model Gemma 3n jest trenowany pod kątem wielojęzycznego tłumaczenia mowy, co umożliwia bezpośrednie tłumaczenie tekstu mówionego na inny język. Poniższe przykłady kodu pokazują, jak poprosić model o przetłumaczenie tekstu mówionego na tekst za pomocą biblioteki 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])

Bardziej szczegółowy przykład kodu, w tym instalację biblioteki, znajdziesz w sekcji dotyczącej dźwięku w dokumentacji Uruchamianie modelu Gemma za pomocą biblioteki Hugging Face Transformers.