Plugin Teks Berbangan ke Pidato (Swift, Kotlin)
OSX version: 10.15Contoh aplikasi dari cabang macos_app
Situs web dari Contoh Direktori.
Kemajuan Pembaruan di Web
Pembaruan kemajuan hanya didukung untuk sinstesis ucapan asli. Gunakan mesin default untuk memastikan dukungan untuk pembaruan kemajuan. Chromium#41195426
Ubah versi SDK Android minimum menjadi 21 (atau lebih tinggi) di file android/app/build.gradle Anda.
minSdkVersion 21Perbarui versi plugin Kotlin Gradle
Ubah verion plugin Gradle Kotlin menjadi 1.9.10 .
Jika proyek Anda dibuat dengan versi flutter sebelum 3.19, buka file android/build.gradle dan perbarui ext.kotlin_version :
ext . kotlin_version = ' 1.9.10 ' Kalau tidak, kunjungi android/settings.gradle dan perbarui verion plugin org.jetbrains.kotlin.android :
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false Aplikasi yang menargetkan Android 11 yang menggunakan teks-ke-speech harus mendeklarasikan TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE dalam elemen queries manifesnya.
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries > Android TTS tidak mendukung fungsi jeda secara asli, jadi kami telah menerapkan pekerjaan di sekitar. Kami menggunakan metode onRangeStart() asli untuk menentukan indeks awal saat pause dipanggil. Kami menggunakan indeks itu untuk membuat teks baru di lain waktu speak dipanggil. Karena menggunakan onRangeStart() , jeda berfungsi pada versi SDK> = 26. Juga, jika menggunakan start dan end offset di dalam setProgressHandler() , Anda harus melacaknya jika menggunakan pause karena mereka akan memperbarui setelah teks baru dibuat ketika speak dipanggil setelah dijeda.
await flutterTts. pause ()Ada masalah yang diketahui dengan mengintegrasikan plugin yang menggunakan Swift ke dalam proyek flutter yang dibuat dengan Templat Objective-C. Flutter#16049
Contoh
Untuk menggunakan plugin ini:
dependencies :
flutter :
sdk : flutter
flutter_tts : FlutterTts flutterTts = FlutterTts ();
Untuk mengatur instance audio bersama (hanya iOS):
await flutterTts. setSharedInstance ( true );Untuk mengatur kategori audio dan opsi dengan mode opsional (hanya iOS). Pengaturan berikut memungkinkan musik latar dan sesi audio dalam aplikasi untuk melanjutkan secara bersamaan:
await flutterTts. setIosAudioCategory ( IosTextToSpeechAudioCategory .ambient,
[
IosTextToSpeechAudioCategoryOptions .allowBluetooth,
IosTextToSpeechAudioCategoryOptions .allowBluetoothA2DP,
IosTextToSpeechAudioCategoryOptions .mixWithOthers
],
IosTextToSpeechAudioMode .voicePrompt
);Untuk menunggu penyelesaian.
await flutterTts. awaitSpeakCompletion ( true );Untuk menunggu sintesis untuk mengajukan penyelesaian.
await flutterTts. awaitSynthCompletion ( true ); Future _speak () async {
var result = await flutterTts. speak ( "Hello World" );
if (result == 1 ) setState (() => ttsState = TtsState .playing);
}
Future _stop () async {
var result = await flutterTts. stop ();
if (result == 1 ) setState (() => ttsState = TtsState .stopped);
}
List < dynamic > languages = await flutterTts.getLanguages;
await flutterTts. setLanguage ( "en-US" );
await flutterTts. setSpeechRate ( 1.0 );
await flutterTts. setVolume ( 1.0 );
await flutterTts. setPitch ( 1.0 );
await flutterTts. isLanguageAvailable ( "en-US" );
// iOS, Android and Web only
//see the "Pausing on Android" section for more info
await flutterTts. pause ();
// iOS, macOS, and Android only
// The last parameter is an optional boolean value for isFullPath (defaults to false)
await flutterTts. synthesizeToFile ( "Hello World" , Platform .isAndroid ? "tts.wav" : "tts.caf" , false );
// Each voice is a Map containing at least these keys: name, locale
// - Windows (UWP voices) only: gender, identifier
// - iOS, macOS only: quality, gender, identifier
// - Android only: quality, latency, network_required, features
List < Map > voices = await flutterTts.getVoices;
await flutterTts. setVoice ({ "name" : "Karen" , "locale" : "en-AU" });
// iOS, macOS only
await flutterTts. setVoice ({ "identifier" : "com.apple.voice.compact.en-AU.Karen" });
// iOS only
await flutterTts. setSharedInstance ( true );
// Android only
await flutterTts. speak ( "Hello World" , focus : true );
await flutterTts. setSilence ( 2 );
await flutterTts.getEngines;
await flutterTts.getDefaultVoice;
await flutterTts. isLanguageInstalled ( "en-AU" );
await flutterTts. areLanguagesInstalled ([ "en-AU" , "en-US" ]);
await flutterTts. setQueueMode ( 1 );
await flutterTts.getMaxSpeechInputLength;
await flutterTts. setAudioAttributesForNavigation ();flutterTts. setStartHandler (() {
setState (() {
ttsState = TtsState .playing;
});
});
flutterTts. setCompletionHandler (() {
setState (() {
ttsState = TtsState .stopped;
});
});
flutterTts. setProgressHandler (( String text, int startOffset, int endOffset, String word) {
setState (() {
_currentWord = word;
});
});
flutterTts. setErrorHandler ((msg) {
setState (() {
ttsState = TtsState .stopped;
});
});
flutterTts. setCancelHandler ((msg) {
setState (() {
ttsState = TtsState .stopped;
});
});
// Android, iOS and Web
flutterTts. setPauseHandler ((msg) {
setState (() {
ttsState = TtsState .paused;
});
});
flutterTts. setContinueHandler ((msg) {
setState (() {
ttsState = TtsState .continued;
});
});
Untuk bantuan memulai dengan flutter, lihat dokumentasi online kami.
Untuk bantuan mengedit kode plugin, lihat dokumentasi.