音訊和口語是豐富的資料來源,可擷取使用者意圖、記錄周遭世界資訊,以及瞭解待解決的特定問題。從 Gemma 3n 開始,您可以在提示和生成作業中使用音訊資料。這項模型可用於各種音訊分析和解讀工作,並經過訓練,可處理超過 100 種口語的下列語音處理工作:
- 語音轉文字 (STT):又稱自動語音辨識 (ASR),可接收口語音訊資料,並轉錄為相同語言的文字輸出內容。瞭解詳情
- 自動語音翻譯 (AST):又稱為語音轉文字翻譯 (S2TT),可將一種語言的語音音訊資料翻譯成另一種語言的文字。瞭解詳情
您可以在各種應用程式中使用這些功能,例如:
- 建構語音控制的應用程式介面
- 為會議或講座建立轉錄服務
- 在多語言環境中啟用語音搜尋功能
本指南將概略介紹 Gemma 3n 的音訊處理功能,包括資料考量事項、使用範例和最佳做法。
音訊資料
數位音訊資料的格式和解析度可能各不相同。實際可搭配 Gemma 使用的音訊格式 (例如 MP3 和 WAV 格式),取決於您選擇將聲音資料轉換為張量的架構。以下是使用 Gemma 處理音訊資料時,需要注意的具體事項:
- 詞元費用:每秒音訊為 6.25 個詞元。
- 音訊聲道:音訊資料會以單一音訊聲道處理。 如果使用多聲道音訊 (例如左右聲道),請考慮移除聲道或將音訊資料合併為單一聲道,以減少資料量。
- 剪輯長度:建議使用長度最多 30 秒的音訊片段,但您也可以處理更長的片段,長度上限為模型脈絡窗口的大小,扣除您要求輸出的權杖。
- 取樣率:權杖化工具的音訊處理率為 16kHz,且影格為 32 毫秒。
- 位元深度:音訊權杖化工具會針對每個音訊樣本,使用範圍為 [-1, 1] 的浮點 32 位元資料。
如果打算處理的音訊資料與輸入處理的資料有顯著差異,特別是在聲道、取樣率和位元深度方面,請考慮重新取樣或修剪音訊資料,使其符合模型處理的資料解析度。
音訊編碼
使用自己的程式碼實作項目編碼音訊資料,以便搭配 Gemma 3n 使用時,請按照建議的轉換程序操作。如果您使用以特定格式編碼的音訊檔案 (例如 MP3 或 WAV 編碼資料),請務必先使用 ffmpeg 等程式庫將這些檔案解碼為樣本。解碼資料後,請將音訊轉換為單聲道、16 kHz 的 float32 波形,範圍為 [-1, 1]。舉例來說,如果您要處理 44.1 kHz 的立體聲簽署 16 位元 PCM 整數 WAV 檔案,請按照下列步驟操作:
- 將音訊資料重新取樣為 16 kHz
- 將立體聲降混為單聲道,方法是計算 2 個聲道的平均值
- 從 int16 轉換為 float32,然後除以 32768.0,縮放至 [-1, 1] 範圍
Speech-to-Text
Gemma 3n 經過多語言語音辨識訓練,可將各種語言的音訊輸入內容轉錄為文字。下列程式碼範例說明如何使用 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])
如需更完整的程式碼範例 (包括程式庫安裝),請參閱「使用 Hugging Face Transformers 執行 Gemma」文件中的音訊部分。
自動語音翻譯
Gemma 3n 經過多語言語音轉譯工作訓練,可直接將語音音訊翻譯成其他語言。下列程式碼範例說明如何使用 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])
如需更完整的程式碼範例 (包括程式庫安裝),請參閱「使用 Hugging Face Transformers 執行 Gemma」文件中的音訊部分。