Um texto de vibração do plug -in de fala (Swift, Kotlin)
OSX version: 10.15Exemplo de aplicativo da filial MacOS_App
Site do diretório de exemplo.
Atualizações de progresso na web
As atualizações de progresso são suportadas apenas para a síntese de fala nativa. Use o mecanismo padrão para garantir o suporte para atualizações de progresso. Chromium#41195426
Altere a versão mínima do Android SDK para 21 (ou superior) no seu arquivo android/app/build.gradle .
minSdkVersion 21Atualize a versão do plugin Kotlin Gradle
Altere a verificação do plugin Kotlin Gradle para 1.9.10 .
Se o seu projeto foi criado com uma versão do Flutter antes de 3.19, vá para o arquivo android/build.gradle e atualize o ext.kotlin_version :
ext . kotlin_version = ' 1.9.10 ' Caso contrário, vá para android/settings.gradle e atualize a verion do plugin org.jetbrains.kotlin.android :
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false Os aplicativos direcionados ao Android 11 que usam o texto em fala devem declarar TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE nos elementos queries de seu manifesto.
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries > O Android TTS não suporta a função de pausa nativamente, por isso implementamos um trabalho. Utilizamos o método nativo onRangeStart() para determinar o índice de início quando pause é invocada. Usamos esse índice para criar um novo texto na próxima vez que speak for invocado. Devido ao uso de onRangeStart() , a pausa funciona nas versões SDK> = 26. Além disso, se estiver usando compensações start e end dentro do setProgressHandler() , você precisará acompanhá -los se estiver usando pause , pois eles serão atualizados quando o novo texto for criado quando speak for chamado depois de ser pausado.
await flutterTts. pause ()Há um problema conhecido na integração de plugins que usam o SWIFT em um projeto de fleta criado com o modelo Objective-C. Flutter#16049
Exemplo
Para usar este plugin:
dependencies :
flutter :
sdk : flutter
flutter_tts : FlutterTts flutterTts = FlutterTts ();
Para definir a instância de áudio compartilhada (apenas iOS):
await flutterTts. setSharedInstance ( true );Para definir a categoria de áudio e as opções com o modo opcional (somente iOS). A configuração a seguir permite que a música de fundo e a sessão de áudio no aplicativo continue simultaneamente:
await flutterTts. setIosAudioCategory ( IosTextToSpeechAudioCategory .ambient,
[
IosTextToSpeechAudioCategoryOptions .allowBluetooth,
IosTextToSpeechAudioCategoryOptions .allowBluetoothA2DP,
IosTextToSpeechAudioCategoryOptions .mixWithOthers
],
IosTextToSpeechAudioMode .voicePrompt
);Para aguardar a conclusão do Speak.
await flutterTts. awaitSpeakCompletion ( true );Para aguardar sintetizar para a conclusão do arquivo.
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;
});
});
Para obter ajuda para começar a Flutter, veja nossa documentação on -line.
Para obter ajuda na edição do código do plug -in, visualize a documentação.