انتقل إلى المحتوى الرئيسي

كيفية استخدام الإضافة

تقوم إضافة Runtime Text To Speech بتحويل النص إلى كلام باستخدام نماذج صوتية قابلة للتحميل. تتم إدارة هذه النماذج في إعدادات الإضافة داخل المحرر، ويتم تنزيلها وتعبئتها للاستخدام أثناء التشغيل. اتبع الخطوات أدناه للبدء.

جانب المحرر

قم بتنزيل نماذج الصوت المناسبة لمشروعك كما هو موضح هنا. يمكنك تنزيل عدة نماذج صوتية في نفس الوقت.

جانب التشغيل

قم بإنشاء المُركِّب باستخدام الدالة CreateRuntimeTextToSpeech. تأكد من الحفاظ على مرجع له (مثل متغير منفصل في Blueprints أو UPROPERTY في ++C) لمنعه من جمع القمامة.

مثال لإنشاء مُركِّب Runtime Text To Speech في Blueprints

توليد الكلام

يقدم البرنامج المساعد وضعين لتوليد الكلام من النص:

  1. تحويل النص إلى كلام العادي: يقوم بتوليد النص بالكامل وإرجاع الصوت المكتمل عند الانتهاء
  2. تحويل النص إلى كلام المتدفق: يوفر مقاطع الصوت فور إنشائها، مما يسمح بالمعالجة في الوقت الفعلي

يدعم كل وضع طريقتين لاختيار نماذج الصوت:

  • بالاسم: اختر نموذج صوت باسمه (موصى به لـ UE 5.4+)
  • بالكائن: اختر نموذج صوت بالإشارة المباشرة (موصى به لـ UE 5.3 والإصدارات الأقدم)

تحويل النص إلى كلام العادي

بالاسم

تكون وظيفة Text To Speech (By Name) أكثر ملاءمة في Blueprints بدءًا من UE 5.4. تتيح لك اختيار نماذج الصوت من قائمة منسدلة للنماذج التي تم تنزيلها. في إصدارات UE الأقدم من 5.3، لا تظهر هذه القائمة المنسدلة، لذا إذا كنت تستخدم إصدارًا أقدم، فستحتاج إلى التكرار يدويًا عبر مصفوفة نماذج الصوت التي تم إرجاعها بواسطة GetDownloadedVoiceModels لاختيار النموذج الذي تحتاجه.

مثال على استخدام Text To Speech by Name في Blueprints

حسب الكائن

تعمل وظيفة Text To Speech (By Object) عبر جميع إصدارات Unreal Engine ولكنها تعرض نماذج الصوت كقائمة منسدلة من مراجع الأصول، وهو أقل بديهية. هذه الطريقة مناسبة لـ UE 5.3 والإصدارات السابقة، أو إذا كان مشروعك يتطلب مرجعًا مباشرًا إلى أصل نموذج صوتي لأي سبب.

مثال على استخدام Text To Speech by Object في Blueprints

إذا قمت بتنزيل النماذج ولكن لا يمكنك رؤيتها، افتح القائمة المنسدلة Voice Model، انقر على الإعدادات (أيقونة الترس)، وقم بتمكين كل من Show Plugin Content و Show Engine Content لجعل النماذج مرئية.

توليد الكلام من النص بالبث المباشر

للنصوص الطويلة أو عندما تريد معالجة بيانات الصوت في الوقت الفعلي أثناء إنشائها، يمكنك استخدام إصدارات البث المباشر لوظائف توليد الكلام من النص:

  • Streaming Text To Speech (By Name) (StreamingTextToSpeechByName في ++C)
  • Streaming Text To Speech (By Object) (StreamingTextToSpeechByObject في ++C)

توفر هذه الوظائف بيانات الصوت على شكل أجزاء أثناء إنشائها، مما يسمح بالمعالجة الفورية دون الانتظار حتى اكتمال التوليد بالكامل. هذا مفيد لتطبيقات متنوعة مثل تشغيل الصوت في الوقت الفعلي، أو التصور الحي، أو أي سيناريو تحتاج فيه إلى معالجة بيانات الكلام بشكل تدريجي.

البث المباشر بالاسم

تعمل وظيفة Streaming Text To Speech (By Name) بشكل مشابه للإصدار العادي ولكنها توفر الصوت على شكل أجزاء من خلال المفوض On Speech Chunk.

مثال على استخدام Streaming Text To Speech by Name في Blueprints

البث حسب الكائن

توفر وظيفة Streaming Text To Speech (By Object) نفس وظيفة البث ولكنها تأخذ مرجعًا لكائن نموذج صوتي.

مثال على استخدام Streaming Text To Speech by Object في Blueprints

تشغيل الصوت

بالنسبة لتحويل النص إلى كلام العادي (غير المتدفق)، فإن المفوض On Speech Result يوفر الصوت المُركب كبيانات PCM بتنسيق float (كمصفوفة بايت في Blueprints أو TArray<uint8> في C++)، بالإضافة إلى Sample Rate و Num Of Channels.

للتشغيل، يُوصى باستخدام ملحق Runtime Audio Importer لتحويل بيانات الصوت الخام إلى موجة صوتية قابلة للتشغيل.

إليك مثالًا لكيفية ظهور عقد Blueprint لتركيب النص وتشغيل الصوت (عقد قابلة للنسخ):

إلغاء تحويل النص إلى كلام

يمكنك إلغاء عملية تحويل النص إلى كلام الجارية في أي وقت عن طريق استدعاء الدالة CancelSpeechSynthesis على مثيل المترجم الخاص بك:

إلغاء تحويل النص إلى كلام في Blueprints

عند إلغاء عملية التوليف:

  • ستتوقف عملية التوليف في أسرع وقت ممكن
  • سيتم إنهاء أي استدعاءات جارية (callbacks)
  • سيتم استدعاء مندوب الإكمال (completion delegate) مع bSuccess = false ورسالة خطأ تشير إلى أنه تم إلغاء التوليف
  • سيتم تنظيف أي موارد مخصصة للتوليف بشكل صحيح

هذا مفيد بشكل خاص للنصوص الطويلة أو عندما تحتاج إلى مقاطعة التشغيل لبدء توليف جديد.

اختيار المتحدث (Speaker Selection)

تقبل وظيفتا Text To Speech معاملًا اختياريًا لمعرّف المتحدث (speaker ID)، وهو مفيد عند العمل مع نماذج الأصوات التي تدعم متحدثين متعددين. يمكنك استخدام وظائف GetSpeakerCountFromVoiceModel أو GetSpeakerCountFromModelName للتحقق مما إذا كان نموذج الصوت المختار يدعم متحدثين متعددين. إذا كانت هناك متحدثون متعددون متاحون، ما عليك سوى تحديد معرّف المتحدث المطلوب عند استدعاء وظائف Text To Speech. تقدم بعض نماذج الأصوات تنوعًا واسعًا - على سبيل المثال، English LibriTTS يتضمن أكثر من 900 متحدث مختلف للاختيار من بينهم.

تقدم إضافة Runtime Audio Importer أيضًا ميزات إضافية مثل تصدير بيانات الصوت إلى ملف، أو تمريرها إلى SoundCue، وMetaSound، والمزيد. لمزيد من التفاصيل، راجع وثائق Runtime Audio Importer.