语音插件的颤音文字(Swift,Kotlin)
OSX version: 10.15MACOS_APP分支的示例应用程序
示例目录的网站。
在Web上进行进度更新
仅支持本地语音综合的进度更新。使用默认引擎确保支持进度更新。铬#41195426
将最小Android SDK版本更改为android/app/build.gradle文件中的21(或更高)。
minSdkVersion 21更新Kotlin Gradle插件版本
将kotlin gradle插件的载体更改为1.9.10 。
如果您的项目是在3.19之前使用flutter版本创建的,请转到android/build.gradle文件并更新ext.kotlin_version :
ext . kotlin_version = ' 1.9.10 '否则,请访问android/settings.gradle ,然后更新插件org.jetbrains.kotlin.android的方面:
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false针对使用文本到语音的Android 11的应用程序应在其清单的queries元素中声明TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE 。
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries >Android TTS不支持暂停功能,因此我们已经实施了工作。我们利用本机onRangeStart()方法来确定pause时开始的索引。我们使用该索引来创建一个新文本,下次speak被调用。由于使用onRangeStart() ,暂停在SDK版本上> = 26。此外,如果使用setProgressHandler()内的start和end偏移(),如果使用pause ,则需要对其进行跟踪,因为在暂停时会更新新文本后,当他们暂停后调用新speak 。
await flutterTts. pause ()集成插件有一个已知的问题,该插件将Swift用于使用Objective-C模板创建的Flutter Project。 Flutter#16049
例子
使用此插件:
dependencies :
flutter :
sdk : flutter
flutter_tts : FlutterTts flutterTts = FlutterTts ();
设置共享音频实例(仅iOS):
await flutterTts. setSharedInstance ( true );设置具有可选模式的音频类别和选项(仅IOS)。以下设置允许背景音乐和应用内音频会话同时继续:
await flutterTts. setIosAudioCategory ( IosTextToSpeechAudioCategory .ambient,
[
IosTextToSpeechAudioCategoryOptions .allowBluetooth,
IosTextToSpeechAudioCategoryOptions .allowBluetoothA2DP,
IosTextToSpeechAudioCategoryOptions .mixWithOthers
],
IosTextToSpeechAudioMode .voicePrompt
);等待讲话完成。
await flutterTts. awaitSpeakCompletion ( true );等待合成以文件完成。
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;
});
});
如需帮助开始进行扑朔迷离,请查看我们的在线文档。
有关编辑插件代码的帮助,请查看文档。