Ein Fluttertext zum Sprach -Plugin (Swift, Kotlin)
OSX version: 10.15Beispiel App aus der MACOS_APP -Zweigstelle
Website aus dem Beispielverzeichnis.
Fortschrittsaktualisierungen im Web
Fortschrittsaktualisierungen werden nur für die native Sprachsynthese unterstützt. Verwenden Sie die Standard -Engine, um die Unterstützung für Fortschrittsaktualisierungen zu gewährleisten. Chrom#41195426
Ändern Sie die minimale Android -SDK -Version auf 21 (oder höher) in Ihrer android/app/build.gradle -Datei.
minSdkVersion 21Aktualisieren Sie die Kotlin Gradle Plugin -Version
Ändern Sie die Verision des Kotlin Gradle -Plugins auf 1.9.10 .
Wenn Ihr Projekt vor 3.19 mit einer Version von Flutter erstellt wurde, gehen Sie zur Datei android/build.gradle und aktualisieren Sie die ext.kotlin_version :
ext . kotlin_version = ' 1.9.10 ' Ansonsten gehen Sie zu android/settings.gradle und aktualisieren Sie den Verbion des Plugin org.jetbrains.kotlin.android :
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false Apps, die auf Android 11 abzielen, die Text-to-Speech verwenden, sollten in den queries ihres Manifests TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE deklarieren.
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries > Android TTS unterstützt die Pause -Funktion nicht nativ, daher haben wir eine Arbeit implementiert. Wir verwenden die native onRangeStart() -Methode, um den Startindex zu bestimmen, wenn pause aufgerufen wird. Wir verwenden diesen Index, um einen neuen Text zu erstellen. Wenn das nächste Mal speak wird aufgerufen. Aufgrund der Verwendung von onRangeStart() funktioniert Pause auf SDK -Versionen> = 26. Wenn Sie start und end -Offsets innerhalb von setProgressHandler() verwenden, müssen Sie sie beibehalten, wenn sie eine pause verwenden, da sie aktualisiert werden, sobald der neue Text erstellt wurde, wenn speak angerufen wird.
await flutterTts. pause ()Es gibt ein bekanntes Problem bei der Integration von Plugins, die Swift in ein Flutter-Projekt verwenden, das mit der Objective-C-Vorlage erstellt wurde. Flattern#16049
Beispiel
Um dieses Plugin zu verwenden:
dependencies :
flutter :
sdk : flutter
flutter_tts : FlutterTts flutterTts = FlutterTts ();
So setzen Sie die gemeinsame Audio -Instanz (nur iOS):
await flutterTts. setSharedInstance ( true );So setzen Sie die Audiokategorie und Optionen mit optionalem Modus (nur iOS). Das folgende Setup ermöglicht die gleichzeitige Fortsetzung von Hintergrundmusik und In-App-Audiositzung:
await flutterTts. setIosAudioCategory ( IosTextToSpeechAudioCategory .ambient,
[
IosTextToSpeechAudioCategoryOptions .allowBluetooth,
IosTextToSpeechAudioCategoryOptions .allowBluetoothA2DP,
IosTextToSpeechAudioCategoryOptions .mixWithOthers
],
IosTextToSpeechAudioMode .voicePrompt
);Zu warten, um die Fertigstellung zu sprechen.
await flutterTts. awaitSpeakCompletion ( true );Warten Sie, um zu synthetisieren, um den Abschluss der Datei zu vervollständigen.
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;
});
});
Um Hilfe mit Flattern zu erhalten, sehen Sie sich unsere Online -Dokumentation an.
Für Hilfe beim Bearbeiten von Plugin -Code können Sie die Dokumentation anzeigen.