Un plugin de texte de flottement (Swift, Kotlin)
OSX version: 10.15Exemple d'application de la branche macOS_App
Site Web de l'exemple de répertoire.
Mises à jour de progrès sur le Web
Les mises à jour du progrès ne sont prises en charge que pour la synthèse de la parole indigène. Utilisez le moteur par défaut pour assurer la prise en charge des mises à jour de progression. Chrome # 41195426
Modifiez la version minimale Android SDK en 21 (ou plus) dans votre fichier android/app/build.gradle .
minSdkVersion 21Mettre à jour la version du plugin Kotlin Gradle
Changez la Verision du plugin Kotlin Gradle en 1.9.10 .
Si votre projet a été créé avec une version de Flutter avant 3.19, accédez au fichier android/build.gradle et mettez à jour le ext.kotlin_version :
ext . kotlin_version = ' 1.9.10 ' Sinon, allez sur android/settings.gradle et mettez à jour la Verion du plugin org.jetbrains.kotlin.android :
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false Les applications ciblant Android 11 qui utilisent du text-vocation doivent déclarer TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE dans les éléments queries de leur manifeste.
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries > Android TTS ne prend pas en charge la fonction de pause nativement, nous avons donc mis en œuvre un travail. Nous utilisons la méthode native onRangeStart() pour déterminer l'indice de démarrage lorsque pause est invoquée. Nous utilisons cet index pour créer un nouveau texte la prochaine fois que speak est invoqué. En raison de l'utilisation onRangeStart() , Pause fonctionne sur les versions SDK> = 26. De plus, si vous utilisez end décalages start à l'intérieur de setProgressHandler() , vous devrez les garder en piste si vous utilisez pause car ils se mettent à jour une fois le nouveau texte créé lors de speak appel après avoir été pauvre.
await flutterTts. pause ()Il y a un problème connu avec l'intégration des plugins qui utilisent Swift dans un projet Flutter créé avec le modèle Objective-C. Flutter # 16049
Exemple
Pour utiliser ce plugin:
dependencies :
flutter :
sdk : flutter
flutter_tts : FlutterTts flutterTts = FlutterTts ();
Pour définir l'instance audio partagée (iOS uniquement):
await flutterTts. setSharedInstance ( true );Pour définir la catégorie audio et les options avec le mode facultatif (iOS uniquement). La configuration suivante permet à la musique de fond et à la session audio dans l'application de se poursuivre simultanément:
await flutterTts. setIosAudioCategory ( IosTextToSpeechAudioCategory .ambient,
[
IosTextToSpeechAudioCategoryOptions .allowBluetooth,
IosTextToSpeechAudioCategoryOptions .allowBluetoothA2DP,
IosTextToSpeechAudioCategoryOptions .mixWithOthers
],
IosTextToSpeechAudioMode .voicePrompt
);Pour attendre, parlez l'achèvement.
await flutterTts. awaitSpeakCompletion ( true );Pour attendre synthétiser pour l'achèvement du fichier.
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;
});
});
Pour aider à démarrer avec Flutter, consultez notre documentation en ligne.
Pour obtenir de l'aide sur l'édition de code de plugin, consultez la documentation.