語音插件的顫音文字(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;
});
});
如需幫助開始進行撲朔迷離,請查看我們的在線文檔。
有關編輯插件代碼的幫助,請查看文檔。