إنشاء محتوى باستخدام تكنولوجيا "تحويل النص إلى كلام"

يمكن لواجهة Gemini API تحويل إدخال النص إلى صوت أحادي المتحدث أو متعدد المتحدثين باستخدام إمكانات إنشاء النص إلى كلام (TTS) في Gemini. إنّ عملية إنشاء الصوت باستخدام ميزة "تحويل النص إلى كلام" قابلة للتحكّم، ما يعني أنّه يمكنك استخدام اللغة الطبيعية لتنظيم التفاعلات وتحديد الأسلوب واللهجة والسرعة والنبرة في الصوت.

تختلف إمكانية تحويل النص إلى كلام عن إمكانية إنشاء الكلام المقدَّمة من خلال Live API، وهي مصمَّمة لتوفير صوت تفاعلي وغير منظَّم، بالإضافة إلى مدخلات ومخرجات متعددة الوسائط. في حين أنّ واجهة Live API تتفوّق في سياقات المحادثات الديناميكية، تم تصميم ميزة تحويل النص إلى كلام من خلال Gemini API لتناسب السيناريوهات التي تتطلّب تلاوة نصية دقيقة مع إمكانية التحكّم بدقة في الأسلوب والصوت، مثل إنشاء البودكاست أو الكتب المسموعة.

يوضّح لك هذا الدليل كيفية إنشاء محتوى صوتي يتضمّن متحدثًا واحدًا أو عدة متحدثين من نص.

قبل البدء

تأكَّد من استخدام صيغة نموذج Gemini تتضمّن إمكانات تحويل النص إلى كلام (TTS) من Gemini، كما هو موضّح في قسم النماذج المتوافقة. للحصول على أفضل النتائج، حدِّد النموذج الأنسب لحالة الاستخدام المحدّدة.

ننصحك بتجربة نماذج تحويل النص إلى كلام من Gemini في AI Studio قبل البدء في عملية الإنشاء.

تحويل النص إلى كلام بصوت شخص واحد

لتحويل النص إلى صوت أحادي المتحدث، اضبط وضع الاستجابة على "صوت"، وأرسِل عنصر SpeechConfig مع ضبط VoiceConfig. عليك اختيار اسم صوت من أصوات الإخراج المُنشأة مسبقًا.

يحفظ هذا المثال الصوت الناتج من النموذج في ملف موجي:

Python

from google import genai
from google.genai import types
import wave

# Set up the wave file to save the output:
def wave_file(filename, pcm, channels=1, rate=24000, sample_width=2):
   with wave.open(filename, "wb") as wf:
      wf.setnchannels(channels)
      wf.setsampwidth(sample_width)
      wf.setframerate(rate)
      wf.writeframes(pcm)

client = genai.Client()

response = client.models.generate_content(
   model="gemini-3.1-flash-tts-preview",
   contents="Say cheerfully: Have a wonderful day!",
   config=types.GenerateContentConfig(
      response_modalities=["AUDIO"],
      speech_config=types.SpeechConfig(
         voice_config=types.VoiceConfig(
            prebuilt_voice_config=types.PrebuiltVoiceConfig(
               voice_name='Kore',
            )
         )
      ),
   )
)

data = response.candidates[0].content.parts[0].inline_data.data

file_name='out.wav'
wave_file(file_name, data) # Saves the file to current directory

JavaScript

import {GoogleGenAI} from '@google/genai';
import wav from 'wav';

async function saveWaveFile(
   filename,
   pcmData,
   channels = 1,
   rate = 24000,
   sampleWidth = 2,
) {
   return new Promise((resolve, reject) => {
      const writer = new wav.FileWriter(filename, {
            channels,
            sampleRate: rate,
            bitDepth: sampleWidth * 8,
      });

      writer.on('finish', resolve);
      writer.on('error', reject);

      writer.write(pcmData);
      writer.end();
   });
}

async function main() {
   const ai = new GoogleGenAI({});

   const response = await ai.models.generateContent({
      model: "gemini-3.1-flash-tts-preview",
      contents: [{ parts: [{ text: 'Say cheerfully: Have a wonderful day!' }] }],
      config: {
            responseModalities: ['AUDIO'],
            speechConfig: {
               voiceConfig: {
                  prebuiltVoiceConfig: { voiceName: 'Kore' },
               },
            },
      },
   });

   const data = response.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
   const audioBuffer = Buffer.from(data, 'base64');

   const fileName = 'out.wav';
   await saveWaveFile(fileName, audioBuffer);
}
await main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-tts-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
        "contents": [{
          "parts":[{
            "text": "Say cheerfully: Have a wonderful day!"
          }]
        }],
        "generationConfig": {
          "responseModalities": ["AUDIO"],
          "speechConfig": {
            "voiceConfig": {
              "prebuiltVoiceConfig": {
                "voiceName": "Kore"
              }
            }
          }
        },
        "model": "gemini-3.1-flash-tts-preview",
    }' | jq -r '.candidates[0].content.parts[0].inlineData.data' | \
          base64 --decode >out.pcm
# You may need to install ffmpeg.
ffmpeg -f s16le -ar 24000 -ac 1 -i out.pcm out.wav

تحويل النص إلى كلام لعدة متحدثين

بالنسبة إلى الصوت الصادر من مكبّرات صوت متعددة، ستحتاج إلى جهاز MultiSpeakerVoiceConfig مع إعداد كل مكبّر صوت (بحد أقصى 2) كجهاز SpeakerVoiceConfig. عليك تحديد كل speaker باستخدام الأسماء نفسها المستخدَمة في الطلب:

Python

from google import genai
from google.genai import types
import wave

# Set up the wave file to save the output:
def wave_file(filename, pcm, channels=1, rate=24000, sample_width=2):
   with wave.open(filename, "wb") as wf:
      wf.setnchannels(channels)
      wf.setsampwidth(sample_width)
      wf.setframerate(rate)
      wf.writeframes(pcm)

client = genai.Client()

prompt = """TTS the following conversation between Joe and Jane:
         Joe: How's it going today Jane?
         Jane: Not too bad, how about you?"""

response = client.models.generate_content(
   model="gemini-3.1-flash-tts-preview",
   contents=prompt,
   config=types.GenerateContentConfig(
      response_modalities=["AUDIO"],
      speech_config=types.SpeechConfig(
         multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
            speaker_voice_configs=[
               types.SpeakerVoiceConfig(
                  speaker='Joe',
                  voice_config=types.VoiceConfig(
                     prebuilt_voice_config=types.PrebuiltVoiceConfig(
                        voice_name='Kore',
                     )
                  )
               ),
               types.SpeakerVoiceConfig(
                  speaker='Jane',
                  voice_config=types.VoiceConfig(
                     prebuilt_voice_config=types.PrebuiltVoiceConfig(
                        voice_name='Puck',
                     )
                  )
               ),
            ]
         )
      )
   )
)

data = response.candidates[0].content.parts[0].inline_data.data

file_name='out.wav'
wave_file(file_name, data) # Saves the file to current directory

JavaScript

import {GoogleGenAI} from '@google/genai';
import wav from 'wav';

async function saveWaveFile(
   filename,
   pcmData,
   channels = 1,
   rate = 24000,
   sampleWidth = 2,
) {
   return new Promise((resolve, reject) => {
      const writer = new wav.FileWriter(filename, {
            channels,
            sampleRate: rate,
            bitDepth: sampleWidth * 8,
      });

      writer.on('finish', resolve);
      writer.on('error', reject);

      writer.write(pcmData);
      writer.end();
   });
}

async function main() {
   const ai = new GoogleGenAI({});

   const prompt = `TTS the following conversation between Joe and Jane:
         Joe: How's it going today Jane?
         Jane: Not too bad, how about you?`;

   const response = await ai.models.generateContent({
      model: "gemini-3.1-flash-tts-preview",
      contents: [{ parts: [{ text: prompt }] }],
      config: {
            responseModalities: ['AUDIO'],
            speechConfig: {
               multiSpeakerVoiceConfig: {
                  speakerVoiceConfigs: [
                        {
                           speaker: 'Joe',
                           voiceConfig: {
                              prebuiltVoiceConfig: { voiceName: 'Kore' }
                           }
                        },
                        {
                           speaker: 'Jane',
                           voiceConfig: {
                              prebuiltVoiceConfig: { voiceName: 'Puck' }
                           }
                        }
                  ]
               }
            }
      }
   });

   const data = response.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
   const audioBuffer = Buffer.from(data, 'base64');

   const fileName = 'out.wav';
   await saveWaveFile(fileName, audioBuffer);
}

await main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-tts-preview:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
  "contents": [{
    "parts":[{
      "text": "TTS the following conversation between Joe and Jane:
                Joe: Hows it going today Jane?
                Jane: Not too bad, how about you?"
    }]
  }],
  "generationConfig": {
    "responseModalities": ["AUDIO"],
    "speechConfig": {
      "multiSpeakerVoiceConfig": {
        "speakerVoiceConfigs": [{
            "speaker": "Joe",
            "voiceConfig": {
              "prebuiltVoiceConfig": {
                "voiceName": "Kore"
              }
            }
          }, {
            "speaker": "Jane",
            "voiceConfig": {
              "prebuiltVoiceConfig": {
                "voiceName": "Puck"
              }
            }
          }]
      }
    }
  },
  "model": "gemini-3.1-flash-tts-preview",
}' | jq -r '.candidates[0].content.parts[0].inlineData.data' | \
    base64 --decode > out.pcm
# You may need to install ffmpeg.
ffmpeg -f s16le -ar 24000 -ac 1 -i out.pcm out.wav

التحكّم في أسلوب الكلام باستخدام الطلبات

يمكنك التحكّم في الأسلوب والنبرة واللهجة والسرعة باستخدام طلبات مكتوبة بلغة طبيعية أو علامات صوتية لكل من ميزة تحويل النص إلى كلام بصوت متحدث واحد أو عدة متحدثين. على سبيل المثال، في طلب يتضمّن متحدثًا واحدًا، يمكنك قول:

Say in an spooky voice:
"By the pricking of my thumbs... [short pause]
[whisper] Something wicked this way comes"

في طلب يتضمّن عدة متحدثين، قدِّم إلى النموذج اسم كل متحدث والنص الخاص به. يمكنك أيضًا تقديم إرشادات لكل متحدث على حدة:

Make Speaker1 sound tired and bored, and Speaker2 sound excited and happy:

Speaker1: So... [yawn] what's on the agenda today?
Speaker2: You're never going to guess!

جرِّب استخدام خيار صوتي يتوافق مع الأسلوب أو المشاعر التي تريد التعبير عنها، وذلك للتأكيد عليها بشكل أكبر. في الطلب السابق، على سبيل المثال، قد يؤكّد صوت إنسيلادوس على حالتَي "التعب" و"الملل"، بينما قد تتناسب نبرة بوك المبهجة مع حالتَي "الحماس" و"السعادة".

جارٍ إنشاء طلب لتحويل النص إلى صوت

تنتج نماذج تحويل النص إلى كلام الصوت فقط، ولكن يمكنك استخدام نماذج أخرى لإنشاء نص أولاً، ثم تمرير هذا النص إلى نموذج تحويل النص إلى كلام لقراءته بصوت مرتفع.

Python

from google import genai
from google.genai import types

client = genai.Client()

transcript = client.models.generate_content(
   model="gemini-3.5-flash",
   contents="""Generate a short transcript around 100 words that reads
            like it was clipped from a podcast by excited herpetologists.
            The hosts names are Dr. Anya and Liam.""").text

response = client.models.generate_content(
   model="gemini-3.1-flash-tts-preview",
   contents=transcript,
   config=types.GenerateContentConfig(
      response_modalities=["AUDIO"],
      speech_config=types.SpeechConfig(
         multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
            speaker_voice_configs=[
               types.SpeakerVoiceConfig(
                  speaker='Dr. Anya',
                  voice_config=types.VoiceConfig(
                     prebuilt_voice_config=types.PrebuiltVoiceConfig(
                        voice_name='Kore',
                     )
                  )
               ),
               types.SpeakerVoiceConfig(
                  speaker='Liam',
                  voice_config=types.VoiceConfig(
                     prebuilt_voice_config=types.PrebuiltVoiceConfig(
                        voice_name='Puck',
                     )
                  )
               ),
            ]
         )
      )
   )
)

# ...Code to handle audio output

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {

const transcript = await ai.models.generateContent({
   model: "gemini-3.5-flash",
   contents: "Generate a short transcript around 100 words that reads like it was clipped from a podcast by excited herpetologists. The hosts names are Dr. Anya and Liam.",
   })

const response = await ai.models.generateContent({
   model: "gemini-3.1-flash-tts-preview",
   contents: transcript,
   config: {
      responseModalities: ['AUDIO'],
      speechConfig: {
         multiSpeakerVoiceConfig: {
            speakerVoiceConfigs: [
                   {
                     speaker: "Dr. Anya",
                     voiceConfig: {
                        prebuiltVoiceConfig: {voiceName: "Kore"},
                     }
                  },
                  {
                     speaker: "Liam",
                     voiceConfig: {
                        prebuiltVoiceConfig: {voiceName: "Puck"},
                    }
                  }
                ]
              }
            }
      }
  });
}
// ..JavaScript code for exporting .wav file for output audio

await main();

خيارات الصوت

تتيح نماذج "تحويل النص إلى كلام" 30 خيارًا صوتيًا في الحقل voice_name:

Zephyr -- ساطع Puck -- موسيقى مبهجة شارون -- مفيدة
كوريا -- شركة Fenrir -- متحمّس Leda -- Youthful
Orus -- شركة Aoede -- Breezy Callirrhoe -- مريح
Autonoe -- Bright Enceladus -- Breathy Iapetus -- Clear
Umbriel -- شخصية سهلة الجبهة -- ناعمة Despina -- Smooth
Erinome -- Clear Algenib -- Gravelly Rasalgethi -- مفيدة
Laomedeia -- Upbeat Achernar -- Soft Alnilam -- الشركة
Schedar -- Even Gacrux -- ناضج Pulcherrima -- واثق
Achird -- Friendly Zubenelgenubi -- غير رسمي Vindemiatrix -- لطيف
Sadachbia -- مفعم بالحيوية Sadaltager -- مُلمّ سولافات -- دافئ

يمكنك الاستماع إلى جميع خيارات الأصوات في AI Studio.

اللغات المتاحة

ترصد نماذج تحويل النص إلى كلام لغة الإدخال تلقائيًا. تتوفّر اللغات التالية:

اللغة رمز BCP-47 اللغة رمز BCP-47
العربية ar الفلبينية fil
البنغالية bn الفنلندية fi
الهولندية nl الغليشيانية gl
الإنجليزية en الجورجية ka
الفرنسية fr اليونانية el
الألمانية de الغوجاراتية gu
الهندية hi الكريولية الهايتية ht
الإندونيسية id العبرية هو
الإيطالية it الهنغارية hu
اليابانية ja الأيسلندية هو
الكورية ko الجافانية jv
المراثية mr الكانادا kn
البولندية pl الكونكانية kok
البرتغالية pt لاو lo
الرومانية ro اللاتينية la
الروسية ru اللاتفية lv
الإسبانية es الليتوانية lt
التاميلية ta اللوكسمبورغية لبنان
التيلوغوية te المقدونية mk
التايلاندية th المايثيلية mai
التركية tr الملغاشية مليغرام
الأوكرانية uk الماليزية مللي ثانية
الفيتنامية vi المالايالامية ml
الأفريقانية af المنغولية mn
الألبانية sq النيبالية ne
الأمهرية am النرويجية، بوكمال nb
الأرمينية hy النرويجية، نينورسك nn
أذربيجان az الأوديا أو
الباسك eu البشتو ps
البيلاروسية be الفارسية fa
البلغارية bg البنجابية pa
البورمية my الصربية sr
الكتالانية ca السندية دقة عادية
السيبيوانية ceb السنهالية si
الصينية، المندرينية cmn السلوفاكية sk
الكرواتية ساعة السلوفينية sl
التشيكية cs السواحيلية sw
الدانماركية da السويدية sv
الإستونية et الأوردية ur

النماذج المتوافقة

الطراز متحدّث واحد المتحدثون المتعدّدون
معاينة Gemini 3.1 Flash لتحويل النص إلى كلام ✔️ ✔️
Gemini 2.5 Flash Preview TTS ✔️ ✔️
إصدار تجريبي من Gemini 2.5 Pro لتحويل النص إلى كلام ✔️ ✔️

الدليل الإرشادي لكتابة الطلبات

يختلف نموذج الإنشاء الصوتي المدمج لتحويل النص إلى كلام (TTS) من Gemini عن نماذج تحويل النص إلى كلام التقليدية من خلال استخدام نموذج لغوي كبير يعرف ليس فقط ما يجب قوله، بل أيضًا كيفية قوله.

سيفسّر النموذج تلقائيًا نصًا مكتوبًا ويحدّد الطريقة التي يجب أن يتم بها عرض كلماتك. تكون النصوص البسيطة طبيعية بدون أي صوت إضافي. لكنّ ميزة "تحويل النص إلى كلام" في Gemini تتضمّن أيضًا أدوات يمكنك استخدامها للتحكّم بها.

الغرض من هذا الدليل هو تقديم توجيهات أساسية وإثارة الأفكار عند تطوير تجارب صوتية. سنبدأ بـ العلامات للتحكّم السريع المضمّن، ثم نستكشف بُنى الطلبات المتقدّمة لتوجيه الأداء الكامل.

علامات صوتية

العلامات هي معدِّلات مضمّنة، مثل [whispers] أو [laughs]، تمنحك تحكّمًا دقيقًا في عملية التسليم. يمكنك استخدامها لتغيير نبرة الصوت وسرعته والإحساس العاطفي في سطر أو قسم من النص. يمكنك أيضًا استخدامها لإضافة عبارات اعتراضية وبعض الأصوات غير اللفظية الأخرى إلى الأداء، مثل [cough] أو [sighs] أو [gasp].

لا تتوفّر قائمة شاملة بالعلامات التي تعمل وتلك التي لا تعمل، وننصحك بتجربة مشاعر وتعبيرات مختلفة لمعرفة كيف يتغيّر الناتج.

إذا لم تكن النسخة مكتوبة باللغة الإنجليزية، ننصحك باستخدام علامات صوتية باللغة الإنجليزية للحصول على أفضل النتائج.

استخدام علامات صوتية مبتكرة

لعرض نوع التباين الذي يمكن الحصول عليه باستخدام علامات الصوت، إليك مجموعة من الأمثلة التي تعبّر عن المعنى نفسه، ولكن يختلف أسلوب التعبير حسب العلامات المستخدَمة.

يمكنك تغيير طريقة إلقاء الكلام من خلال إضافة علامات في بداية السطر لجعل المتحدث يبدو متحمسًا أو متضايقًا أو مترددًا:

  • [excitedly] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام، ويمكنني التحدّث بطرق مختلفة. كيف يمكنني مساعدتك اليوم؟
  • [bored] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام…
  • [reluctantly] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام…

يمكن أيضًا استخدام العلامات لتغيير سرعة العرض أو لدمج السرعة مع التأكيد:

  • [very fast] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام…
  • [very slow] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام…
  • [sarcastically, one painfully slow word at a time] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام…

يمكنك أيضًا التحكّم بدقة في أقسام معيّنة، ما يعني أنّه يمكنك التحدث بصوت منخفض في جزء واحد من الفيديو والصراخ في جزء آخر.

  • [whispers] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام، اسمي [shouting]، ويمكنني التحدّث بطرق مختلفة. [whispers] كيف يمكنني مساعدتك اليوم؟

يمكنك أيضًا تجربة أي فكرة إبداعية تريدها:

  • [like a cartoon dog] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام…
  • [like dracula] مرحبًا، أنا نموذج جديد لتحويل النص إلى كلام…

تشمل العلامات الشائعة الاستخدام ما يلي:

[amazed] [crying] [curious] [excited]
[sighs] [gasp] [giggles] [laughs]
[mischievously] [panicked] [sarcastic] [serious]
[shouting] [tired] [trembling] [whispers]

تتيح لك العلامات التحكّم بسرعة وسهولة في تسليم نص الفيديو. ولمزيد من التحكّم، يمكنك دمجها مع طلب سياق لتحديد النبرة العامة والأجواء التي ستسود الأغنية.

إنشاء طلبات متقدّمة

يمكنك اعتبار الطلب المتقدّم بمثابة تعليمات نظامية يقدّمها المستخدم للنموذج لكي يتّبعها. وهي طريقة لتزويد النموذج بمزيد من السياق والتحكّم في الأداء.

يتضمّن نص الطلب الفعّال العناصر التالية التي تتكامل معًا لتحقيق أداء رائع:

  • الملف الصوتي: يحدّد شخصية الصوت، ويحدد هوية الشخصية ونمطها وأي خصائص أخرى مثل العمر والخلفية وما إلى ذلك.
  • المشهد: يضبط المشهد. يصف هذا الحقل البيئة المادية و"الأجواء".
  • ملاحظات المخرج: إرشادات الأداء التي يمكنك من خلالها تحديد التعليمات المهمة التي يجب أن يضعها الممثل الافتراضي في اعتباره. وتشمل الأمثلة الأسلوب والتنفس والسرعة والتعبير واللهجة.
  • مثال على السياق: يوفّر هذا الخيار للنموذج نقطة بداية سياقية، ما يتيح للممثل الافتراضي الدخول إلى المشهد الذي أعددته بشكل طبيعي.
  • النص: النص الذي سينطقه النموذج. للحصول على أفضل أداء، تذكَّر أنّ موضوع النص وأسلوب الكتابة يجب أن يكونا مرتبطَين بالتعليمات التي تقدّمها.
  • علامات الصوت: هي معدِّلات يمكنك إضافتها إلى نص لتغيير طريقة عرض جزء من النص، مثل [whispers] أو [shouting].

مثال على الطلب الكامل:

# AUDIO PROFILE: Jaz R.
## "The Morning Hype"

## THE SCENE: The London Studio
It is 10:00 PM in a glass-walled studio overlooking the moonlit London skyline,
but inside, it is blindingly bright. The red "ON AIR" tally light is blazing.
Jaz is standing up, not sitting, bouncing on the balls of their heels to the
rhythm of a thumping backing track. Their hands fly across the faders on a
massive mixing desk. It is a chaotic, caffeine-fueled cockpit designed to wake
up an entire nation.

### DIRECTOR'S NOTES
Style:
* The "Vocal Smile": You must hear the grin in the audio. The soft palate is
always raised to keep the tone bright, sunny, and explicitly inviting.
* Dynamics: High projection without shouting. Punchy consonants and elongated
vowels on excitement words (e.g., "Beauuutiful morning").

Pace: Speaks at an energetic pace, keeping up with the fast music.  Speaks
with A "bouncing" cadence. High-speed delivery with fluid transitions — no dead
air, no gaps.

Accent: Jaz is from Brixton, London

### SAMPLE CONTEXT
Jaz is the industry standard for Top 40 radio, high-octane event promos, or any
script that requires a charismatic Estuary accent and 11/10 infectious energy.

#### TRANSCRIPT
[excitedly] Yes, massive vibes in the studio! You are locked in and it is
absolutely popping off in London right now. If you're stuck on the tube, or
just sat there pretending to work... stop it. Seriously, I see you.
[shouting] Turn this up! We've got the project roadmap landing in three,
two... let's go!

استراتيجيات مفصّلة لإنشاء الطلبات

دعونا نحلّل كل عنصر من عناصر الطلب.

ملف تعريف الصوت

صف بإيجاز شخصية الشخصية.

  • الاسم: يساعد منح الشخصية اسمًا في ترسيخ النموذج وربط الأداء معًا. لذا، يُرجى الإشارة إلى الشخصية بالاسم عند تحديد المشهد والسياق.
  • الدور: الهوية الأساسية والنموذج الأصلي للشخصية التي تؤدي دورها في المشهد، مثل منسّق موسيقى في الراديو أو مقدّم بودكاست أو مراسل إخباري وما إلى ذلك

أمثلة:

# AUDIO PROFILE: Jaz R.
## "The Morning Hype"


# AUDIO PROFILE: Monica A.
## "The Beauty Influencer"

منظر

حدِّد سياق المشهد، بما في ذلك الموقع الجغرافي والأجواء والتفاصيل البيئية التي تحدّد النبرة والإحساس. صِف ما يحدث حول الشخصية وتأثيره فيها. يوفّر المشهد السياق البيئي للتفاعل بأكمله، ويوجه الأداء التمثيلي بطريقة طبيعية دقيقة.

أمثلة:

## THE SCENE: The London Studio
It is 10:00 PM in a glass-walled studio overlooking the moonlit London skyline,
but inside, it is blindingly bright. The red "ON AIR" tally light is blazing.
Jaz is standing up, not sitting, bouncing on the balls of their heels to the
rhythm of a thumping backing track. Their hands fly across the faders on a
massive mixing desk. It is a chaotic, caffeine-fueled cockpit designed to
wake up an entire nation.


## THE SCENE: Homegrown Studio
A meticulously sound-treated bedroom in a suburban home. The space is
deadened by plush velvet curtains and a heavy rug, but there is a
distinct "proximity effect."

ملاحظات المخرجين

يتضمّن هذا القسم المهم إرشادات محدّدة بشأن الأداء. يمكنك تخطّي جميع العناصر الأخرى، ولكن ننصحك بتضمين هذا العنصر.

حدِّد فقط ما هو مهم للأداء، مع الحرص على عدم المبالغة في التحديد. سيؤدي وضع الكثير من القواعد الصارمة إلى الحدّ من إبداع النماذج وقد يؤدي إلى تراجع الأداء. وازِن بين وصف الدور والمشهد وقواعد الأداء المحدّدة.

إنّ التوجيهات الأكثر شيوعًا هي الأسلوب والوتيرة واللهجة، ولكن النموذج لا يقتصر على هذه التوجيهات ولا يتطلّبها. يمكنك تضمين تعليمات مخصّصة لتغطية أي تفاصيل إضافية مهمة لأدائك، ويمكنك تقديم التفاصيل بالقدر الذي تراه مناسبًا.

على سبيل المثال:

### DIRECTOR'S NOTES

Style: Enthusiastic and Sassy GenZ beauty YouTuber

Pacing: Speaks at an energetic pace, keeping up with the extremely fast, rapid
delivery influencers use in short form videos.

Accent: Southern california valley girl from Laguna Beach |

النمط:

يضبط هذا الحقل نبرة الكلام الذي يتم إنشاؤه وأسلوبه. يمكنك تضمين كلمات مثل "مبهج" أو "نشيط" أو "مسترخٍ" أو "ملل" وما إلى ذلك لتوجيه الأداء. يجب أن تكون الأوصاف وافية وتتضمّن أكبر قدر ممكن من التفاصيل اللازمة: "حماس معدٍ. إنّ عبارة "يجب أن يشعر المستمع بأنّه جزء من حدث ضخم ومثير" أفضل من عبارة "نشيط وحماسي".

يمكنك حتى تجربة عبارات شائعة في مجال التعليق الصوتي، مثل "ابتسامة صوتية". يمكنك إضافة أي عدد تريده من خصائص الأنماط.

أمثلة:

Simple Emotion

DIRECTORS NOTES
...
Style: Frustrated and angry developer who can't get the build to run.
...

مزيد من العمق

DIRECTORS NOTES
...
Style: Sassy GenZ beauty YouTuber, who mostly creates content for YouTube Shorts.
...

متقدّم

DIRECTORS NOTES
Style:
* The "Vocal Smile": You must hear the grin in the audio. The soft palate is
always raised to keep the tone bright, sunny, and explicitly inviting.
*Dynamics: High projection without shouting. Punchy consonants and
elongated vowels on excitement words (e.g., "Beauuutiful morning").

اللهجة:

قدِّم وصفًا للّكنة المطلوبة. وكلّما كانت التفاصيل أكثر، كانت النتائج أفضل. على سبيل المثال، استخدِم "لهجة إنجليزية بريطانية كما تُسمع في كرويدون، إنجلترا" بدلاً من "لهجة بريطانية".

أمثلة:

### DIRECTORS NOTES
...
Accent: Southern california valley girl from Laguna Beach
...


### DIRECTORS NOTES
...
Accent: Jaz is a DJ from Brixton, London
...

معدّل تسجيل مرات الظهور:

الوتيرة الإجمالية وتفاوت الوتيرة في جميع أنحاء المقطوعة

أمثلة:

بسيط

### DIRECTORS NOTES
...
Pacing: Speak as fast as possible
...

مزيد من التفاصيل

### DIRECTORS NOTES
...
Pacing: Speaks at a faster, energetic pace, keeping up with fast paced music.
...

متقدّم

### DIRECTORS NOTES
...
Pacing: The "Drift": The tempo is incredibly slow and liquid. Words bleed into each other. There is zero urgency.
...

النص والعلامات الصوتية

النص هو الكلمات المحدّدة التي سينطق بها النموذج. علامة الصوت هي كلمة بين قوسين مربّعين تشير إلى طريقة لفظ كلمة أو عبارة، أو إلى تغيير في النبرة، أو إلى جملة اعتراضية.

### TRANSCRIPT

I know right, [sarcastically] I couldn't believe it. [whispers] She should have totally left
at that point.

[cough] Well, [sighs] I guess it doesn't matter now.

تجربة هذه الميزة

يمكنك تجربة بعض هذه الأمثلة بنفسك على AI Studio، واستخدام تطبيق تحويل النص إلى كلام، والاستفادة من ميزات Gemini الإبداعية. إليك بعض النصائح التي يجب وضعها في الاعتبار لتقديم أداء صوتي رائع:

  • تذكَّر أن تحافظ على تماسك الطلب بأكمله، فالنص والإخراج يسيران جنبًا إلى جنب في تقديم أداء رائع.
  • لا تتردد في ترك بعض التفاصيل ليملأها النموذج، فهذا يساعد في جعل النص يبدو طبيعيًا. (تمامًا مثل ممثل موهوب)
  • إذا واجهت صعوبة في كتابة نص أو أداء أغنية، يمكن أن يساعدك Gemini في ذلك.

إنشاء الكلام أثناء البث

يمكنك بث الصوت الذي ينشئه النموذج أثناء عملية الإنشاء. ويفيد ذلك في تقليل وقت الاستجابة المُدرَك.

Python

from google import genai
from google.genai import types

client = genai.Client()

response_stream = client.models.generate_content_stream(
   model="gemini-3.1-flash-tts-preview",
   contents="Say cheerfully: Have a wonderful day!",
   config=types.GenerateContentConfig(
      response_modalities=["AUDIO"],
      speech_config=types.SpeechConfig(
         voice_config=types.VoiceConfig(
            prebuilt_voice_config=types.PrebuiltVoiceConfig(
               voice_name='Kore',
            )
         )
      ),
   )
)

for chunk in response_stream:
   try:
      data = chunk.candidates[0].content.parts[0].inline_data.data
      # data contains raw PCM bytes (24kHz, 1-channel, 16-bit)
      # Process the audio chunk (e.g., play it or write to a file)
   except (IndexError, AttributeError):
      pass

JavaScript

import {GoogleGenAI} from '@google/genai';

async function main() {
   const ai = new GoogleGenAI({});

   const responseStream = await ai.models.generateContentStream({
      model: "gemini-3.1-flash-tts-preview",
      contents: [{ parts: [{ text: 'Say cheerfully: Have a wonderful day!' }] }],
      config: {
            responseModalities: ['AUDIO'],
            speechConfig: {
               voiceConfig: {
                  prebuiltVoiceConfig: { voiceName: 'Kore' },
               },
            },
      },
   });

   for await (const chunk of responseStream) {
      const data = chunk.candidates?.[0]?.content?.parts?.[0]?.inlineData?.data;
      if (data) {
         const audioBuffer = Buffer.from(data, 'base64');
         // Process the audio buffer
      }
   }
}
await main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.1-flash-tts-preview:streamGenerateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
        "contents": [{
          "parts":[{
            "text": "Say cheerfully: Have a wonderful day!"
          }]
        }],
        "generationConfig": {
          "responseModalities": ["AUDIO"],
          "speechConfig": {
            "voiceConfig": {
              "prebuiltVoiceConfig": {
                "voiceName": "Kore"
              }
            }
          }
        }
    }'

القيود

  • يمكن لنماذج تحويل النص إلى كلام تلقّي مدخلات نصية فقط وإنشاء مخرجات صوتية.
  • تبلغ قدرة الاستيعاب لجلسة تحويل النص إلى كلام 32 ألف رمز مميّز.
  • راجِع قسم اللغات لمعرفة اللغات المتاحة.
  • لا تتيح ميزة "تحويل النص إلى كلام" البث للطُرز الأقدم من الإصدار 3.1 (تتوفّر ميزة البث للإصدار gemini-3.1-flash-tts-preview والإصدارات الأحدث).

تنطبق القيود التالية تحديدًا عند استخدام نموذج Gemini 3.1 Flash TTS Preview لإنشاء الكلام:

  • عدم تطابق الصوت مع تعليمات الطلب: قد لا يتطابق الناتج الذي تقدّمه النماذج دائمًا مع الصوت الذي تم اختياره، ما يؤدي إلى اختلاف الصوت عن المتوقع. لتجنُّب عدم تطابق النبرات (مثل صوت رجل عميق يحاول التحدث مثل فتاة صغيرة)، تأكَّد من أنّ النبرة والسياق المكتوبَين في الطلب يتوافقان بشكل طبيعي مع الملف الشخصي للمتحدث المحدّد.
  • جودة النتائج الأطول: قد تبدأ جودة الكلام واتساقه في الانخفاض مع النتائج التي تزيد مدتها عن بضع دقائق. ننصحك بتقسيم النصوص إلى أجزاء أصغر.
  • عرض رموز نصية بشكل متقطّع: يعرض النموذج رموزًا نصية بشكل متقطّع بدلاً من رموز صوتية، ما يؤدي إلى تعذُّر تنفيذ الطلب على الخادم وظهور الخطأ 500. بما أنّ هذا يحدث بشكل عشوائي في نسبة صغيرة جدًا من الطلبات، عليك تنفيذ منطق إعادة المحاولة المبرمَج في تطبيقك للتعامل مع هذه الحالات.
  • الرفض الخاطئ من مصنّف الطلبات: قد لا تؤدي الطلبات الغامضة إلى تشغيل مصنّف تركيب الكلام، ما يؤدي إلى رفض الطلب (PROHIBITED_CONTENT) أو جعل النموذج يقرأ تعليمات الأسلوب وملاحظات المخرج بصوت عالٍ. تحقّق من صحة الطلبات من خلال إضافة مقدمة واضحة تطلب من النموذج تركيب الكلام، وحدِّد بوضوح موضع بدء النص الفعلي المنطوق.

الخطوات التالية