Flutter Text to Speech Plugin (Swift, Kotlin)
OSX version: 10.15MacOS_APP 브랜치의 예제 앱
예제 디렉토리에서 웹 사이트.
웹의 진행 업데이트
진행 업데이트는 기본 연설 동시성에 대해서만 지원됩니다. 기본 엔진을 사용하여 진행 상황 업데이트를 지원하십시오. 크롬#41195426
android/app/build.gradle 파일에서 최소 Android SDK 버전을 21 (또는 더 높은)으로 변경하십시오.
minSdkVersion 21Kotlin 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 의 Verion을 업데이트하십시오.
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false Text-To-Speech를 사용하는 Android 11을 대상으로하는 앱은 텍스트의 queries 요소에서 TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE 선언해야합니다.
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries > Android TTS는 기본적으로 일시 정지 기능을 지원하지 않으므로 작업을 구현했습니다. pause 호출 될 때 시작 인덱스를 결정하기 위해 기본 onRangeStart() 메소드를 사용합니다. 우리는이 색인을 사용하여 다음에 speak 때 새 텍스트를 작성합니다. onRangeStart() 사용하기 때문에 일시 정지는 sdk 버전> = 26에서 작동합니다. 또한 setProgressHandler() 내에서 start 및 end 오프셋을 사용하는 경우 일시 정지 후 speak 될 때 새 텍스트가 작성되면 업데이트되면 일시 pause 를 사용하기 때문에 일시 정지를 사용하면 추적을 유지해야합니다.
await flutterTts. pause ()Swift를 Objective-C 템플릿으로 생성 된 플러터 프로젝트에 사용하는 플러그인을 통합하는 데 알려진 문제가 있습니다. 플러터#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;
});
});
Flutter를 시작하는 데 도움이 되려면 온라인 문서를보십시오.
플러그인 코드 편집에 대한 도움은 문서를보십시오.