نص رفرفة إلى الكلام المكون الإضافي (سويفت ، كوتلين)
OSX version: 10.15مثال على التطبيق من فرع MacOS_APP
موقع من دليل المثال.
تحديثات التقدم على الويب
تحديثات التقدم مدعومة فقط لتوليف الكلام الأصلي. استخدم المحرك الافتراضي لضمان دعم تحديثات التقدم. Chromium#41195426
قم بتغيير الحد الأدنى من إصدار Android SDK إلى 21 (أو أعلى) في ملف android/app/build.gradle .
minSdkVersion 21قم بتحديث إصدار البرنامج المساعد Kotlin Gradle
قم بتغيير مؤشر البرنامج المساعد Kotlin Gradle إلى 1.9.10 .
إذا تم إنشاء مشروعك باستخدام إصدار من Flutter قبل 3.19 ، فانتقل إلى ملف android/build.gradle وقم بتحديث ext.kotlin_version :
ext . kotlin_version = ' 1.9.10 ' خلاف ذلك ، انتقل إلى android/settings.gradle وقم بتحديث verion من المكون الإضافي org.jetbrains.kotlin.android :
id " org.jetbrains.kotlin.android " version " 1.9.10 " apply false يجب TextToSpeech.Engine.INTENT_ACTION_TTS_SERVICE تعلن التطبيقات التي تستهدف Android 11 التي تستخدم نصًا إلى كلام queries
< queries >
< intent >
< action android : name = " android.intent.action.TTS_SERVICE " />
</ intent >
</ queries > لا يدعم Android TTS وظيفة الإيقاف المؤقت أصليًا ، لذلك قمنا بتنفيذ عمل حوله. نستخدم طريقة onRangeStart() الأصلية لتحديد فهرس البدء عند pause مؤقتًا. نستخدم هذا الفهرس لإنشاء نص جديد في المرة القادمة speak فيها. نظرًا لاستخدام onRangeStart() ، تعمل الإيقاف المؤقت على إصدارات SDK> = 26. أيضًا ، إذا كنت تستخدم إزاحة start end داخل setProgressHandler() ، ستحتاج إلى متابعة منها إذا كنت pause بعد أن يتم تحديثها بمجرد إنشاء النص الجديد عند استدعاء speak بعد إيقاف التشغيل.
await flutterTts. pause ()هناك مشكلة معروفة مع دمج الإضافات التي تستخدم Swift في مشروع رفرفة تم إنشاؤها باستخدام قالب Comple-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;
});
});
للمساعدة في البدء مع الرفرفة ، شاهد وثائقنا عبر الإنترنت.
للحصول على مساعدة في تحرير رمز البرنامج المساعد ، عرض الوثائق.