আপনি একটি টেক্সট প্রম্পট থেকে স্পিচ (অডিও) আউটপুট তৈরি করতে একটি জেমিনি মডেলকে বলতে পারেন। যখন আপনি ফায়ারবেস এআই লজিক ব্যবহার করেন, তখন আপনি সরাসরি আপনার অ্যাপ থেকে এই অনুরোধটি করতে পারেন।
টেক্সট-টু-স্পিচ (টিটিএস) তৈরি করা নিয়ন্ত্রণযোগ্য , অর্থাৎ আপনি হুবহু সেই টেক্সটটিই সরবরাহ করেন যা থেকে কথা তৈরি হবে। এছাড়াও, অডিও আউটপুটের ধরন, উচ্চারণ, গতি এবং সুর নিয়ন্ত্রণ করতে আপনি আপনার নির্দেশনায় স্বাভাবিক ভাষা ব্যবহার করতে পারেন। আপনি টিটিএস-কে ট্রান্সক্রিপশন (স্পিচ-টু-টেক্সট)-এর বিপরীত হিসেবে ভাবতে পারেন।
এই ফিচারটি Gemini -tts মডেলগুলোর যেকোনোটিতে ব্যবহার করা যায়, যেগুলো উচ্চ-মানের ও স্বল্প-বিলম্বের স্পিচ জেনারেশনের জন্য অপ্টিমাইজ করা হয়েছে।
এই সক্ষমতা দিয়ে আপনি নিম্নলিখিত কাজগুলো করতে পারবেন:
ইন্টারেক্টিভ স্টোরিটেলিং : এমন ইমারসিভ অডিওবুক বা রোল-প্লেয়িং গেম তৈরি করুন যেখানে মডেলটি বিভিন্ন চরিত্রের জন্য কণ্ঠস্বর পরিবর্তন করে অথবা গল্পের সাথে মিলিয়ে তার সুর (যেমন সাসপেন্সে ফিসফিস করা বা কোনো কৌতুক শুনে হাসা) মানিয়ে নেয়।
ভাষা শিক্ষা : এমন উচ্চারণ নির্দেশিকা তৈরি করুন যা নির্দিষ্ট আঞ্চলিক উচ্চারণে বা ধীর গতিতে পাঠ্য পড়তে পারে, যা শিক্ষার্থীদের কঠিন উচ্চারণ অনুশীলন করতে সাহায্য করবে।
প্রসঙ্গ-সচেতন কন্টেন্ট রিডার : সংবাদ নিবন্ধ, রান্নার রেসিপি বা ব্লগ পোস্ট এমন একটি কণ্ঠস্বর এবং আবেগপূর্ণ সুরে উচ্চস্বরে পড়ে যা বিষয়বস্তুর সাথে মেলে (যেমন ব্রেকিং নিউজের জন্য গম্ভীর সুর অথবা ধাপে ধাপে রান্নার নির্দেশাবলীর জন্য আন্তরিক ও ধৈর্যশীল সুর)।
এই নির্দেশিকায় দেখানো হয়েছে কীভাবে টেক্সট ইনপুট থেকে একক বা একাধিক বক্তার বক্তব্য তৈরি করতে হয় এবং কীভাবে সেই অডিও প্রতিক্রিয়াটি স্ট্রিম করতে হয়।
একক-স্পিকারের জন্য কোডে একাধিক-স্পিকারের জন্য কোডে স্ট্রিম করা প্রতিক্রিয়ার জন্য কোডে
TTS এবং Live API এর মধ্যে তুলনা
টেক্সট-টু-স্পিচ (টিটিএস) মডেল এবং Live API মডেল উভয়ই স্বল্প-বিলম্বের স্পিচ-জেনারেটিং মডেল, যা বিভিন্ন প্রতিক্রিয়াশীল কণ্ঠস্বর এবং ভাষার জন্য কনফিগার করা যায়। তবে, এগুলি খুব ভিন্ন ভিন্ন ব্যবহারের ক্ষেত্রে কাজ করে।
টেক্সট-টু-স্পিচ (টিটিএস) তৈরি করা একটি একমুখী , অনুরোধ-প্রতিক্রিয়া প্রক্রিয়া (টেক্সট প্রবেশ করে, অডিও বের হয়)। এটি এমন সব পরিস্থিতির জন্য বিশেষভাবে তৈরি করা হয়েছে যেখানে লেখার ধরণ ও ধ্বনির ওপর সূক্ষ্ম নিয়ন্ত্রণ রেখে প্রদত্ত টেক্সট হুবহু আবৃত্তি করার প্রয়োজন হয়; যেমন পডকাস্টের বর্ণনা, অডিওবুক বা প্রবন্ধ উচ্চস্বরে পড়া।
Live API জেনারেশন রিয়েল-টাইম ভয়েস কথোপকথনের জন্য দ্বিমুখী স্ট্রিমিং (ভয়েস ইন, ভয়েস আউট) সমর্থন করে। এটি ডায়নামিক কথোপকথনের প্রেক্ষাপটে বিশেষভাবে কার্যকর, যেখানে মডেলটিই ফেরত দেওয়ার জন্য প্রযোজ্য স্পিচ নির্ধারণ করে। উল্লেখ্য যে, সর্বশেষ Live API মডেলগুলো ভিডিও এবং ইমেজ ইনপুটও সমর্থন করে।
শুরু করার আগে
এই পৃষ্ঠায় প্রদানকারী-নির্দিষ্ট বিষয়বস্তু এবং কোড দেখতে আপনার জেমিনি এপিআই প্রদানকারীর উপর ক্লিক করুন। |
যদি আপনি ইতিমধ্যে তা না করে থাকেন, তাহলে ‘ গেটিং স্টার্টেড গাইড’টি সম্পূর্ণ করুন, যেখানে আপনার Firebase প্রজেক্ট সেট আপ করা, আপনার অ্যাপকে Firebase-এর সাথে সংযুক্ত করা, SDK যোগ করা, আপনার নির্বাচিত Gemini API প্রোভাইডারের জন্য ব্যাকএন্ড সার্ভিস ইনিশিয়ালাইজ করা এবং একটি GenerativeModel ইনস্ট্যান্স তৈরি করার পদ্ধতি বর্ণনা করা হয়েছে।
যে মডেলগুলো এই সক্ষমতা সমর্থন করে
-
gemini-3.1-flash-tts-preview
টেক্সট থেকে স্পিচ তৈরি করুন
আপনি একটি জেমিনি টিটিএস মডেল ব্যবহার করে প্রদত্ত টেক্সট থেকে স্পিচ তৈরি করতে পারেন।
একটি স্পিকার দিয়ে কথা তৈরি করুন
| এই নমুনাটি চেষ্টা করার আগে, আপনার প্রজেক্ট ও অ্যাপ সেট আপ করার জন্য এই গাইডের ' শুরু করার আগে ' অংশটি সম্পূর্ণ করুন। সেই বিভাগে, আপনি আপনার নির্বাচিত জেমিনি এপিআই প্রোভাইডারের জন্য একটি বোতামেও ক্লিক করবেন, যাতে আপনি এই পৃষ্ঠায় প্রোভাইডার-নির্দিষ্ট বিষয়বস্তু দেখতে পান । |
আপনি মডেলটিকে একটিমাত্র ভয়েস ব্যবহার করে অডিও আউটপুট দেওয়ার জন্য কনফিগার করতে পারেন।
আপনার GenerationConfig এ নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত করুন:
responseModalitiesAUDIOঅন্তর্ভুক্ত করতে সেট করুন।নিম্নলিখিত বিষয়গুলো দিয়ে একটি
SpeechConfigকনফিগার করুন:(আবশ্যক) প্রতিক্রিয়াশীল কণ্ঠের নাম (উদাহরণস্বরূপ,
Kore)(ঐচ্ছিক) ভাষা কোড ।
আপনি যদি কোনো ভাষা নির্দিষ্ট না করেন, তাহলে জেমিনি টিটিএস মডেলগুলো প্রম্পটে ভাষাটি স্বয়ংক্রিয়ভাবে শনাক্ত করতে পারে।
আপনার টেক্সট প্রম্পট দিয়ে generateContent কল করুন। মডেলটি রেসপন্স অংশে র PCM অডিও ডেটা ফেরত দেয়।
সুইফট
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
let config = GenerationConfig(
responseModalities: [.audio],
speechConfig: SpeechConfig(voiceName: "Kore", languageCode: "en-US")
)
// Create a `GenerativeModel` instance with a model that supports speech generation.
let model = ai.generativeModel(
modelName: "gemini-3.1-flash-tts-preview",
generationConfig: config
)
// Provide a text prompt.
let prompt = "Say cheerfully: Have a wonderful day!"
// Call `generateContent` to generate the speech output based on your text prompt.
let response = try await model.generateContent(prompt)
// Extract the audio data and handle it for downstream use. For example:
for part in response.inlineDataParts {
let data = part.data // Raw PCM audio bytes (24kHz, 1 channel, 16-bit)
let mimeType = part.mimeType // for example: "audio/pcm"
print("Received audio data with MIME type: \(mimeType)")
// To play back raw PCM audio bytes, you'll need to write your own `playRawPcm` function.
playRawPcm(data: data)
}
Kotlin
কোটলিনের ক্ষেত্রে, এই SDK-এর মেথডগুলো হলো সাসপেন্ড ফাংশন এবং এগুলোকে একটি Coroutine স্কোপ থেকে কল করতে হবে।
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
val config = generationConfig {
responseModalities = listOf(ResponseModality.AUDIO)
speechConfig = SpeechConfig(
voice = Voice("Kore"),
languageCode = "en-US"
)
}
// Initialize the Gemini Developer API backend service.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
modelName = "gemini-3.1-flash-tts-preview",
generationConfig = config
)
// Provide a text prompt.
val prompt = "Say cheerfully: Have a wonderful day!"
// Call `generateContent` to generate the speech output based on your text prompt.
val response = model.generateContent(prompt)
// Extract the audio data and handle it for downstream use. For example:
val part = response.candidates.firstOrNull()?.content?.parts?.firstOrNull()
if (part is InlineDataPart) {
val pcmData = part.inlineData // Raw PCM bytes (24kHz, 1 channel, 16-bit)
val mimeType = part.mimeType // for example: "audio/pcm"
// To play back PCM audio data, you'll need to write your own `playAudio` function.
playAudio(pcmData)
}
Java
জাভার জন্য, এই SDK-এর স্ট্রিমিং মেথডগুলো Reactive Streams লাইব্রেরি থেকে একটিPublisher টাইপ রিটার্ন করে।
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
GenerationConfig config = new GenerationConfig.Builder()
.setResponseModalities(Collections.singletonList(ResponseModality.AUDIO))
.setSpeechConfig(new SpeechConfig(new Voice("Kore"), "en-US"))
.build();
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.1-flash-tts-preview", config);
// Use the GenerativeModelFutures Java compatibility layer.
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// Provide a text prompt.
String prompt = "Say cheerfully: Have a wonderful day!";
Content content = new Content.Builder().addText(prompt).build();
Executor executor = Executors.newSingleThreadExecutor();
// Call `generateContent` to generate the speech output based on your text prompt.
// Extract the audio data and handle it for downstream use.
ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
Part part = result.getCandidates().get(0).getContent().getParts().get(0);
if (part instanceof InlineDataPart) {
byte[] pcmData = ((InlineDataPart) part).getInlineData();
String mimeType = ((InlineDataPart) part).getMimeType();
// To play back PCM audio data, you'll need to write your own `playAudio` function.
playAudio(pcmData);
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, ResponseModality } from "firebase/ai";
// TODO(developer): Replace with your app's Firebase configuration
const firebaseConfig = { /* ... */ };
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
const generationConfig = {
responseModalities: [ResponseModality.AUDIO],
speechConfig: {
voiceConfig: { prebuiltVoiceConfig: { voiceName: "Kore" } },
languageCode: "en-US"
}
};
// Create a `GenerativeModel` instance with a model that supports speech generation.
const model = getGenerativeModel(ai, {
model: "gemini-3.1-flash-tts-preview",
generationConfig
});
// Provide a text prompt.
const prompt = "Say cheerfully: Have a wonderful day!";
// Call `generateContent` to generate the speech output based on your text prompt.
const result = await model.generateContent(prompt);
const inlineDataParts = result.response.inlineDataParts();
// Extract the audio data and handle it for downstream use. For example:
if (inlineDataParts?.[0]) {
const pcmBase64 = inlineDataParts[0].inlineData.data;
// Decode base64 to ArrayBuffer
const pcmBuffer = Uint8Array.from(atob(pcmBase64), c => c.charCodeAt(0)).buffer;
// To play back a PCM buffer, you'll need to write your own `playAudio` function.
playAudio(pcmBuffer);
}
Dart
import 'package:firebase_ai/firebase_ai.dart';
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
final config = GenerationConfig(
responseModalities: [ResponseModality.audio],
speechConfig: SpeechConfig(voiceName: 'Kore', languageCode: 'en-US'),
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
final model = FirebaseAI.googleAI().generativeModel(
model: 'gemini-3.1-flash-tts-preview',
config: config,
);
// Provide a text prompt.
final prompt = 'Say cheerfully: Have a wonderful day!';
// Call `generateContent` to generate the speech output based on your text prompt.
final response = await model.generateContent([Content.text(prompt)]);
// Extract the audio data and handle it for downstream use. For example:
final part = response.candidates.first.content.parts.first;
if (part is InlineDataPart && part.mimeType.startsWith('audio/')) {
final Uint8List pcmData = part.bytes; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
// To play back PCM audio data, you'll need to write your own `playAudio` function.
await playAudio(pcmData);
}
ঐক্য
using Firebase.AI;
// Set `responseModalities` to include `Audio`.
// Configure a `SpeechConfig` with your chosen voice name and language code.
var config = new GenerationConfig(
responseModalities: new System.Collections.Generic.List<ResponseModality> { ResponseModality.Audio },
speechConfig: SpeechConfig.UsePrebuiltVoice("Kore", "en-US")
);
// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports speech generation.
var model = ai.GetGenerativeModel(
modelName: "gemini-3.1-flash-tts-preview",
generationConfig: config
);
// Provide a text prompt.
var prompt = "Say cheerfully: Have a wonderful day!";
// Call `GenerateContentAsync` to generate the speech output based on your text prompt.
var response = await model.GenerateContentAsync(prompt);
// Extract the audio data and handle it for downstream use. For example:
if (response.Candidates.Count > 0) {
foreach (var part in response.Candidates[0].Content.Parts) {
if (part is ModelContent.InlineDataPart inlineData) {
byte[] pcmData = inlineData.Data; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
// To play back PCM audio data, you'll need to write your own `playAudio` function.
playAudio(pcmData);
}
}
}
একাধিক স্পিকার দিয়ে বক্তৃতা তৈরি করুন
| এই নমুনাটি চেষ্টা করার আগে, আপনার প্রজেক্ট ও অ্যাপ সেট আপ করার জন্য এই গাইডের ' শুরু করার আগে ' অংশটি সম্পূর্ণ করুন। সেই বিভাগে, আপনি আপনার নির্বাচিত জেমিনি এপিআই প্রোভাইডারের জন্য একটি বোতামেও ক্লিক করবেন, যাতে আপনি এই পৃষ্ঠায় প্রোভাইডার-নির্দিষ্ট বিষয়বস্তু দেখতে পান । |
আপনি মডেলটিকে এমনভাবে কনফিগার করতে পারেন যাতে টেক্সটের মধ্যে বিভিন্ন বক্তার জন্য ভিন্ন ভিন্ন কণ্ঠস্বর ব্যবহার করা হয়। সংলাপ বা কথোপকথনের জন্য অডিও তৈরি করতে এটি উপযোগী।
একটি
MultiSpeakerVoiceConfigতৈরি করুন যা স্পিকারের নামগুলিকে (যা আপনি আপনার প্রম্পটে ব্যবহার করবেন) নির্দিষ্ট প্রতিক্রিয়া ভয়েসের নামের সাথে ম্যাপ করে (উদাহরণস্বরূপ,Kore)।মাল্টি-স্পিকার কনফিগারেশনটি ঠিক ২টি স্পিকার সমর্থন করে।
আপনার
GenerationConfigএ নিম্নলিখিত বিষয়গুলো অন্তর্ভুক্ত করুন:responseModalitiesAUDIOঅন্তর্ভুক্ত করতে সেট করুন।নিম্নলিখিত বিষয়গুলো দিয়ে একটি
SpeechConfigকনফিগার করুন:(আবশ্যক) আপনার
MultiSpeakerVoiceConfigপ্রদান করুন।(ঐচ্ছিক) ভাষা কোড ।
আপনি যদি কোনো ভাষা নির্দিষ্ট না করেন, তাহলে জেমিনি টিটিএস মডেলগুলো প্রম্পটে ভাষাটি স্বয়ংক্রিয়ভাবে শনাক্ত করতে পারে।
আপনার নির্দেশনায়, বক্তার নাম উপসর্গ হিসেবে ব্যবহার করে কে কথা বলছে তা নির্দেশ করুন (উদাহরণস্বরূপ,
Joe: Hello. Jane: Hi.)।
আপনার টেক্সট প্রম্পট দিয়ে generateContent কল করুন। মডেলটি রেসপন্স অংশে র PCM অডিও ডেটা ফেরত দেয়।
সুইফট
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Configure a `SpeechConfig` for multiple speakers, assigning a voice to each speaker.
let multiSpeechConfig = SpeechConfig(
multiSpeakerVoiceConfig: MultiSpeakerVoiceConfig(
speakerVoiceConfigs: [
SpeakerVoiceConfig(speaker: "Joe", voiceName: "Puck"),
SpeakerVoiceConfig(speaker: "Jane", voiceName: "Kore")
]
),
languageCode: "en-US"
)
// Set `responseModalities` to include `audio`.
let config = GenerationConfig(
responseModalities: [.audio],
speechConfig: multiSpeechConfig
)
// Create a `GenerativeModel` instance with a model that supports speech generation.
let model = ai.generativeModel(
modelName: "gemini-3.1-flash-tts-preview",
generationConfig: config
)
// Provide a text prompt that includes the names of the speakers.
let prompt = """
Joe: How's it going today Jane?
Jane: Not too bad, how about you?
"""
// Call `generateContent` to generate the speech output based on your text prompt.
let response = try await model.generateContent(prompt)
// Extract the audio data and handle it for downstream use. For example:
for part in response.inlineDataParts {
let data = part.data // Raw PCM audio bytes (24kHz, 1 channel, 16-bit)
let mimeType = part.mimeType // for example: "audio/pcm"
print("Received audio data with MIME type: \(mimeType)")
// To play back raw PCM audio bytes, you'll need to write your own `playRawPcm` function.
playRawPcm(data: data)
}
Kotlin
কোটলিনের ক্ষেত্রে, এই SDK-এর মেথডগুলো হলো সাসপেন্ড ফাংশন এবং এগুলোকে একটি Coroutine স্কোপ থেকে কল করতে হবে।
// Configure a `SpeechConfig` for multiple speakers, assigning a voice to each speaker.
val multiSpeechConfig = SpeechConfig(
multiSpeakerVoiceConfig = MultiSpeakerVoiceConfig(
speakerVoiceConfigs = listOf(
SpeakerVoiceConfig(speaker = "Joe", voice = Voice("Puck")),
SpeakerVoiceConfig(speaker = "Jane", voice = Voice("Kore"))
)
),
languageCode = "en-US"
)
// Set `responseModalities` to include `AUDIO`.
val config = generationConfig {
responseModalities = listOf(ResponseModality.AUDIO)
speechConfig = multiSpeechConfig
}
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
modelName = "gemini-3.1-flash-tts-preview",
generationConfig = config
)
// Provide a text prompt that includes the names of the speakers.
val prompt = """
Joe: How's it going today Jane?
Jane: Not too bad, how about you?
"""
// Call `generateContent` to generate the speech output based on your text prompt.
val response = model.generateContent(prompt)
// Extract the audio data and handle it for downstream use. For example:
val part = response.candidates.firstOrNull()?.content?.parts?.firstOrNull()
if (part is InlineDataPart) {
val pcmData = part.inlineData // Raw PCM bytes (24kHz, 1 channel, 16-bit)
val mimeType = part.mimeType // for example: "audio/pcm"
// To play back PCM audio data, you'll need to write your own `playAudio` function.
playAudio(pcmData)
}
Java
জাভার জন্য, এই SDK-এর স্ট্রিমিং মেথডগুলো Reactive Streams লাইব্রেরি থেকে একটিPublisher টাইপ রিটার্ন করে।
// Configure a `SpeechConfig` for multiple speakers, assigning a voice to each speaker.
MultiSpeakerVoiceConfig multiSpeakerVoiceConfig = new MultiSpeakerVoiceConfig(
Arrays.asList(
new SpeakerVoiceConfig("Joe", new Voice("Puck")),
new SpeakerVoiceConfig("Jane", new Voice("Kore"))
)
);
SpeechConfig multiSpeechConfig = new SpeechConfig(multiSpeakerVoiceConfig);
// Set `responseModalities` to include `AUDIO`.
GenerationConfig config = new GenerationConfig.Builder()
.setResponseModalities(Collections.singletonList(ResponseModality.AUDIO))
.setSpeechConfig(multiSpeechConfig)
.build();
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.1-flash-tts-preview", config);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// Provide a text prompt that includes the names of the speakers.
String prompt = "Joe: How's it going today Jane?\nJane: Not too bad, how about you?";
Content content = new Content.Builder().addText(prompt).build();
Executor executor = Executors.newSingleThreadExecutor();
// Call `generateContent` to generate the speech output based on your text prompt.
// Extract the audio data and handle it for downstream use.
ListenableFuture<GenerateContentResponse> response = model.generateContent(content);
Futures.addCallback(response, new FutureCallback<GenerateContentResponse>() {
@Override
public void onSuccess(GenerateContentResponse result) {
Part part = result.getCandidates().get(0).getContent().getParts().get(0);
if (part instanceof InlineDataPart) {
byte[] pcmData = ((InlineDataPart) part).getInlineData(); // Raw PCM bytes (24kHz, 1 channel, 16-bit)
String mimeType = ((InlineDataPart) part).getMimeType(); // for example: "audio/pcm"
// To play back PCM audio data, you'll need to write your own `playAudio` function.
playAudio(pcmData);
}
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
}, executor);
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, ResponseModality } from "firebase/ai";
// TODO(developer): Replace with your app's Firebase configuration
const firebaseConfig = { /* ... */ };
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` for multiple speakers, assigning a voice to each speaker.
const generationConfig = {
responseModalities: [ResponseModality.AUDIO],
speechConfig: {
multiSpeakerVoiceConfig: {
speakerVoiceConfigs: [
{ speaker: "Joe", voiceConfig: { prebuiltVoiceConfig: { voiceName: "Puck" } } },
{ speaker: "Jane", voiceConfig: { prebuiltVoiceConfig: { voiceName: "Kore" } } }
]
},
languageCode: "en-US"
}
};
// Create a `GenerativeModel` instance with a model that supports speech generation.
const model = getGenerativeModel(ai, {
model: "gemini-3.1-flash-tts-preview",
generationConfig
});
// Provide a text prompt that includes the names of the speakers.
const prompt = `
Joe: How's it going today Jane?
Jane: Not too bad, how about you?
`;
// Call `generateContent` to generate the speech output based on your text prompt.
const result = await model.generateContent(prompt);
const inlineDataParts = result.response.inlineDataParts();
// Extract the audio data and handle it for downstream use. For example:
if (inlineDataParts?.[0]) {
const pcmBase64 = inlineDataParts[0].inlineData.data; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
const pcmBuffer = Uint8Array.from(atob(pcmBase64), c => c.charCodeAt(0)).buffer;
// To play back a PCM buffer, you'll need to write your own `playAudio` function.
playAudio(pcmBuffer);
}
Dart
import 'package:firebase_ai/firebase_ai.dart';
// Configure a `SpeechConfig` for multiple speakers, assigning a voice to each speaker.
final multiSpeechConfig = SpeechConfig.multiSpeaker(
multiSpeakerVoiceConfig: MultiSpeakerVoiceConfig(
speakerVoiceConfigs: [
SpeakerVoiceConfig(speaker: 'Joe', voiceName: 'Puck'),
SpeakerVoiceConfig(speaker: 'Jane', voiceName: 'Kore'),
],
),
languageCode: 'en-US',
);
// Set `responseModalities` to include `audio`.
final config = GenerationConfig(
responseModalities: [ResponseModality.audio],
speechConfig: multiSpeechConfig,
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
final model = FirebaseAI.googleAI().generativeModel(
model: 'gemini-3.1-flash-tts-preview',
config: config,
);
// Provide a text prompt that includes the names of the speakers.
final prompt = '''
Joe: How's it going today Jane?
Jane: Not too bad, how about you?
''';
// Call `generateContent` to generate the speech output based on your text prompt.
final response = await model.generateContent([Content.text(prompt)]);
// Extract the audio data and handle it for downstream use. For example:
final part = response.candidates.first.content.parts.first;
if (part is InlineDataPart && part.mimeType.startsWith('audio/')) {
final Uint8List pcmData = part.bytes; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
// To play back PCM audio data, you'll need to write your own `playAudio` function.
await playAudio(pcmData);
}
ঐক্য
using Firebase.AI;
// Configure a `SpeechConfig` for multiple speakers, assigning a voice to each speaker.
var multiSpeakerVoiceConfig = new MultiSpeakerVoiceConfig(
new System.Collections.Generic.List<SpeakerVoiceConfig> {
SpeakerVoiceConfig.UsePrebuiltVoice("Joe", "Puck"),
SpeakerVoiceConfig.UsePrebuiltVoice("Jane", "Kore")
}
);
var multiSpeechConfig = SpeechConfig.UseMultiSpeakerVoice(multiSpeakerVoiceConfig);
// Set `responseModalities` to include `Audio`.
var config = new GenerationConfig(
responseModalities: new System.Collections.Generic.List<ResponseModality> { ResponseModality.Audio },
speechConfig: multiSpeechConfig
);
// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Create a `GenerativeModel` instance with a model that supports speech generation.
var model = ai.GetGenerativeModel(
modelName: "gemini-3.1-flash-tts-preview",
generationConfig: config
);
// Provide a text prompt that includes the names of the speakers.
var prompt = "Joe: How's it going today Jane?\nJane: Not too bad, how about you?";
// Call `GenerateContentAsync` to generate the speech output based on your text prompt.
var response = await model.GenerateContentAsync(prompt);
// Extract the audio data and handle it for downstream use. For example:
if (response.Candidates.Count > 0) {
foreach (var part in response.Candidates[0].Content.Parts) {
if (part is ModelContent.InlineDataPart inlineData) {
byte[] pcmData = inlineData.Data; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
// To play back PCM audio data, you'll need to write your own `playAudio` function.
playAudio(pcmData);
}
}
}
প্রতিক্রিয়াটি স্ট্রিম করুন
| এই নমুনাটি চেষ্টা করার আগে, আপনার প্রজেক্ট ও অ্যাপ সেট আপ করার জন্য এই গাইডের ' শুরু করার আগে ' অংশটি সম্পূর্ণ করুন। সেই বিভাগে, আপনি আপনার নির্বাচিত জেমিনি এপিআই প্রোভাইডারের জন্য একটি বোতামেও ক্লিক করবেন, যাতে আপনি এই পৃষ্ঠায় প্রোভাইডার-নির্দিষ্ট বিষয়বস্তু দেখতে পান । |
সম্পূর্ণ অডিও ফাইলটি শেষ হওয়ার জন্য অপেক্ষা না করে, অডিও প্রতিক্রিয়াটি তৈরি হওয়ার সাথে সাথেই স্ট্রিম করার মাধ্যমে আপনি দ্রুততর ইন্টারঅ্যাকশন এবং কম ল্যাটেন্সি অর্জন করতে পারেন।
একক-স্পিকার এবং একাধিক-স্পিকার উভয় কনফিগারেশনের জন্যই তৈরি করা স্পিচের স্ট্রিমিং সমর্থিত। এটি শুধুমাত্র Gemini 3.x TTS মডেল ব্যবহার করার সময়ই সমর্থিত।
স্পিচ রেসপন্স স্ট্রিম করতে, generateContent এর পরিবর্তে generateContentStream কল করুন এবং খণ্ডগুলো আসার সাথে সাথে সেগুলোকে পরিচালনা করুন। নিম্নলিখিত উদাহরণগুলো দেখায় কিভাবে একজন বক্তার প্রতিক্রিয়া স্ট্রিম করতে হয়:
সুইফট
import FirebaseAILogic
// Initialize the Gemini Developer API backend service.
let ai = FirebaseAI.firebaseAI(backend: .googleAI())
// Set `responseModalities` to include `audio`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
let config = GenerationConfig(
responseModalities: [.audio],
speechConfig: SpeechConfig(voiceName: "Kore")
)
// Create a `GenerativeModel` instance with a model that supports speech generation.
let model = ai.generativeModel(
modelName: "gemini-3.1-flash-tts-preview",
generationConfig: config
)
// Provide a text prompt.
let prompt = "Tell me a story about a brave knight."
// Call `generateContentStream` to generate the speech output stream based on your text prompt.
let responseStream = try model.generateContentStream(prompt)
// Extract the audio data and handle it for downstream use. For example:
for try await chunk in responseStream {
for part in chunk.inlineDataParts {
let data = part.data // Raw PCM audio bytes (24kHz, 1 channel, 16-bit)
let mimeType = part.mimeType // for example: "audio/pcm"
// Append the audio chunk to your audio queue/buffer for playback.
appendAudioChunk(data)
}
}
Kotlin
কোটলিনের ক্ষেত্রে, এই SDK-এর মেথডগুলো হলো সাসপেন্ড ফাংশন এবং এগুলোকে একটি Coroutine স্কোপ থেকে কল করতে হবে।
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
val config = generationConfig {
responseModalities = listOf(ResponseModality.AUDIO)
speechConfig = SpeechConfig(voice = Voice("Kore"))
}
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
val model = Firebase.ai(backend = GenerativeBackend.googleAI())
.generativeModel(
modelName = "gemini-3.1-flash-tts-preview",
generationConfig = config
)
// Provide a text prompt.
val prompt = "Tell me a story about a brave knight."
// Call `generateContentStream` to generate the speech output stream based on your text prompt.
// Extract the audio data and handle it for downstream use.
model.generateContentStream(prompt).collect { chunk ->
val part = chunk.candidates.firstOrNull()?.content?.parts?.firstOrNull()
if (part is InlineDataPart) {
val pcmChunk = part.inlineData // Raw PCM bytes (24kHz, 1 channel, 16-bit)
val mimeType = part.mimeType // for example: "audio/pcm"
// Append the audio chunk to your audio queue/buffer for playback.
appendAudioChunk(pcmChunk)
}
}
Java
জাভার জন্য, এই SDK-এর স্ট্রিমিং মেথডগুলো Reactive Streams লাইব্রেরি থেকে একটিPublisher টাইপ রিটার্ন করে।
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
GenerationConfig config = new GenerationConfig.Builder()
.setResponseModalities(Collections.singletonList(ResponseModality.AUDIO))
.setSpeechConfig(new SpeechConfig(new Voice("Kore")))
.build();
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
GenerativeModel ai = FirebaseAI.getInstance(GenerativeBackend.googleAI())
.generativeModel("gemini-3.1-flash-tts-preview", config);
GenerativeModelFutures model = GenerativeModelFutures.from(ai);
// Provide a text prompt.
String prompt = "Tell me a story about a brave knight.";
Content content = new Content.Builder().addText(prompt).build();
// Call `generateContentStream` to generate the speech output stream based on your text prompt.
Publisher<GenerateContentResponse> streamingResponse =
model.generateContentStream(content);
// Extract the audio data and handle it for downstream use.
streamingResponse.subscribe(new Subscriber<GenerateContentResponse>() {
@Override
public void onSubscribe(Subscription s) {
s.request(Long.MAX_VALUE);
}
@Override
public void onNext(GenerateContentResponse chunk) {
Part part = chunk.getCandidates().get(0).getContent().getParts().get(0);
if (part instanceof InlineDataPart) {
byte[] pcmChunk = ((InlineDataPart) part).getInlineData(); // Raw PCM bytes (24kHz, 1 channel, 16-bit)
String mimeType = ((InlineDataPart) part).getMimeType(); // for example: "audio/pcm"
// Append the audio chunk to your audio queue/buffer for playback.
appendAudioChunk(pcmChunk);
}
}
@Override
public void onComplete() {
// Audio stream complete.
}
@Override
public void onError(Throwable t) {
t.printStackTrace();
}
});
Web
import { initializeApp } from "firebase/app";
import { getAI, getGenerativeModel, GoogleAIBackend, ResponseModality } from "firebase/ai";
// TODO(developer): Replace with your app's Firebase configuration
const firebaseConfig = { /* ... */ };
const firebaseApp = initializeApp(firebaseConfig);
// Initialize the Gemini Developer API backend service.
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
// Set `responseModalities` to include `AUDIO`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
const generationConfig = {
responseModalities: [ResponseModality.AUDIO],
speechConfig: {
voiceConfig: { prebuiltVoiceConfig: { voiceName: "Kore" } }
}
};
// Create a `GenerativeModel` instance with a model that supports speech generation.
const model = getGenerativeModel(ai, {
model: "gemini-3.1-flash-tts-preview",
generationConfig
});
// Provide a text prompt.
const prompt = "Tell me a story about a brave knight.";
// Call `generateContentStream` to generate the speech output stream based on your text prompt.
const result = await model.generateContentStream(prompt);
// Extract the audio data and handle it for downstream use. For example:
const playbackQueue = [];
for await (const chunk of result.stream) {
const inlineDataParts = chunk.inlineDataParts();
if (inlineDataParts?.[0]) {
const pcmBase64 = inlineDataParts[0].inlineData.data; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
const pcmBuffer = Uint8Array.from(atob(pcmBase64), c => c.charCodeAt(0)).buffer;
// Append the audio chunk to your audio queue/buffer for playback.
playbackQueue.push(pcmBuffer);
}
}
// To play back an array of PCM buffers in sequence, you'll need to write your own `processPlaybackQueue` function.
processPlaybackQueue(playbackQueue);
Dart
import 'package:firebase_ai/firebase_ai.dart';
// Set `responseModalities` to include `audio`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
final config = GenerationConfig(
responseModalities: [ResponseModality.audio],
speechConfig: SpeechConfig(voiceName: 'Kore'),
);
// Initialize the Gemini Developer API backend service.
// Create a `GenerativeModel` instance with a model that supports speech generation.
final model = FirebaseAI.googleAI().generativeModel(
model: 'gemini-3.1-flash-tts-preview',
config: config,
);
// Provide a text prompt.
final prompt = 'Tell me a story about a brave knight.';
// Call `generateContentStream` to generate the speech output stream based on your text prompt.
final responseStream = model.generateContentStream([Content.text(prompt)]);
// Extract the audio data and handle it for downstream use. For example:
await for (final chunk in responseStream) {
final part = chunk.candidates.first.content.parts.first;
if (part is InlineDataPart && part.mimeType.startsWith('audio/')) {
final Uint8List pcmChunk = part.bytes; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
// Append the audio chunk to your audio queue/buffer for playback.
appendAudioChunk(pcmChunk);
}
}
ঐক্য
using System.Collections.Generic;
using System.Linq;
using Firebase.AI;
// Initialize the Gemini Developer API backend service.
var ai = FirebaseAI.GetInstance(FirebaseAI.Backend.GoogleAI());
// Set `ResponseModalities` to include `Audio`.
// Configure a `SpeechConfig` with your chosen voice name (and optionally a language code).
var config = new GenerationConfig(
responseModalities: new List<ResponseModality> { ResponseModality.Audio },
speechConfig: SpeechConfig.UsePrebuiltVoice("Kore")
);
// Create a `GenerativeModel` instance with a model that supports speech generation.
var model = ai.GetGenerativeModel(
modelName: "gemini-3.1-flash-tts-preview",
generationConfig: config
);
// Provide a text prompt.
var prompt = "Tell me a story about a brave knight.";
// Call `GenerateContentStreamAsync` to generate the speech output stream based on your text prompt.
var responseStream = model.GenerateContentStreamAsync(prompt);
// Extract the audio data and handle it for downstream use. For example:
await foreach (var response in responseStream)
{
var audioParts = response.Candidates.FirstOrDefault().Content.Parts
.OfType<ModelContent.InlineDataPart>();
foreach (var part in audioParts)
{
byte[] pcmChunk = part.Data; // Raw PCM bytes (24kHz, 1 channel, 16-bit)
// Append the audio chunk to your audio queue/buffer for playback.
appendAudioChunk(pcmChunk);
}
}
প্রম্পটের মাধ্যমে স্পিচ আউটপুট নিয়ন্ত্রণ করুন
নির্দিষ্ট প্রম্পটিং কৌশল ব্যবহার করে আপনি উৎপাদিত বক্তৃতার সুর, গতি এবং শৈলীকে প্রভাবিত করতে পারেন।
প্রম্পট কাঠামো এবং অডিও ট্যাগ সম্পর্কিত নিম্নলিখিত উপবিভাগগুলিতে উচ্চ-স্তরের নির্দেশিকা বর্ণনা করা হয়েছে। বিস্তারিত নির্দেশিকার জন্য, এই প্রম্পটিং গাইডটি দেখুন।
প্রম্পট কাঠামো
সর্বোত্তম ফলাফলের জন্য, আপনার প্রম্পটটি নিম্নলিখিত উপাদানগুলো দিয়ে গঠন করুন:
Audio Profile: বক্তার ব্যক্তিত্ব, মূল পরিচয় এবং আর্কিটাইপ বর্ণনা করুন (উদাহরণস্বরূপ,A warm, professional narrator)।Scene: পরিবেশ ও আবেগ বর্ণনা করুন (উদাহরণস্বরূপ,In a quiet libraryবাAmidst a noisy crowd)।Director's Notes: আবেগ, গতি, শৈলী এবং উচ্চারণভঙ্গি বর্ণনা করুন (উদাহরণস্বরূপ,Speak slowly and with mystery)।Sample Context: মডেলটিকে একটি সূচনা বিন্দু দিন (উদাহরণস্বরূপ,The speaker is greeting a close friend)।ট্রান্সক্রিপ্ট : যে মূল লেখাটি বলতে হবে। সর্বোত্তম পারফরম্যান্সের জন্য, নিশ্চিত করুন যে লেখাটির সুর ও প্রেক্ষাপট ভয়েস প্রোফাইল এবং পরিচালকের নির্দেশনার সাথে সামঞ্জস্যপূর্ণ।
উদাহরণ প্রম্পট:
[Audio Profile: A young, energetic male voice]
[Scene: A lively sports broadcast]
[Director's Notes: Speak fast, with high energy and excitement]
[Sample Context: The game just ended with a last-second touchdown]
Welcome back fans! What an incredible game we're witnessing today!
অডিও ট্যাগ
মডেলের পারফরম্যান্সকে নির্দেশনা দিতে আপনি সরাসরি আপনার টেক্সট প্রম্পটে ফরম্যাটিং ট্যাগ যুক্ত করতে পারেন।
শুধুমাত্র Gemini 3.x TTS মডেলগুলো ব্যবহার করার সময়ই অডিও ট্যাগ সমর্থিত হয়।
সাধারণত ব্যবহৃত ট্যাগগুলির মধ্যে রয়েছে:
-
[whispers]: ফিসফিস করে কথা বলা -
[laughs]: হাসি যোগ করতে -
[giggles]: হাসি যোগ করতে -
[sighs]: একটি দীর্ঘশ্বাস যোগ করতে -
[gasp]: বিস্ময় প্রকাশ করা -
[shouting]: চিৎকার করা -
[excited]: উত্তেজিতভাবে কথা বলা -
[serious]: গুরুত্ব সহকারে কথা বলা -
[sighs whispers]: সম্মিলিত আবেগ (আপনি ট্যাগগুলো একত্রিত করতে পারেন)
অডিও ট্যাগ ব্যবহার করার সময় নিম্নলিখিত বিষয়গুলো লক্ষ্য করুন:
কোনো সম্পূর্ণ তালিকা নেই : সমর্থিত ট্যাগগুলির কোনো নির্দিষ্ট তালিকা নেই। আউটপুট কীভাবে পরিবর্তিত হয় তা দেখতে আপনি বিভিন্ন আবেগ এবং অভিব্যক্তি (যেমন
[bored],[sarcastically], বা এমনকি[like dracula]) নিয়ে পরীক্ষা করতে পারেন।অ-ইংরেজি টেক্সট প্রম্পট : আপনার টেক্সট প্রম্পটটি ইংরেজিতে না থাকলেও, সর্বোত্তম ফলাফলের জন্য আপনার ইংরেজি অডিও ট্যাগ ব্যবহার করা উচিত।
উদাহরণ প্রম্পট:
I have a secret to tell you. [whispers] I found the hidden treasure. [laughs] I can't believe it!
সীমাবদ্ধতা এবং প্রয়োজনীয়তা
স্পিচ জেনারেশন ব্যবহার করার সময় নিম্নলিখিত সীমাবদ্ধতা এবং প্রয়োজনীয়তাগুলো সম্পর্কে সচেতন থাকুন:
মাল্টি-স্পিকার কনফিগারেশনটি ঠিক ২টি স্পিকার সমর্থন করে।
নিম্নলিখিত বৈশিষ্ট্যগুলি শুধুমাত্র Gemini 3.x TTS মডেল ব্যবহার করার সময় সমর্থিত হয়: স্ট্রিমিং, অডিও ট্যাগ এবং অতিরিক্ত স্বয়ংক্রিয়ভাবে শনাক্তকৃত ভাষা।
gemini-3.1-flash-tts-preview এর জন্য সীমাবদ্ধতা
- কণ্ঠস্বরের অসামঞ্জস্যতা : আপনার প্রম্পটের সুর এবং প্রেক্ষাপট যদি বক্তার প্রোফাইলের সাথে না মেলে, তাহলে মডেলের আউটপুট সবসময় নির্বাচিত বক্তার সাথে হুবহু নাও মিলতে পারে (উদাহরণস্বরূপ, একজন গম্ভীর পুরুষ কণ্ঠের ব্যক্তি একটি ছোট মেয়ের মতো কথা বলার চেষ্টা করছেন)। নিশ্চিত করুন যে আপনার প্রম্পটের প্রেক্ষাপট কণ্ঠস্বরের সাথে মেলে।
- দীর্ঘ আউটপুট : কয়েক মিনিটের বেশি দীর্ঘ অডিওর ক্ষেত্রে কথার মান ও সামঞ্জস্যে তারতম্য ঘটতে পারে। আমরা দীর্ঘ টেক্সট প্রম্পটগুলোকে ছোট ছোট অংশে ভাগ করার পরামর্শ দিই।
- মাঝে মাঝে টেক্সট টোকেন ফেরত আসা : মডেলটি মাঝে মাঝে অডিও টোকেনের পরিবর্তে টেক্সট টোকেন ফেরত দেয়, যার ফলে অনুরোধটি
500ত্রুটির সাথে ব্যর্থ হয়। যেহেতু এটি এলোমেলোভাবে অল্প সংখ্যক অনুরোধে ঘটে, তাই আপনার অ্যাপে পুনরায় চেষ্টা করার লজিক প্রয়োগ করা উচিত। - ক্লাসিফায়ারের ভুল প্রত্যাখ্যান : অস্পষ্ট প্রম্পট স্পিচ সিন্থেসিস ক্লাসিফায়ারকে ব্যর্থ করে দিতে পারে, যার ফলে অনুরোধটি প্রত্যাখ্যাত হতে পারে (
PROHIBITED_CONTENT) অথবা মডেলটি আপনার স্টাইল নির্দেশাবলী উচ্চস্বরে পড়ে শোনাতে পারে। এটি এড়ানোর জন্য, প্রম্পটের শুরুতে একটি স্পষ্ট ভূমিকা (যেমনAudio ProfileএবংDirector's Notes) সহ একটি সুগঠিত প্রম্পট ব্যবহার করুন।
সমর্থিত কণ্ঠস্বর এবং ভাষা
জেমিনি টিটিএস মডেলগুলো টেক্সট ইনপুট গ্রহণ করে এবং অডিও আউটপুট তৈরি করে, তাই এর প্রতিক্রিয়াটি হলো স্বয়ং সংশ্লেষিত কথন। নিম্নলিখিত উপবিভাগগুলোতে সেই সমর্থিত কণ্ঠস্বর এবং ভাষাগুলোর তালিকা দেওয়া হয়েছে, যেগুলোতে জেমিনি টিটিএস মডেলগুলো "কথা বলতে" (বা প্রতিক্রিয়া জানাতে) পারে।
ভয়েসগুলো বহুভাষিক, যার মানে হলো আপনি একই ভয়েস ব্যবহার করে সমর্থিত যেকোনো ভাষায় কথা বলতে পারবেন। উদাহরণস্বরূপ, আপনি ভয়েসটি Kore ভাষায় সেট করে স্প্যানিশ, হিন্দি এবং ভিয়েতনামী ভাষায় কিছু টেক্সট প্রম্পট পাঠাতে পারেন। উত্তরগুলো সবই কোরিয়ান ভয়েসে আসবে, কিন্তু প্রতিটি ভিন্ন ভিন্ন ভাষায়।
কণ্ঠস্বরের নাম
জেমিনি টিটিএস মডেলগুলো ৩০টি ভিন্ন সিন্থেসাইজড এইচডি ভয়েস সমর্থন করে, যার প্রত্যেকটির স্বতন্ত্র বৈশিষ্ট্য রয়েছে। নিচের অংশটি প্রসারিত করে আপনি রেসপন্স ভয়েস অপশনগুলোর তালিকা দেখতে এবং প্রতিটি ভয়েসের ডেমো শুনতে পারবেন ।
| কণ্ঠের নাম | বর্ণনা | লিঙ্গ | ডেমো |
|---|---|---|---|
Achernar | নরম | মহিলা | |
Achird | বন্ধুত্বপূর্ণ | পুরুষ | |
Algenib | নুড়িময় | পুরুষ | |
Algieba | মসৃণ | পুরুষ | |
Alnilam | দৃঢ় | পুরুষ | |
Aoede | বাতাস বইছে | মহিলা | |
Autonoe | উজ্জ্বল | মহিলা | |
Callirrhoe | সহজ-সরল | মহিলা | |
Charon | তথ্যপূর্ণ | পুরুষ | |
Despina | মসৃণ | মহিলা | |
Enceladus | শ্বাসপ্রশ্বাস | পুরুষ | |
Erinome | পরিষ্কার | মহিলা | |
Fenrir | উত্তেজিত | পুরুষ | |
Gacrux | পরিপক্ক | মহিলা | |
Iapetus | পরিষ্কার | পুরুষ | |
Kore | দৃঢ় | মহিলা | |
Laomedeia | উচ্ছ্বসিত | মহিলা | |
Leda | যৌবন | মহিলা | |
Orus | দৃঢ় | পুরুষ | |
Puck | উচ্ছ্বসিত | পুরুষ | |
Pulcherrima | ফরোয়ার্ড | মহিলা | |
Rasalgethi | তথ্যপূর্ণ | পুরুষ | |
Sadachbia | প্রাণবন্ত | পুরুষ | |
Sadaltager | জ্ঞানী | পুরুষ | |
Schedar | এমনকি | পুরুষ | |
Sulafat | উষ্ণ | মহিলা | |
Umbriel | সহজ-সরল | পুরুষ | |
Vindemiatrix | কোমল | মহিলা | |
Zephyr | উজ্জ্বল | মহিলা | |
Zubenelgenubi | নৈমিত্তিক | পুরুষ |
ভাষা
জেমিনি টিটিএস মডেলগুলো আপনার টেক্সট প্রম্পট থেকে নিম্নলিখিত ভাষাগুলো স্বয়ংক্রিয়ভাবে শনাক্ত করতে পারে। উৎপাদিত স্পিচটি সেই ভাষাতেই হবে।
উল্লেখ্য যে, আপনি চাইলে আপনার স্পিচ কনফিগারেশনে একটি ল্যাঙ্গুয়েজ কোড স্পষ্টভাবে সেট করতে পারেন।
সকল অডিও-জেনারেটিং মডেল দ্বারা সমর্থিত ভাষাসমূহ
| ভাষা | বিসিপি-৪৭ কোড | ভাষা | বিসিপি-৪৭ কোড |
|---|---|---|---|
| আরবি (মিশরীয়) | ar-EG | জার্মান (জার্মানি) | ডি-ডিই |
| ইংরেজি (মার্কিন যুক্তরাষ্ট্র) | en-US | স্প্যানিশ (মার্কিন যুক্তরাষ্ট্র) | es-US |
| ফরাসি (ফ্রান্স) | fr-FR | হিন্দি (ভারত) | হাই-ইন |
| ইন্দোনেশিয়ান (ইন্দোনেশিয়া) | আইডি-আইডি | ইতালীয় (ইতালি) | আইটি-আইটি |
| জাপানি (জাপান) | জা-জেপি | কোরিয়ান (কোরিয়া) | কো-কেআর |
| পর্তুগিজ (ব্রাজিল) | পিটি-বিআর | রাশিয়ান (রাশিয়া) | ru-RU |
| ডাচ (নেদারল্যান্ডস) | এনএল-এনএল | পোলিশ (পোল্যান্ড) | pl-PL |
| থাই (থাইল্যান্ড) | তম-টিএইচ | তুর্কি (তুরস্ক) | tr-TR |
| ভিয়েতনামী (ভিয়েতনাম) | ভি-ভিএন | রোমানিয়ান (রোমানিয়া) | ro-RO |
| ইউক্রেনীয় (ইউক্রেন) | ইউকে-ইউএ | বাংলা (বাংলাদেশ) | bn-BD |
| ইংরেজি (ভারত) | en-IN এবং hi-IN বান্ডেল | মারাঠি (ভারত) | মিঃ-আইএন |
| তামিল (ভারত) | তা-আইএন | তেলুগু (ভারত) | te-IN |
অডিও-জেনারেটিং 3.x মডেল দ্বারা সমর্থিত অতিরিক্ত ভাষাসমূহ
| ভাষা | বিসিপি-৪৭ কোড | ভাষা | বিসিপি-৪৭ কোড |
|---|---|---|---|
| আফ্রিকান | আফ | ফিলিপিনো | ফিল |
| আলবেনিয়ান | বর্গ | ফিনিশ | ফি |
| আমহারিক | সকাল | গ্যালিসিয়ান | জিএল |
| আর্মেনীয় | হাই | জর্জিয়ান | কা |
| আজারবাইজানীয় | আজ | গ্রীক | এল |
| বাস্ক | ইউরোপীয় ইউনিয়ন | গুজরাটি | গু |
| বেলারুশীয় | হতে | হাইতিয়ান ক্রেওল | এইচটি |
| বুলগেরীয় | বিজি | হিব্রু | সে |
| বর্মী | আমার | হাঙ্গেরীয় | হু |
| কাতালান | ca | আইসল্যান্ডীয় | হয় |
| সেবুয়ানো | সেব | জাভানিজ | jv |
| চীনা, ম্যান্ডারিন | সিএমএন | কন্নড় | কেএন |
| ক্রোয়েশীয় | এইচআর | কোঙ্কনি | কোক |
| চেক | সিএস | লাও | লো |
| ড্যানিশ | দা | ল্যাটিন | লা |
| এস্তোনিয়ান | এবং | লাতভিয়ান | এলভি |
| লিথুয়ানিয়ান | এলটি | লুক্সেমবার্গীয় | পাউন্ড |
| ম্যাসিডোনিয়ান | এমকে | মৈথিলী | মাই |
| মালাগাসি | মিলিগ্রাম | মালয় | এমএস |
| মালয়ালম | এমএল | মঙ্গোলীয় | এমএন |
| নেপালি | নে | নরওয়েজিয়ান, বোকমাল | nb |
| নরওয়েজিয়ান, নিনরস্ক | এনএন | ওড়িয়া | অথবা |
| পশতু | পিএস | ফার্সি | ফা |
| পাঞ্জাবি | পা | সার্বিয়ান | এসআর |
| সিন্ধি | এসডি | সিংহলী | সি |
| স্লোভাক | এসকে | স্লোভেনীয় | এসএল |
| সোয়াহিলি | এসডব্লিউ | সুইডিশ | এসভি |
| উর্দু | উর |
(ঐচ্ছিক) স্পষ্টভাবে একটি ভাষা কোড সেট করুন
আপনি আপনার স্পিচ কনফিগারেশনে কোনো ল্যাঙ্গুয়েজ কোড নির্দিষ্ট না করলে, মডেলটি আপনার টেক্সট প্রম্পট থেকে ভাষাটি স্বয়ংক্রিয়ভাবে শনাক্ত করে নেয় ।
তবে, আপনি ঐচ্ছিকভাবে ভাষাটি স্পষ্টভাবে সেট করতে পারেন (স্পিচ কনফিগারেশনে languageCode প্যারামিটার ব্যবহার করে)। এটি করার জন্য, আপনাকে নিম্নলিখিত সমর্থিত BCP-47 লোকেল কোডগুলির মধ্যে একটি ব্যবহার করতে হবে:
- আরবি :
ar-XA - বাংলা :
bn-IN - চীনা (ম্যান্ডারিন) :
cmn-CN - ডাচ :
nl-NL - ইংরেজি :
en-US,en-GB,en-AU,en-IN - ফরাসি :
fr-FR,fr-CA - জার্মান :
de-DE - গুজরাটি :
gu-IN - হিন্দি :
hi-IN - ইন্দোনেশিয়ান :
id-ID - ইতালীয় :
it-IT - জাপানি :
ja-JP - কন্নড় :
kn-IN - কোরিয়ান :
ko-KR - মালয়ালম :
ml-IN - মারাঠি :
mr-IN - পোলিশ :
pl-PL - পর্তুগিজ :
pt-BR - রুশ :
ru-RU - Spanish :
es-US,es-ES - তামিল :
ta-IN - তেলুগু :
te-IN - থাই :
th-TH - তুর্কি :
tr-TR - ভিয়েতনামী :
vi-VN
তুমি আর কী করতে পারো?
- মডেলে দীর্ঘ প্রম্পট পাঠানোর আগে টোকেন গণনা করার পদ্ধতি শিখে নিন।
- উৎপাদনের প্রস্তুতি নিয়ে ভাবতে শুরু করুন ( উৎপাদন চেকলিস্টটি দেখুন):
- অননুমোদিত ক্লায়েন্টদের অপব্যবহার থেকে জেমিনি এপিআইকে সুরক্ষিত রাখতে যত তাড়াতাড়ি সম্ভব Firebase App Check প্রয়োগ করুন ।
- Firebase Remote Config অথবা সার্ভার প্রম্পট টেমপ্লেট ব্যবহার করুন, যাতে আপনার অ্যাপের নতুন সংস্করণ প্রকাশ না করেই আপনার AI ফিচারের কনফিগারেশনে (যেমন মডেলের নাম) চাহিদা অনুযায়ী পরিবর্তন আনতে পারেন।
অন্যান্য ক্ষমতাগুলো পরীক্ষা করে দেখুন
- একাধিক পালাবিশিষ্ট কথোপকথন (চ্যাট) গড়ে তুলুন।
- শুধুমাত্র পাঠ্য-ভিত্তিক প্রম্পট থেকে টেক্সট তৈরি করুন।
- টেক্সট এবং মাল্টিমোডাল প্রম্পট উভয় থেকেই কাঠামোগত আউটপুট (যেমন JSON) তৈরি করুন ।
- টেক্সট এবং মাল্টিমোডাল প্রম্পট উভয় থেকেই ছবি তৈরি ও সম্পাদনা করুন ।
- Gemini Live API ব্যবহার করে ইনপুট এবং আউটপুট (অডিও সহ) স্ট্রিম করুন ।
- একটি জেমিনি মডেলকে আপনার অ্যাপের অন্যান্য অংশ এবং বাহ্যিক সিস্টেম ও তথ্যের সাথে সংযুক্ত করতে বিভিন্ন টুল (যেমন ফাংশন কলিং এবং
Google Search বাGoogle Maps মাধ্যমে গ্রাউন্ডিং) ব্যবহার করুন।
কন্টেন্ট তৈরি নিয়ন্ত্রণ করার উপায় জানুন
- প্রম্পট ডিজাইন বুঝুন , যার মধ্যে রয়েছে সর্বোত্তম অনুশীলন, কৌশল এবং উদাহরণমূলক প্রম্পট।
- মডেলের প্যারামিটারগুলো যেমন সর্বোচ্চ আউটপুট টোকেন, পুনরাবৃত্ত আউটপুট টোকেনের সম্ভাবনা ইত্যাদি কনফিগার করুন ।
- ক্ষতিকর বলে বিবেচিত হতে পারে এমন প্রতিক্রিয়া পাওয়ার সম্ভাবনা নিয়ন্ত্রণ করতে সুরক্ষা সেটিংস ব্যবহার করুন ।
সমর্থিত মডেলগুলো সম্পর্কে আরও জানুন
বিভিন্ন ব্যবহারের জন্য উপলব্ধ মডেল এবং সেগুলোর কোটা ও মূল্য সম্পর্কে জানুন।Firebase AI Logic ব্যবহারের অভিজ্ঞতা সম্পর্কে মতামত দিন।