flutter_tts_improved
Flutter_TTS 插件的分叉版本,同時在 Android 和 iOS 上使用 Utterance API 的進度報告器。
Flutter_TTS (https://github.com/dlutton/flutter_tts) 插件的分支,該分支在 Android 和 iOS 上均使用了 Utterance API 的進度報告功能。
{"sdk":"flutter"}{"sdk":"flutter"}以下為英文專案原文快照,最新內容請造訪 GitHub。
The flutter_tts plugin (https://github.com/dlutton/flutter_tts) is GREAT! Thanks @dlutton for all your hard work on getting it up and running. Now it is time to improve it by allowing for the Utterances API to report the 'progress' of the speech of the Utterance. This is relatively new for Android, only introduced in Android 26. It has been around on iOS for quite some time though, back around iOS 7.0.
My goal with this plugin is to allow everyone in flutter to track where the speech is currently at. This can be used to print words on the screen as they are spoken, highlight words of a paragraph as they are uttered, for timing how long each word takes to say at a given speed, or really any other weird reason you may need it. This API is powerful, and I know people are asking for it, and there is simply not a plugin yet that covers it. Surprise! Now there is. You are welcome.
Change the minimum Android sdk version to 21 (or higher) in your android/app/build.gradle file.
minSdkVersion 21
There's a known issue with integrating plugins that use Swift into a Flutter project created with the Objective-C template. Flutter#16049
To use this plugin :
dependencies:
flutter:
sdk: flutter
flutter_tts_improved:
FlutterTtsImproved tts = new FlutterTtsImproved();
Future _speak() async{
var result = await tts.speak("Hello World");
if (result == 1) setState(() => ttsState = TtsState.playing);
}
Future _stop() async{
var result = await tts.stop();
if (result == 1) setState(() => ttsState = TtsState.stopped);
}
List<dynamic> languages = await tts.getLanguages;
await tts.setLanguage("en-US");
await tts.setSpeechRate(1.0);
await tts.setVolume(1.0);
await tts.setPitch(1.0);
await tts.isLanguageAvailable("en-US");
// #NEW
tts.setProgressHandler((String fullPhrase, int wordOffset, int endOfWordOffset, String currentWord) {
setState(() {
_wordToDisplay = currentWord;
});
});
tts.setStartHandler(() {
setState(() {
ttsState = TtsState.playing;
});
});
tts.setCompletionHandler(() {
setState(() {
ttsState = TtsState.stopped;
});
});
tts.setErrorHandler((msg) {
setState(() {
ttsState = TtsState.stopped;
});
});
For help getting started with Flutter, view our online documentation.
For help on editing plugin code, view the documentation.