フラッターテキストから音声プラグイン(Swift、Kotlin)
OSX version: 10.15macos_appブランチからの例のアプリ
例ディレクトリのウェブサイト。
Webでの進捗状況の更新
進行状況の更新は、ネイティブの音声合成のみでサポートされています。デフォルトのエンジンを使用して、進行状況の更新をサポートします。クロム#41195426
android/app/build.gradleファイルの最小Android SDKバージョンを21(またはそれ以上)に変更します。
minSdkVersion 21Kotlin Gradleプラグインバージョンを更新します
Kotlin GradleプラグインのVerisionを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 Text-to-Speechを使用するAndroid 11をターゲットにしたアプリは、Manifestの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プロジェクトに使用するプラグインを統合することには既知の問題があります。フラッター#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を始めるのに役立つように、オンラインドキュメントをご覧ください。
プラグインコードの編集のヘルプについては、ドキュメントを表示します。