Tạo lời nói (chuyển văn bản sang lời nói)

Gemini API có thể chuyển đổi văn bản đầu vào thành âm thanh của một hoặc nhiều người nói bằng cách sử dụng các chức năng tạo văn bản sang lời nói (TTS) gốc. Bạn có thể kiểm soát quá trình tạo văn bản sang lời nói (TTS), tức là bạn có thể sử dụng ngôn ngữ tự nhiên để cấu trúc các lượt tương tác và hướng dẫn phong cách, giọng, tốc độgiọng điệu của âm thanh.

Khả năng TTS khác với khả năng tạo lời nói được cung cấp thông qua Live API. API này được thiết kế cho âm thanh tương tác, không có cấu trúc, cũng như đầu vào và đầu ra đa phương thức. Mặc dù Live API vượt trội trong các bối cảnh trò chuyện linh hoạt, nhưng TTS thông qua Gemini API được điều chỉnh cho phù hợp với những trường hợp yêu cầu đọc chính xác văn bản với khả năng kiểm soát chi tiết về phong cách và âm thanh, chẳng hạn như tạo podcast hoặc sách nói.

Hướng dẫn này trình bày cách tạo âm thanh một người nói và nhiều người nói từ văn bản.

Trước khi bắt đầu

Đảm bảo bạn sử dụng một biến thể mô hình Gemini 2.5 có khả năng chuyển văn bản sang lời nói (TTS) gốc, như được liệt kê trong phần Các mô hình được hỗ trợ. Để có kết quả tối ưu, hãy cân nhắc xem mô hình nào phù hợp nhất với trường hợp sử dụng cụ thể của bạn.

Bạn nên kiểm thử các mô hình TTS Gemini 2.5 trong AI Studio trước khi bắt đầu xây dựng.

Tính năng chuyển văn bản sang lời nói cho một người nói

Để chuyển văn bản thành âm thanh của một người nói, hãy đặt phương thức phản hồi thành "audio" và truyền một đối tượng SpeechConfigVoiceConfig được đặt. Bạn cần chọn tên giọng nói trong số các giọng nói đầu ra được tạo sẵn.

Ví dụ này lưu âm thanh đầu ra từ mô hình vào một tệp sóng:

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-2.5-flash-preview-tts",
   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-2.5-flash-preview-tts",
      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-2.5-flash-preview-tts: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-2.5-flash-preview-tts",
    }' | 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

Chuyển văn bản sang lời nói có nhiều người nói

Đối với âm thanh nhiều loa, bạn sẽ cần một đối tượng MultiSpeakerVoiceConfig có mỗi loa (tối đa 2) được định cấu hình dưới dạng SpeakerVoiceConfig. Bạn sẽ cần xác định từng speaker bằng các tên giống nhau được dùng trong lệnh:

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-2.5-flash-preview-tts",
   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-2.5-flash-preview-tts",
      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-2.5-flash-preview-tts: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-2.5-flash-preview-tts",
}' | 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

Kiểm soát phong cách nói bằng câu lệnh

Bạn có thể kiểm soát phong cách, giọng điệu, giọng nói và tốc độ bằng cách sử dụng câu lệnh bằng ngôn ngữ tự nhiên cho cả TTS một người nói và nhiều người nói. Ví dụ: trong câu lệnh có một người nói, bạn có thể nói:

Say in an spooky whisper:
"By the pricking of my thumbs...
Something wicked this way comes"

Trong câu lệnh có nhiều người nói, hãy cung cấp cho mô hình tên của từng người nói và bản chép lời tương ứng. Bạn cũng có thể hướng dẫn riêng cho từng người nói:

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

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

Hãy thử dùng một lựa chọn về giọng nói tương ứng với phong cách hoặc cảm xúc mà bạn muốn truyền tải để nhấn mạnh hơn nữa. Ví dụ: trong câu lệnh trước, hơi thở của Enceladus có thể nhấn mạnh trạng thái "mệt mỏi" và "buồn chán", trong khi giọng điệu vui vẻ của Puck có thể bổ sung cho trạng thái "hào hứng" và "vui vẻ".

Tạo câu lệnh để chuyển đổi thành âm thanh

Các mô hình TTS chỉ xuất âm thanh, nhưng bạn có thể dùng các mô hình khác để tạo bản chép lời trước, sau đó truyền bản chép lời đó đến mô hình TTS để đọc to.

Python

from google import genai
from google.genai import types

client = genai.Client()

transcript = client.models.generate_content(
   model="gemini-2.0-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-2.5-flash-preview-tts",
   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 stream or save the output

JavaScript

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

const ai = new GoogleGenAI({});

async function main() {

const transcript = await ai.models.generateContent({
   model: "gemini-2.0-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-2.5-flash-preview-tts",
   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();

Lựa chọn giọng nói

Các mô hình TTS hỗ trợ 30 lựa chọn giọng nói sau đây trong trường voice_name:

ZephyrTươi sáng PuckRộn ràng CharonCung cấp nhiều thông tin
KoreFirm FenrirDễ kích động LedaTrẻ trung
OrusFirm AoedeBreezy CallirrhoeDễ chịu
AutonoeTươi sáng EnceladusBreathy IapetusRõ ràng
UmbrielDễ tính AlgiebaLàm mịn DespinaSmooth (Mượt mà)
ErinomeClear AlgenibKhàn RasalgethiCung cấp nhiều thông tin
LaomedeiaRộn ràng AchernarMềm AlnilamFirm
SchedarEven GacruxNgười trưởng thành PulcherrimaLạc quan
AchirdThân thiện ZubenelgenubiThông thường VindemiatrixÊm dịu
SadachbiaLively SadaltagerHiểu biết SulafatẤm

Bạn có thể nghe tất cả các lựa chọn về giọng nói trong AI Studio.

Ngôn ngữ được hỗ trợ

Các mô hình TTS tự động phát hiện ngôn ngữ đầu vào. Các ngôn ngữ này hỗ trợ 24 ngôn ngữ sau:

Ngôn ngữ Mã BCP-47 Ngôn ngữ Mã BCP-47
Tiếng Ả Rập (Ai Cập) ar-EG Tiếng Đức (Đức) de-DE
Tiếng Anh (Mỹ) en-US Tiếng Tây Ban Nha (Mỹ) es-US
Tiếng Pháp (Pháp) fr-FR Tiếng Hindi (Ấn Độ) hi-IN
Tiếng Indo (Indonesia) id-ID Tiếng Ý (Ý) it-IT
Tiếng Nhật (Nhật Bản) ja-JP Tiếng Hàn (Hàn Quốc) ko-KR
Tiếng Bồ Đào Nha (Brazil) pt-BR Tiếng Nga (Nga) ru-RU
Tiếng Hà Lan (Hà Lan) nl-NL Tiếng Ba Lan (Ba Lan) pl-PL
Tiếng Thái (Thái Lan) th-TH Tiếng Thổ Nhĩ Kỳ (Thổ Nhĩ Kỳ) tr-TR
Tiếng Việt (Việt Nam) vi-VN Tiếng Rumani (Rumani) ro-RO
Tiếng Ukraina (Ukraina) uk-UA Tiếng Bengali (Bangladesh) bn-BD
Tiếng Anh (Ấn Độ) Bộ sách của en-INhi-IN Tiếng Marathi (Ấn Độ) mr-IN
Tiếng Tamil (Ấn Độ) ta-IN Tiếng Telugu (Ấn Độ) te-IN

Mô hình được hỗ trợ

Mô hình Loa đơn Nhiều người nói
Bản xem trước Gemini 2.5 Flash TTS ✔️ ✔️
TTS Gemini 2.5 Pro Preview ✔️ ✔️

Các điểm hạn chế

  • Các mô hình TTS chỉ có thể nhận dữ liệu đầu vào là văn bản và tạo dữ liệu đầu ra là âm thanh.
  • Một phiên TTS có giới hạn cửa sổ ngữ cảnh là 32.000 token.
  • Xem phần Ngôn ngữ để biết những ngôn ngữ được hỗ trợ.

Hướng dẫn đặt câu lệnh

Mô hình Chuyển văn bản sang lời nói (TTS) bằng âm thanh gốc của Gemini khác biệt với các mô hình TTS truyền thống bằng cách sử dụng một mô hình ngôn ngữ lớn, không chỉ biết nội dung cần nói mà còn biết cách nói.

Để khai thác khả năng này, người dùng có thể coi mình là đạo diễn đang thiết lập cảnh để diễn viên lồng tiếng ảo biểu diễn. Để tạo một câu lệnh, bạn nên cân nhắc những thành phần sau: Hồ sơ âm thanh xác định danh tính và nguyên mẫu cốt lõi của nhân vật; Nội dung mô tả cảnh thiết lập môi trường vật lý và "bầu không khí" cảm xúc; và Ghi chú của đạo diễn đưa ra hướng dẫn chính xác hơn về phong cách diễn xuất, giọng điệu và tốc độ.

Bằng cách cung cấp hướng dẫn chi tiết như giọng vùng chính xác, các đặc điểm cận ngôn ngữ cụ thể (ví dụ: hơi thở) hoặc tốc độ, người dùng có thể tận dụng khả năng nhận biết ngữ cảnh của mô hình để tạo ra các bản âm thanh có tính linh hoạt cao, tự nhiên và giàu cảm xúc. Để đạt được hiệu suất tối ưu, bạn nên đảm bảo Bản chép lời và lời nhắc của đạo diễn nhất quán với nhau, để "ai đang nói" khớp với "nội dung được nói""cách nói".

Mục đích của hướng dẫn này là đưa ra hướng dẫn cơ bản và khơi gợi ý tưởng khi phát triển trải nghiệm âm thanh bằng tính năng tạo âm thanh TTS của Gemini. Chúng tôi rất háo hức được chứng kiến những tác phẩm của bạn!

Cấu trúc câu lệnh

Một câu lệnh hiệu quả lý tưởng sẽ bao gồm các yếu tố sau đây kết hợp với nhau để tạo ra hiệu suất tuyệt vời:

  • Hồ sơ âm thanh – Thiết lập một nhân vật cho giọng nói, xác định danh tính, nguyên mẫu và mọi đặc điểm khác của nhân vật như độ tuổi, bối cảnh, v.v.
  • Cảnh – Chuẩn bị sẵn sàng. Mô tả cả môi trường vật chất và "bầu không khí".
  • Ghi chú của đạo diễn – Hướng dẫn về hiệu suất, nơi bạn có thể phân tích những chỉ dẫn quan trọng mà tài năng ảo cần lưu ý. Ví dụ: phong cách, cách hít thở, tốc độ, cách phát âm và giọng điệu.
  • Bối cảnh mẫu – Cung cấp cho mô hình một điểm khởi đầu theo bối cảnh, nhờ đó diễn viên ảo của bạn sẽ xuất hiện một cách tự nhiên trong cảnh mà bạn thiết lập.
  • Bản chép lời – Văn bản mà mô hình sẽ đọc to. Để đạt hiệu suất tốt nhất, hãy nhớ rằng chủ đề và văn phong của bản chép lời phải tương quan với chỉ dẫn mà bạn đưa ra.

Ví dụ về câu lệnh đầy đủ:

# 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
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. Turn this up!
We've got the project roadmap landing in three, two... let's go!

Chiến lược tạo câu lệnh chi tiết

Hãy cùng phân tích từng thành phần của câu lệnh.

Cấu hình âm thanh

Mô tả ngắn gọn về hình tượng của nhân vật.

  • Tên Đặt tên cho nhân vật sẽ giúp mô hình và hiệu suất chặt chẽ hơn, hãy gọi nhân vật bằng tên khi thiết lập cảnh và bối cảnh
  • Vai trò. Danh tính và nguyên mẫu cốt lõi của nhân vật đang diễn ra trong cảnh. Ví dụ: DJ đài phát thanh, Nhà sáng tạo podcast, Phóng viên tin tức, v.v.

Ví dụ:

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


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

Scene

Đặt bối cảnh cho cảnh, bao gồm vị trí, tâm trạng và thông tin chi tiết về môi trường để thiết lập tông màu và cảm xúc. Mô tả những gì đang xảy ra xung quanh nhân vật và cách những sự kiện đó ảnh hưởng đến nhân vật. Cảnh này cung cấp bối cảnh môi trường cho toàn bộ lượt tương tác và hướng dẫn diễn xuất một cách tinh tế, tự nhiên.

Ví dụ:

## 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."

Ghi chú của đạo diễn

Phần quan trọng này bao gồm hướng dẫn cụ thể về hiệu suất. Bạn có thể bỏ qua tất cả các phần tử khác, nhưng bạn nên thêm phần tử này.

Chỉ xác định những gì quan trọng đối với hiệu suất, đồng thời cẩn thận để không chỉ định quá mức. Có quá nhiều quy tắc nghiêm ngặt sẽ hạn chế khả năng sáng tạo của các mô hình và có thể dẫn đến hiệu suất kém hơn. Cân bằng vai trò và nội dung mô tả cảnh với các quy tắc biểu diễn cụ thể.

Các hướng dẫn phổ biến nhất là Phong cách, Nhịp độ và Điểm nhấn, nhưng mô hình này không giới hạn ở những hướng dẫn này và cũng không yêu cầu phải có những hướng dẫn này. Bạn có thể thêm hướng dẫn tuỳ chỉnh để trình bày mọi thông tin bổ sung quan trọng đối với hiệu suất của bạn, cũng như cung cấp nhiều hoặc ít thông tin chi tiết tuỳ theo nhu cầu.

Ví dụ:

### 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 |

Kiểu:

Đặt âm điệu và Kiểu cho lời nói được tạo. Hãy thêm những thông tin như vui vẻ, tràn đầy năng lượng, thư giãn, buồn chán, v.v. để hướng dẫn hiệu suất. Hãy mô tả và cung cấp nhiều thông tin chi tiết nhất có thể: "Nhiệt tình truyền cảm hứng. Người nghe nên cảm thấy như họ đang tham gia một sự kiện cộng đồng lớn và thú vị." sẽ hiệu quả hơn so với việc chỉ nói "đầy năng lượng và nhiệt huyết".

Bạn thậm chí có thể thử những thuật ngữ phổ biến trong ngành lồng tiếng, chẳng hạn như "giọng cười". Bạn có thể xếp lớp bao nhiêu đặc điểm về kiểu dáng tuỳ thích.

Ví dụ:

Simple Emotion

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

Độ sâu lớn hơn

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

Phức tạp

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").

Giọng:

Mô tả giọng nhấn mong muốn. Bạn càng cụ thể thì kết quả càng tốt. Ví dụ: sử dụng "Giọng Anh Anh như nghe thấy ở Croydon, Anh" thay vì "Giọng Anh".

Ví dụ:

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


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

Nhịp độ:

Nhịp độ tổng thể và sự thay đổi nhịp độ trong suốt bản nhạc.

Ví dụ:

Đơn giản

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

Độ sâu lớn hơn

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

Phức tạp

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

Hãy thử

Hãy tự mình thử một số ví dụ này trên AI Studio, dùng thử Ứng dụng TTS của chúng tôi và để Gemini giúp bạn trở thành đạo diễn. Hãy lưu ý những mẹo sau để có màn trình diễn thanh nhạc tuyệt vời:

  • Hãy nhớ giữ cho toàn bộ câu lệnh nhất quán – kịch bản và chỉ đạo diễn xuất phải đi đôi với nhau để tạo ra một màn trình diễn tuyệt vời.
  • Bạn không cần phải mô tả mọi thứ, đôi khi việc cho phép mô hình tự điền vào chỗ trống sẽ giúp tạo ra hình ảnh tự nhiên hơn. (Giống như một diễn viên tài năng)
  • Nếu bạn cảm thấy bế tắc, hãy nhờ Gemini giúp bạn soạn thảo kịch bản hoặc bài biểu diễn.

Bước tiếp theo