زبان صوتی و گفتاری منابع غنی از دادهها برای ثبت اهداف کاربر، ثبت اطلاعات در مورد جهان اطراف ما و درک مشکلات خاصی هستند که باید حل شوند. با شروع از Gemma 3n ، میتوانید از دادههای صوتی در وظایف تولید و فراخوانی با Gemma استفاده کنید. میتوانید از آن برای انواع وظایف تحلیل و تفسیر صدا استفاده کنید و این مدل برای انجام وظایف پردازش گفتار زیر با بیش از ۱۰۰ زبان گفتاری آموزش داده شده است:
- تبدیل گفتار به متن (STT) : که با نام تشخیص خودکار گفتار (ASR) نیز شناخته میشود، دادههای صوتی زبان گفتاری را دریافت کرده و آن را به خروجی متنی به همان زبان تبدیل میکند. اطلاعات بیشتر
- ترجمه خودکار گفتار (AST) : که با نام ترجمه گفتار به متن (S2TT) نیز شناخته میشود، دادههای صوتی گفتاری را از یک زبان دریافت کرده و آن را به متن به زبان دیگر ترجمه میکند. اطلاعات بیشتر
شما میتوانید از این ویژگیها در برنامههای مختلفی مانند موارد زیر استفاده کنید:
- ساخت رابطهای کاربری برنامههای کنترلشده با صدا
- ایجاد خدمات رونویسی برای جلسات یا سخنرانیها
- فعال کردن قابلیت جستجوی صوتی در محیطهای چندزبانه
این راهنما مروری بر قابلیتهای پردازش صدای Gemma 3n، شامل ملاحظات مربوط به دادهها، مثالهای کاربردی و بهترین شیوهها، ارائه میدهد.
دادههای صوتی
دادههای صوتی دیجیتال میتوانند در قالبها و سطوح وضوح مختلفی ارائه شوند. قالبهای صوتی واقعی که میتوانید با Gemma استفاده کنید، مانند قالبهای MP3 و WAV، توسط چارچوبی که برای تبدیل دادههای صوتی به تانسورها انتخاب میکنید، تعیین میشوند. در اینجا چند نکته خاص برای آمادهسازی دادههای صوتی برای پردازش با Gemma آورده شده است:
- هزینه توکن: هر ثانیه صدا ۶.۲۵ توکن است.
- کانالهای صوتی: دادههای صوتی به صورت یک کانال صوتی واحد پردازش میشوند. اگر از صدای چند کاناله، مانند کانالهای چپ و راست، استفاده میکنید، با حذف کانالها یا ترکیب دادههای صوتی در یک کانال واحد، کاهش دادهها به یک کانال واحد را در نظر بگیرید.
- طول کلیپ: کلیپهای صوتی تا ۳۰ ثانیه توصیه میشوند، اما میتوانید کلیپهای طولانیتر، تا اندازه پنجره زمینه مدل، را پردازش کنید و توکنهای خروجی مورد نظر خود را از آن کم کنید.
- نرخ نمونهبرداری: نرخ پردازش صدا برای توکنایزر ۱۶ کیلوهرتز با فریمهای ۳۲ میلیثانیهای است.
- عمق بیت: توکنساز صوتی از دادههای ۳۲ بیتی اعشاری برای هر فریم در محدوده [-1، ۱] برای هر نمونه صوتی استفاده میکند.
اگر دادههای صوتی که قصد پردازش آنها را دارید، به ویژه از نظر کانالها، نرخ نمونهبرداری و عمق بیت، تفاوت قابل توجهی با پردازش ورودی دارند، نمونهبرداری مجدد یا برش دادههای صوتی خود را برای مطابقت با وضوح دادههای مدیریت شده توسط مدل در نظر بگیرید.
رمزگذاری صوتی
هنگام رمزگذاری دادههای صوتی با پیادهسازی کد خودتان برای استفاده با Gemma 3n، باید فرآیند تبدیل توصیهشده را دنبال کنید. اگر با فایلهای صوتی رمزگذاریشده در فرمت خاصی مانند دادههای رمزگذاریشده MP3 یا WAV کار میکنید، ابتدا باید آنها را با استفاده از کتابخانهای مانند ffmpeg به نمونههایی رمزگشایی کنید. پس از رمزگشایی دادهها، صدا را به شکل موجهای تک کاناله، ۱۶ کیلوهرتز float32 در محدوده [-1، ۱] تبدیل کنید. به عنوان مثال، اگر با فایلهای WAV عدد صحیح PCM 16 بیتی با علامت استریو در ۴۴.۱ کیلوهرتز کار میکنید، این مراحل را دنبال کنید:
- دادههای صوتی را به ۱۶ کیلوهرتز تغییر نمونه دهید
- با میانگینگیری از دو کانال، میکس را از استریو به مونو کاهش دهید
- از int16 به float32 تبدیل کنید و بر 32768.0 تقسیم کنید تا به محدوده [-1، 1] برسد.
گفتار به متن
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])
برای مثال کد کاملتر، شامل نصب کتابخانه، به مستندات Run Gemma with Hugging Face Transformers ، بخش صوتی مراجعه کنید.
ترجمه خودکار گفتار
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])
برای مثال کد کاملتر، شامل نصب کتابخانه، به مستندات Run Gemma with Hugging Face Transformers ، بخش صوتی مراجعه کنید.