ML Kit-এর GenAI টেক্সট-টু-স্পিচ API-এর সাহায্যে, আপনি টেক্সট কন্টেন্টকে স্পিচ অডিওতে সিন্থেসাইজ করতে পারবেন। Text to Speech API, খুব ভালো কোয়ালিটির স্পিচ সিন্থেসিস প্রদান করতে জেনারেটিভ AI মডেল ব্যবহার করে।
আমরা ML Kit টেক্সট-টু-স্পিচ API ব্যবহার করার সাজেশন দিই, কারণ এটি
খুবই মানুষের মতো ভয়েস প্রদান করে, তবে এটি উপলভ্য না থাকলে আপনি পরিবর্তে
Android প্ল্যাটফর্ম
TextToSpeech API
ব্যবহার করতে পারেন।
মূল ক্ষমতা
- একটি SDK-এর মধ্যে ইউনিফায়েড ডাউনলোড ও ইনফারেন্সের বিকল্প।
- Kotlin-ফার্স্ট API যা প্লেব্যাক স্ট্যাটাস ও অডিও স্ট্রিম করার জন্য Coroutines ও Flow ব্যবহার করে।
পূর্বশর্ত
টেক্সট-টু-স্পিচ API ব্যবহার করতে, আপনাকে নিম্নলিখিত শর্ত পূরণ করতে হবে:
- আপনার কাছে নিম্নলিখিত কাজ করে এমন ডিভাইসগুলির মধ্যে একটি আছে:
- Google: Pixel 8, Pixel 9, Pixel 10, Pixel 11
- Samsung: Galaxy S25, Galaxy S26, Galaxy Z Fold8, Galaxy Z Fold8 Ultra, Galaxy Z Flip8
- আপনার কাছে Google Play থেকে ডাউনলোড করা
Speech Recognition & Synthesis অ্যাপ-এর
লেটেস্ট ভার্সন (
com.google.android.tts) আছে। অ্যাপটি না থাকলে বা পুরনো হলে, টেক্সট-টু-স্পিচ প্রয়োগ করার সময়checkStatus()পদ্ধতিFeatureStatus.UNAVAILABLEরিটার্ন করে। - আপনার প্রোজেক্টে SDK (
minSdk) ভার্সন ২৬ বা তার চেয়ে বেশি ব্যবহার করা হয়।
শুরু করুন
শুরু করতে, আপনার মডিউল-লেভেল
build.gradle.kts (বা build.gradle) ফাইলে ML Kit টেক্সট-টু-স্পিচ ডিপেন্ডেন্সি যোগ করুন:
Kotlin
dependencies {
// ML Kit GenAI TTS SDK
implementation("com.google.mlkit:genai-text-to-speech:1.0.0-alpha1")
}
Groovy
dependencies {
// ML Kit GenAI TTS SDK
implementation 'com.google.mlkit:genai-text-to-speech:1.0.0-alpha1'
}
Text to Speech API ইন্টিগ্রেট করা
টেক্সট-টু-স্পিচ API ব্যবহার করতে, এইসব ধাপ অনুসরণ করুন:
- ক্লায়েন্ট ইনিশিয়ালাইজ করুন:
SpeechSynthesizerOptionsকনফিগারেশন অবজেক্ট পাস করেSpeechSynthesizerক্লায়েন্ট ইনস্ট্যান্স তৈরি করুন। সব ভাষা সাপোর্ট করার জন্য আপনার শুধু একটি ক্লায়েন্ট ইনস্ট্যান্স প্রয়োজন। আপনার বিকল্প অবজেক্টে উল্লেখ করা লোকেল শুধুgetSupportedVoices()পদ্ধতির মাধ্যমে ফেরত আসা ডিফল্ট ভাষার তালিকা নির্ধারণ করে। - মডেল ডাউনলোড করুন: আপনার টার্গেট ভয়েসের উপলভ্যতা চেক করুন। স্ট্যাটাস
FeatureStatus.DOWNLOADABLEহলে, ডিভাইসে ভয়েস মডেল ডাউনলোড করতেdownload()মেথড কল করুন। - কন্টেন্ট সিন্থেসাইজ করুন: আপনার ইনপুট টেক্সট ও টার্গেট ভয়েস সহ
একটি
SpeechSynthesizerRequestঅবজেক্ট তৈরি করুন। অডিও জেনারেট করতেsynthesize()মেথড কল করুন এবং প্লেব্যাক স্ট্যাটাস আপডেট ও অডিও চাঙ্ক সংগ্রহ করুন।
// Initialize the `SpeechSynthesizer` client.
// One client serves every language. `Locale.US` is only the default list locale.
val options = speechSynthesizerOptions(Locale.US)
val client = SpeechSynthesis.getClient(options)
// Query voices for multiple languages using the same client instance.
val englishVoice = client.getSupportedVoices().first() // Uses the default `Locale.US`
val frenchVoice = client.getSupportedVoices(Locale.FRANCE).first()
// Check and download a voice model (for example, the French voice model).
if (client.checkStatus(frenchVoice) == FeatureStatus.DOWNLOADABLE) {
client.download(frenchVoice).collect { status -> println("Download status: $status") }
}
// Construct the request.
// The `VoiceInfo` instance, `frenchVoice` here, determines the spoken language.
val request = SpeechSynthesizerRequest(
input = SpeechSynthesizerRequest.Input.Text("Bonjour tout le monde", frenchVoice),
audioAttributes = AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_SPEECH)
.build()
)
// Speak and collect streaming audio or status.
client.synthesize(request).collect { response ->
when (response) {
is SpeechSynthesizerResponse.StatusUpdate -> println("Playback status: ${response.status}")
is SpeechSynthesizerResponse.AudioAvailable -> println("Audio chunk: ${response.audio.size} bytes")
is SpeechSynthesizerResponse.Error -> println("Error: ${response.errorCode}")
}
}
// Release resources when done.
client.close()
যেসব ভয়েস ব্যবহার করা যায়
ML Kit টেক্সট-টু-স্পিচ API-তে নিম্নলিখিত ভয়েস কাজ করে। VoiceInfo.name প্রপার্টি ব্যবহার করে
নাম অনুযায়ী ভয়েস বেছে নিন।
- star02: মহিলা, মিডিয়াম পিচ
- star04: পুরুষ, মিডিয়াম-হাই পিচ
- star05: পুরুষ, লো পিচ
- star08: মহিলা, লো পিচ
- star11: পুরুষ, মিডিয়াম পিচ, অল্পবয়সী কণ্ঠস্বর
- star12: মহিলা, মাঝারি-উচ্চ পিচ
- star13: পুরুষ, মিডিয়াম পিচ
- star16: মহিলা, মিডিয়াম-লো পিচ
যেসব ভাষায় এটি ব্যবহার করা যায়
ML Kit টেক্সট-টু-স্পিচ API-তে নিম্নলিখিত লোকেল কাজ করে:
- আরবি (ar-XA)
- ড্যানিশ (da-DK)
- জার্মান (de-DE)
- English (en-GB)
- English (en-US)
- স্প্যানিশ (es-ES)
- স্প্যানিশ (es-US)
- ফরাসি (fr-CA)
- ফরাসি (fr-FR)
- হিন্দি (hi-IN)
- ইন্দোনেশিয়ান (id-ID)
- ইতালিয়ান (it-IT)
- জাপানি (ja-JP)
- কোরিয়ান (ko-KR)
- নরওয়েজিয়ান (nb-NO)
- ডাচ (nl-NL)
- পোলিশ (pl-PL)
- পর্তুগিজ (pt-BR)
- রাশিয়ান (ru-RU)
- সুইডিশ (sv-SE)
- তুর্কি (tr-TR)
সেট-আপ সংক্রান্ত সাধারণ সমস্যা
এখানে কিছু সাধারণ সমস্যা এবং সমস্যা সমাধানের পরামর্শ দেওয়া হল:
| সমস্যা | সম্ভাব্য কারণ | সাজেস্ট করা সমাধান |
|---|---|---|
ভয়েস তালিকা (getSupportedVoices() পদ্ধতি থেকে) খালি আছে। |
ডিভাইসটি কাজ করে না অথবা স্পিচ রিকগনিশন এবং সিন্থেসিস অ্যাপটি নেই বা পুরনো হয়ে গেছে। | আপনার ডিভাইস কাজ করে কিনা তা চেক করুন এবং স্পিচ রিকগনিশন ও সিন্থেসিস অ্যাপ আপডেট করুন। |
checkStatus() পদ্ধতি FeatureStatus.UNAVAILABLE রিটার্ন করে। |
ডিভাইসটি কাজ করছে না অথবা স্পিচ রিকগনিশন এবং সিন্থেসিস অ্যাপটি নেই বা পুরনো হয়ে গেছে। | আপনার ডিভাইস কাজ করে কিনা তা চেক করুন এবং স্পিচ রিকগনিশন ও সিন্থেসিস অ্যাপ আপডেট করুন। |
checkStatus() পদ্ধতি FeatureStatus.DOWNLOADABLE রিটার্ন করে। |
ডিভাইসে এখনও ভয়েস ডাউনলোড করা হয়নি। | download() মেথড কল করুন এবং synthesize() মেথড কল করার আগে এটি শেষ হওয়ার জন্য অপেক্ষা করুন। |
| ডাউনলোড করা যাচ্ছে না বা ডাউনলোড হচ্ছে না। | কোনও নেটওয়ার্ক কানেকশন নেই। | ডিভাইস অনলাইন হলে আবার চেষ্টা করুন। |