Last updated:
0 purchases
flutter tts
Text To Speech #
A flutter text to speech plugin (Swift,Kotlin)
Features #
Android, iOS, Web, Windows & macOS
speak
stop
get languages
set language
set speech rate
set speech volume
set speech pitch
Android, iOS, Web & macOS
is language available
Android, iOS, Web, & Windows
get voices
set voice
Android, iOS
speech marks (requires iOS 7+ and Android 26+)
synthesize to file (requires iOS 13+)
Android, iOS, Web, & Windows
pause
Android
set silence
is language installed
are languages installed
get engines
set engine
get default engine
get default voice
set queue mode
get max speech input length
iOS
set shared instance
set audio session category
Usage #
macOS #
OSX version: 10.15
copied to clipboard
Example App from the macOS_app branch
Web #
Website from the example directory.
Android #
Change the minimum Android sdk version to 21 (or higher) in your android/app/build.gradle file.
minSdkVersion 21
copied to clipboard
Apps targeting Android 11 that use text-to-speech should
declare TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE
in the queries elements of their manifest.
<queries>
<intent>
<action android:name="android.intent.action.TTS_SERVICE" />
</intent>
</queries>
copied to clipboard
Pausing on Android #
Android TTS does not support the pause function natively, so we have implemented a work around. We utilize the native onRangeStart() method to determine the index of start when pause is invoked. We use that index to create a new text the next time speak is invoked. Due to using onRangeStart(), pause works on SDK versions >= 26. Also, if using start and end offsets inside of setProgressHandler(), you'll need to keep a track of them if using pause since they will update once the new text is created when speak is called after being paused.
await flutterTts.pause()
copied to clipboard
iOS #
There's a known issue with integrating plugins that use Swift into a Flutter project created with the Objective-C template. Flutter#16049
Example
To use this plugin :
add the dependency to your pubspec.yaml file.
dependencies:
flutter:
sdk: flutter
flutter_tts:
copied to clipboard
instantiate FlutterTts
FlutterTts flutterTts = FlutterTts();
copied to clipboard
To set shared audio instance (iOS only):
await flutterTts.setSharedInstance(true);
copied to clipboard
To set audio category and options with optional mode (iOS only). The following setup allows background music and in-app audio session to continue simultaneously:
await flutterTts.setIosAudioCategory(IosTextToSpeechAudioCategory.ambient,
[
IosTextToSpeechAudioCategoryOptions.allowBluetooth,
IosTextToSpeechAudioCategoryOptions.allowBluetoothA2DP,
IosTextToSpeechAudioCategoryOptions.mixWithOthers
],
IosTextToSpeechAudioMode.voicePrompt
);
copied to clipboard
To await speak completion.
await flutterTts.awaitSpeakCompletion(true);
copied to clipboard
To await synthesize to file completion.
await flutterTts.awaitSynthCompletion(true);
copied to clipboard
speak, stop, getLanguages, setLanguage, setSpeechRate, setVoice, setVolume, setPitch, isLanguageAvailable, setSharedInstance #
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
await flutterTts.synthesizeToFile("Hello World", Platform.isAndroid ? "tts.wav" : "tts.caf");
await flutterTts.setVoice({"name": "Karen", "locale": "en-AU"});
// iOS only
await flutterTts.setSharedInstance(true);
// Android only
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;
copied to clipboard
Listening for platform calls #
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;
});
});
copied to clipboard
Getting Started #
For help getting started with Flutter, view our online
documentation.
For help on editing plugin code, view the documentation.
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.