تحوّل Gemini API الكلام في الملفات الصوتية إلى نص باستخدام نموذج Gemini 3.5 Transcribe (gemini-3.5-transcribe). واستنادًا إلى إمكانات Gemini في فهم الصوت، يقدّم خدمة تحويل الصوت إلى نص بدقة مع التعرّف التلقائي على اللغة، وتحديد المتحدث، والطوابع الزمنية على مستوى الكلمات، وتلميحات المفردات المخصّصة. يتضمّن أيضًا وضع تحويل الصوت إلى نص بذكاء الذي يزيل الأخطاء اللغوية ويوفّر تنسيقًا ذكيًا.
لتحويل ملف صوتي إلى نص، حمِّل الملف الصوتي وأرسِله إلى gemini-3.5-transcribe:
Python
from google import genai
client = genai.Client()
audio_file = client.files.upload(file="path/to/sample.mp3")
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[audio_file],
)
print(response.text)
JavaScript
import { GoogleGenAI } from "@google/genai";
const ai = new GoogleGenAI({});
const audioFile = await ai.files.upload({
file: "path/to/sample.mp3",
mimeType: "audio/mp3",
});
const response = await ai.models.generateContent({
model: "gemini-3.5-transcribe",
contents: [audioFile],
});
console.log(response.text);
REST
# First upload the file via the Files API, then pass its URI:
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [
{
"fileData": {
"fileUri": "YOUR_FILE_URI",
"mimeType": "audio/mp3"
}
}
]
}
]
}'
نظرة عامة
تم تحسين Gemini 3.5 Transcribe لمهام تحويل الكلام إلى نص. تتعامل هذه الميزة مع اللهجات المختلفة والضوضاء في الخلفية والمحادثات المتعددة اللغات.
تشمل الإمكانات الرئيسية ما يلي:
- التعرّف التلقائي على الكلام (ASR): يتم تلقائيًا رصد اللغات في أكثر من 85 منطقة. يتعامل مع التبديل بين اللغات داخل الجملة وبين الجمل بدون إعداد يدوي.
- المفردات المخصّصة: يتم تحسين التعرّف على المصطلحات والاختصارات والأسماء الخاصة بالنطاق من خلال إدخال ما يصل إلى 1,000 عبارة.
- تحديد المتحدّثين: يميز بين المتحدّثين المتعددين وينسب المقاطع المنطوقة إلى تصنيفات مختلفة.
- الطوابع الزمنية على مستوى الكلمات: يتم إنشاء إزاحات دقيقة لوقتَي البدء والانتهاء لكل كلمة يتم التعرّف عليها.
- تحويل الصوت إلى نص بذكاء: تنقّح هذه الميزة النص من أخطاء الطلاقة وكلمات الحشو والتكرار، وتطبّق تنسيقًا منظَّمًا.
- التنسيق والتسوية: يتم تطبيق الكتابة بالأحرف اللاتينية الكبيرة وعلامات الترقيم وتسوية النص العكسية، مثل تحويل "ستة وعشرون مليون دولار أمريكي" إلى "26 مليون دولار أمريكي".
لفهم المحتوى الصوتي بشكل عام أو الإجابة عن أسئلة حوله، استخدِم فهم المحتوى الصوتي. لتركيب الصوت من النص، استخدِم تحويل النص إلى كلام.
اكتشاف اللغة وتقديم تلميحات
يتعرّف النموذج تلقائيًا على اللغة المنطوقة. ويبدّل بين اللغات بشكل ديناميكي عندما يغيّر المتحدثون اللغة.
لاستخدام ميزة "الرصد التلقائي"، احذف language_codes أو قدِّم قائمة فارغة:
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[audio_file],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
language_codes=[],
)
),
)
JavaScript
const response = await ai.models.generateContent({
model: "gemini-3.5-transcribe",
contents: [audioFile],
config: {
audioTranscriptionConfig: {
languageCodes: [],
},
},
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [
{
"fileData": {
"fileUri": "YOUR_FILE_URI",
"mimeType": "audio/mp3"
}
}
]
}
],
"generationConfig": {
"audioTranscriptionConfig": {
"languageCodes": []
}
}
}'
إذا كنت تعرف اللغة مسبقًا، حدِّد رموز اللغة BCP-47 في language_codes لتحسين دقة النسخ (راجِع اللغات المتوافقة):
Python
config = types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
language_codes=["es-ES"],
)
)
JavaScript
const config = {
audioTranscriptionConfig: {
languageCodes: ["es-ES"],
},
};
REST
{
"generationConfig": {
"audioTranscriptionConfig": {
"languageCodes": ["es-ES"]
}
}
}
المفردات المخصّصة
يمكنك توجيه نموذج الكلام نحو الكلمات غير الشائعة أو المصطلحات الفنية أو أسماء العلامات التجارية أو أسماء العَلم. قدِّم ما يصل إلى 1,000 عبارة في مصفوفة custom_vocabulary (عادةً ما يتم تحقيق أفضل النتائج باستخدام ما يصل إلى 100 عبارة):
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[audio_file],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
custom_vocabulary=["Gemini", "Kubernetes", "BigQuery"],
)
),
)
JavaScript
const response = await ai.models.generateContent({
model: "gemini-3.5-transcribe",
contents: [audioFile],
config: {
audioTranscriptionConfig: {
customVocabulary: ["Gemini", "Kubernetes", "BigQuery"],
},
},
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [
{
"fileData": {
"fileUri": "YOUR_FILE_URI",
"mimeType": "audio/mp3"
}
}
]
}
],
"generationConfig": {
"audioTranscriptionConfig": {
"customVocabulary": ["Gemini", "Kubernetes", "BigQuery"]
}
}
}'
تمييز أصوات المتحدّثِين
تحدّد ميزة "تحديد المتحدّث" الأصوات المختلفة في التسجيل وتضع علامة على كل مقطع باستخدام معرّف المتحدّث، مثل spk_1 أو spk_2. يمكن استخدام ما يصل إلى 8 مكبّرات صوت (تكون ميزة تحديد المصدر لـ 3 مكبّرات صوت أو أكثر تجريبية).
فعِّل ميزة "تمييز أصوات المتحدّثين" من خلال ضبط diarization على True:
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[audio_file],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
diarization=True,
)
),
)
JavaScript
const response = await ai.models.generateContent({
model: "gemini-3.5-transcribe",
contents: [audioFile],
config: {
audioTranscriptionConfig: {
diarization: true,
},
},
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [
{
"fileData": {
"fileUri": "YOUR_FILE_URI",
"mimeType": "audio/mp3"
}
}
]
}
],
"generationConfig": {
"audioTranscriptionConfig": {
"diarization": true
}
}
}'
الطوابع الزمنية على مستوى الكلمات
توفّر الطوابع الزمنية على مستوى الكلمات إزاحات دقيقة للبداية والنهاية لكل كلمة يتم التعرّف عليها في بث صوتي.
فعِّل الطوابع الزمنية من خلال ضبط word_timestamp على True:
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[audio_file],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
word_timestamp=True,
)
),
)
JavaScript
const response = await ai.models.generateContent({
model: "gemini-3.5-transcribe",
contents: [audioFile],
config: {
audioTranscriptionConfig: {
wordTimestamp: true,
},
},
});
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [
{
"fileData": {
"fileUri": "YOUR_FILE_URI",
"mimeType": "audio/mp3"
}
}
]
}
],
"generationConfig": {
"audioTranscriptionConfig": {
"wordTimestamp": true
}
}
}'
يمكنك الجمع بين diarization وword_timestamp في طلب واحد لتلقّي كلّ من تصنيفات المتحدثين والطوابع الزمنية للكلمات:
Python
config = types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
diarization=True,
word_timestamp=True,
custom_vocabulary=["Gemini"],
)
)
JavaScript
const config = {
audioTranscriptionConfig: {
diarization: true,
wordTimestamp: true,
customVocabulary: ["Gemini"],
},
};
REST
{
"generationConfig": {
"audioTranscriptionConfig": {
"diarization": true,
"wordTimestamp": true,
"customVocabulary": ["Gemini"]
}
}
}
أوضاع تحويل الصوت إلى نص
تتيح أداة Gemini 3.5 Transcribe وضعَين لتحويل الصوت إلى نص من خلال المَعلمة mode:
VERBATIM(الإعداد التلقائي): تعرض هذه القيمة نصًا مطابقًا تمامًا لكل ما يُقال، مع الحفاظ على الكلمات الحشو الخام ("أمم" و"آه" و"مثل" و"كما تعلم") والتكرار والتوقفات المؤقتة وبدايات الجمل الخاطئة. مطلوبة عند استخدام الطوابع الزمنية أو تحديد هوية المتحدث.SMART(النسخ الذكي): تحسين النص لتسهيل قراءته من خلال تطبيق معالجة ذكية بعد التسجيل:- إزالة التلعثم: تزيل هذه الميزة الكلمات التي تُستخدم لملء الفراغات في المحادثة والتلعثم وبدايات الجمل الخاطئة.
- التصحيحات الذاتية المضمّنة: تحلّ التصحيحات المنطوقة مباشرةً (على سبيل المثال، "لنجتمع يوم الثلاثاء، لا بل يوم الأربعاء في الساعة الثانية" تصبح "لنجتمع يوم الأربعاء في الساعة 2:00 ظهرًا").
- التنسيق المنظَّم التلقائي: ينظّم الأفكار المنطوقة تلقائيًا في فقرات وقوائم مرقّمة ونقاط تعداد وتواريخ وعملات وأرقام منسَّقة.
- التصحيح النحوي: يضيف علامات الترقيم المناسبة ويعدّل حالة الأحرف في الجملة ويحسّن من سلاسة النص.
| محتوى كلامي صوتي | VERBATIM الناتج |
ناتج SMART (التحويل الذكي من صوت إلى نص) |
|---|---|---|
| "حسنًا، بالنسبة إلى الاجتماع، أعتقد أنّه علينا دعوة "منى"، لا، "عماد" و"كارول". | "حسنًا، بالنسبة إلى الاجتماع، أعتقد أنّه علينا دعوة أليس، لا، بل دعوة بوب وكارول". | "أعتقد أنّه علينا دعوة "بوب" و"كارول" إلى الاجتماع". |
| مراجعة العنصر الأول للميزانية، وضع اللمسات الأخيرة على الجدول الزمني للعنصر الثاني، إرسال ملخّص للعنصر الثالث | "مراجعة العنصر الأول، تحديد الميزانية، وضع اللمسات الأخيرة على الجدول الزمني للعنصر الثاني، إرسال ملخّص للعنصر الثالث" | "1- مراجعة الميزانية 2. إنهاء المخطّط الزمني 3. إرسال ملخّص" |
Python
from google import genai
from google.genai import types
client = genai.Client()
response = client.models.generate_content(
model="gemini-3.5-transcribe",
contents=[audio_file],
config=types.GenerateContentConfig(
audio_transcription_config=types.AudioTranscriptionConfig(
mode="SMART",
)
),
)
print(response.text)
JavaScript
const response = await ai.models.generateContent({
model: "gemini-3.5-transcribe",
contents: [audioFile],
config: {
audioTranscriptionConfig: {
mode: "SMART",
},
},
});
console.log(response.text);
REST
curl -X POST "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-transcribe:generateContent" \
-H "x-goog-api-key: $GEMINI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"parts": [
{
"fileData": {
"fileUri": "YOUR_FILE_URI",
"mimeType": "audio/mp3"
}
}
]
}
],
"generationConfig": {
"audioTranscriptionConfig": {
"mode": "SMART"
}
}
}'
تحليل نتيجة تحويل الصوت إلى نص
يتم عرض نص المحادثة الكامل في response.text.
عند تفعيل word_timestamp أو diarization، تعرض واجهة برمجة التطبيقات أيضًا تعليقات توضيحية مفصّلة على مستوى الكلمات وتصنيفات المتحدثين المرفقة بالأجزاء المرشّحة.
في ما يلي كيفية استخراج الطوابع الزمنية للكلمات ونوبات التحدث وتكرارها:
Python
def extract_word_transcriptions(response):
words = []
for candidate in getattr(response, "candidates", []) or []:
content = getattr(candidate, "content", None)
for part in getattr(content, "parts", []) or []:
transcription = getattr(part, "audio_transcription", None)
if transcription:
speaker = getattr(transcription, "speaker_label", "")
for word_info in getattr(transcription, "words", []) or []:
word = getattr(word_info, "word", "")
start = getattr(word_info, "start_offset", "")
end = getattr(word_info, "end_offset", "")
words.append({
"word": word,
"speaker": speaker,
"start_offset": start,
"end_offset": end,
})
return words
words = extract_word_transcriptions(response)
for w in words:
speaker = f"[{w['speaker']}] " if w["speaker"] else ""
timing = f"({w['start_offset']} -> {w['end_offset']}) " if w["start_offset"] and w["end_offset"] else ""
print(f"{speaker}{timing}{w['word']}")
JavaScript
function extractWordTranscriptions(response) {
const words = [];
for (const candidate of response.candidates ?? []) {
for (const part of candidate.content?.parts ?? []) {
const transcription = part.audioTranscription;
if (transcription) {
const speaker = transcription.speakerLabel ?? "";
for (const wordInfo of transcription.words ?? []) {
words.push({
word: wordInfo.word ?? "",
speaker: speaker,
startOffset: wordInfo.startOffset ?? "",
endOffset: wordInfo.endOffset ?? "",
});
}
}
}
}
return words;
}
const words = extractWordTranscriptions(response);
for (const w of words) {
const speaker = w.speaker ? `[${w.speaker}] ` : "";
const timing = (w.startOffset && w.endOffset) ? `(${w.startOffset} -> ${w.endOffset}) ` : "";
console.log(`${speaker}${timing}${w.word}`);
}
REST
{
"candidates": [
{
"content": {
"parts": [
{
"audioTranscription": {
"speakerLabel": "spk_1",
"words": [
{
"word": "Hello",
"startOffset": "0.100s",
"endOffset": "0.450s"
},
{
"word": "world",
"startOffset": "0.500s",
"endOffset": "0.850s"
}
]
}
}
],
"role": "model"
},
"finishReason": "STOP"
}
]
}
اللغات المتاحة
تتوفّر ميزة "النسخ الصوتي" في Gemini 3.5 باللغات ورموز اللغة BCP-47 التالية:
| اللغة | رمز BCP-47 | اللغة | رمز BCP-47 |
|---|---|---|---|
| الأفريقانية | af-ZA |
اليابانية | ja-JP |
| الأمهرية | am-ET |
الجافانية | jv-ID |
| العربية (مصر) | ar-EG |
كابوفيرديانيو | kea-CV |
| الأرمينية | hy-AM |
الكانادا | kn-IN |
| الأسامية | as-IN |
الكازاخية | kk-KZ |
| أذربيجان | az-AZ |
الكورية | ko-KR |
| البيلاروسية | be-BY |
القيرغيزية | ky-KG |
| البنغالية (بنغلاديش) | bn-BD |
اللاتفية | lv-LV |
| البنغالية (الهند) | bn-IN |
اللينجالا | ln-CD |
| البوسنية | bs-BA |
الليتوانية | lt-LT |
| البلغارية | bg-BG |
المقدونية | mk-MK |
| البلغارية (الأرومانية) | rup-BG |
الماليزية | ms-MY |
| البورمية | my-MM |
المالايالامية | ml-IN |
| الكانتونية (التقليدية) | yue-Hant-HK |
المالطية | mt-MT |
| الكتالانية | ca-ES |
الصينية الماندرين (المبسطة) | cmn-Hans-CN |
| السيبيوانية | ceb |
المراثية | mr-IN |
| الخميرية القياسية | km-KH |
المنغولية | mn-MN |
| الكرواتية | hr-HR |
النيبالية | ne-NP |
| التشيكية | cs-CZ |
النرويجية | nb-NO |
| الدانماركية | da-DK |
الأوريا | or-IN |
| الهولندية | nl-NL |
البولندية | pl-PL |
| الإنجليزية (بريطانيا العظمى) | en-GB |
البرتغالية (البرازيل) | pt-BR |
| الإنجليزية (الهند) | en-IN |
البرتغالية (البرتغال) | pt-PT |
| الإنجليزية (الولايات المتحدة) | en-US |
البنجابية | pa-IN |
| الإستونية | et-EE |
البنجابية (نص غورموخي) | pa-Guru-IN |
| الفارسية | fa-IR |
الرومانية | ro-RO |
| الفلبينية | fil-PH |
الروسية | ru-RU |
| الفنلندية | fi-FI |
الصربية | sr-RS |
| الفرنسية | fr-FR |
السندية (الخط العربي) | sd-Arab-IN |
| الغليشيانية | gl-ES |
السلوفاكية | sk-SK |
| الجورجية | ka-GE |
السلوفينية | sl-SI |
| الألمانية | de-DE |
الإسبانية (أمريكا اللاتينية) | es-419 |
| اليونانية | el-GR |
الإسبانية (الولايات المتحدة) | es-US |
| الغوجاراتية | gu-IN |
السواحيلية (كينيا) | sw-KE |
| الهوسا | ha-NG |
السويدية | sv-SE |
| العبرية | he-IL |
الطاجيكية | tg-TJ |
| الهندية | hi-IN |
التيلوغوية | te-IN |
| الهنغارية | hu-HU |
التايلاندية | th-TH |
| الأيسلندية | is-IS |
التركية | tr-TR |
| الإنجليزية الهندية | en-IN |
الأوكرانية | uk-UA |
| الإندونيسية | id-ID |
الأوزبكية | uz-UZ |
| الإيطالية | it-IT |
الفيتنامية | vi-VN |
تنسيقات الصوت المتوافقة
يتوافق Gemini 3.5 Transcribe مع أنواع MIME التالية لتنسيقات الصوت:
- WAV -
audio/wav - MP3 -
audio/mp3 - AIFF -
audio/aiff - AAC -
audio/aac - OGG -
audio/ogg - FLAC -
audio/flac - MPEG -
audio/mpeg - M4A -
audio/m4a - L16 -
audio/l16 - Opus -
audio/opus - ALAW -
audio/alaw - MULAW -
audio/mulaw - WebM -
audio/webm
للاطّلاع على القائمة الكاملة بأنواع MIME المتوافقة ومخططات المَعلمات، يُرجى الرجوع إلى مرجع Interactions API.
مرجع المَعلمة
اضبط إعدادات تحويل الصوت إلى نص من خلال تحديد الحقول ضِمن الكائن audio_transcription_config في GenerateContentConfig:
| الحقل | النوع | الوصف |
|---|---|---|
language_codes |
مصفوفة سلاسل | رموز اللغة BCP-47 (مثل ["en-US"]). في حال حذفها أو تركها فارغة ([])، يرصد النموذج اللغة تلقائيًا ويتعامل مع تبديل الرموز. |
custom_vocabulary |
مصفوفة سلاسل | ما يصل إلى 1,000 مصطلح أو اختصار أو اسم علم مخصّص لتحسين دقة التعرّف على الكلام |
word_timestamp |
منطقي | اضبط القيمة على True لتضمين إزاحات بداية الكلمة ونهايتها. في حال حذفها أو استخدام القيمة False، لن يتم عرض أي طوابع زمنية للكلمات. |
diarization |
منطقي | اضبطها على True لتحديد المتحدثين المميّزين وتصنيفهم. |
mode |
سلسلة | وضع تحويل الصوت إلى نص القيم المسموح بها: "VERBATIM" (تلقائية) و"SMART" غير متوافق مع الطوابع الزمنية وتحديد المتحدثين |
أفضل الممارسات
- توفير صوت واضح: تأكَّد من أنّ التسجيلات الصوتية تتضمّن فصلًا واضحًا للأصوات وتجنَّب التقطيع الشديد.
- تقديم تلميحات حول اللغة عند معرفتها: إذا كنت تعرف لغة الصوت مسبقًا، حدِّد
language_codesلزيادة الدقة إلى أقصى حد. - استهداف المفردات المخصّصة: لا تضمِّن في
custom_vocabularyسوى عبارات مميّزة خاصة بالنطاق أو أسماء علامات تجارية أو أسماء علم، بدلاً من الكلمات الشائعة اليومية. - استخدام Files API للتسجيلات الكبيرة: بالنسبة إلى الملفات التي تزيد مدتها عن بضع ثوانٍ، حمِّل الملف باستخدام
client.files.uploadومرِّر الملف الذي تم إرجاعه إلى محتوى النموذج.
القيود
- مدة الصوت: تتيح الطلبات الأحادية العادية استخدام ملفات صوتية تصل مدتها إلى ساعة واحدة. تقتصر معالجة الصوت على 30 دقيقة عند تفعيل ميزات، مثل تحديد هوية المتحدث أو الطوابع الزمنية على مستوى الكلمات.
- الطوابع الزمنية على مستوى الكلمات: قد يؤدي تفعيل الطوابع الزمنية على مستوى الكلمات إلى انخفاض دقة تحويل الصوت إلى نص بشكل عام.
- تمييز أصوات المتحدّثِين: تتيح هذه الميزة التعرّف على ما يصل إلى 8 متحدثين. ميزة تحديد المتحدثين لثلاثة أشخاص أو أكثر هي ميزة تجريبية.
- المفردات المخصّصة: يمكنك تقديم ما يصل إلى 1,000 عبارة في
custom_vocabulary، ولكن عادةً ما يتم تحقيق أفضل النتائج باستخدام ما يصل إلى 100 عبارة. - التوافق مع الأوضاع: لا يمكن دمج ميزة "النسخ الذكي" (
mode: "SMART") معword_timestampأوdiarization.
الخطوات التالية
- يمكنك بث الصوت في الوقت الفعلي باستخدام دليل "تحويل الصوت إلى نص مباشرةً" من خلال Live API.
- استكشِف فهم الصوت لتحليل المحتوى الصوتي أو تلخيصه أو البحث فيه.
- تعرَّف على كيفية إنشاء صوت من نص باستخدام ميزة تحويل النص إلى كلام.
- راجِع صفحة الأسعار لمعرفة أسعار النماذج وحدود الرموز المميزة.
- راجِع دليل Files API لمعرفة تفاصيل حول تحميل ملفات الوسائط وإدارتها.