С помощью GenAI Text to Speech API в ML Kit можно синтезировать текст в речь. Text to Speech API использует модель генеративного ИИ, чтобы обеспечивать высокое качество синтеза речи.
Мы рекомендуем по возможности использовать ML Kit Text to Speech API, поскольку он обеспечивает очень естественное звучание голосов. Если этот API недоступен, вы можете использовать TextToSpeech API платформы Android.
Основные возможности
- Единые возможности скачивания и логического вывода в одном SDK.
- API, ориентированный на Kotlin, который использует сопрограммы и Flow для потоковой передачи статуса воспроизведения и аудио.
Требования
Чтобы использовать Text-to-Speech 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.
- У вас установлена последняя версия приложения Распознавание и синтез речи (
com.google.android.tts) из Google Play. Если приложение отсутствует или устарело, при реализации синтеза речи методcheckStatus()возвращаетFeatureStatus.UNAVAILABLE. - В вашем проекте используется минимальная версия SDK (
minSdk) 26 или выше.
Начать
Для начала добавьте зависимость ML Kit Text to Speech в файл build.gradle.kts (или build.gradle) на уровне модуля:
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
Чтобы использовать Text-to-Speech API, выполните следующие действия:
- Инициализируйте клиент: создайте экземпляр клиента
SpeechSynthesizer, передав объект конфигурацииSpeechSynthesizerOptions. Для поддержки всех языков достаточно одного экземпляра клиента. Региональные настройки, указанные в объекте options, определяют только список языков, возвращаемый методом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 Text to Speech API поддерживает следующие голоса. Выберите голос по названию, используя свойство VoiceInfo.name.
- star02: женский, средний тон
- star04: мужской, средне-высокий тон
- star05: мужской, низкий тон
- star08: женский, низкий тон
- star11: мужской, средний тон, молодой голос
- star12: женский, средне-высокий тон
- star13: мужской, средний тон
- star16: женский, средне-низкий тон
Поддерживаемые языки
ML Kit Text to Speech API поддерживает следующие языки:
- Арабский (ar-XA)
- Датский (da-DK)
- Немецкий (de-DE)
- Английский (en-GB)
- Английский (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(). |
| Скачивание не выполняется или прерывается. | Нет подключения к Интернету. | Повторите попытку, когда устройство будет подключено к интернету. |