Плагин текста трепета
OSX version: 10.15Пример приложения из филиала macos_app
Веб -сайт из примера каталога.
Обновления прогресса в Интернете
Обновления прогресса поддерживаются только для синтеза речи. Используйте двигатель по умолчанию, чтобы обеспечить поддержку обновлений прогресса. Хром № 41195426
Измените минимальную версию Android SDK на 21 (или выше) в вашем файле android/app/build.gradle .
minSdkVersion 21Обновите версию плагина Kotlin Gradle
Измените версию плагина Kotlin Gradle на 1.9.10 .
Если ваш проект был создан с версией Flutter до 3.19, перейдите в файл android/build.gradle и обновите ext.kotlin_version :
ext . kotlin_version = ' 1.9.10 ' В противном случае перейдите в android/settings.gradle и обновите версию плагина org.jetbrains.kotlin.android :
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false Приложения, нацеленные на Android 11, которые используют текст в речь, должны объявлять TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE в элементах queries их манифеста.
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries > Android TTS не поддерживает функцию паузы национальной, поэтому мы внедрили работу вокруг. Мы используем нативный метод onRangeStart() для определения индекса запуска, когда вызывает pause . Мы используем этот индекс, чтобы создать новый текст в следующий раз, когда speak . Из -за использования onRangeStart() , пауза работает в версиях SDK> = 26. Кроме того, при использовании start и end смещений внутри setProgressHandler() вам нужно отслеживать их, если они используют pause , так как они будут обновляться после того, как новый текст будет создан, когда speak после приостановки.
await flutterTts. pause ()Существует известная проблема с интеграцией плагинов, которые используют Swift в проект Flutter, созданный с шаблоном Objective-C. Флаттер № 16049
Пример
Чтобы использовать этот плагин:
dependencies :
flutter :
sdk : flutter
flutter_tts : FlutterTts flutterTts = FlutterTts ();
Чтобы установить общий экземпляр аудио (только iOS):
await flutterTts. setSharedInstance ( true );Чтобы установить категорию аудио и параметры в дополнительном режиме (только для iOS). Следующая настройка позволяет одновременно продолжаться фоновая музыка и аудиосессия в приложении:
await flutterTts. setIosAudioCategory ( IosTextToSpeechAudioCategory .ambient,
[
IosTextToSpeechAudioCategoryOptions .allowBluetooth,
IosTextToSpeechAudioCategoryOptions .allowBluetoothA2DP,
IosTextToSpeechAudioCategoryOptions .mixWithOthers
],
IosTextToSpeechAudioMode .voicePrompt
);Чтобы дождаться завершения выступления.
await flutterTts. awaitSpeakCompletion ( true );Чтобы ожидать синтеза, чтобы завершить файл.
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;
});
});
Для начала работы с Flutter, просмотрите нашу онлайн -документацию.
Для получения помощи при редактировании кода плагина просмотрите документацию.