مقدمة
يهدف هذا المشروع إلى دعم العربية في نظم النطق (تحويل النص إلى كلام) ويصف الطريقة التي تسمح بتشغيلها معا. أي تشغيل قارئ الشاشة بلغة عربية بمستوى جيد بأدوات مفتوحة المصدر.
إلام نحتاج؟
نحتاج إلى الأدوات الآتية:
- نظام النطق إسبيك مع دعم العربية
- Mbrola نظام النطق وأصواته
- قارئ للشاشة
- نظام توزيع الكلام
- برنامج تشكيل
سنتحتاج إلى تشغيل نظام النطق إسبيك مزود بدعم للغة العربية، ثم نثريه بأصوات عربية من نظام النطق Mbrola للحصول على صوت أفضل. سنحتاج أيضا إلى مشكّل آلي للنصوص العربية باستعمال برنامج مشكال مفتوح المصدر. كما سنحاول تشغيل قارئ الشاشة Orca، ونظام إرسال الكلام speech dispatcher لاعتماده برنامجا وسيطا يسمح للتطبيقات الأخرى من تشغيل نظام النطق.
نهدف إلى الحصول على نطق صوت عربي جيد وصحيح قدر الإمكان مشكّل
التثبيت
نظام النطق إسبيك بدعم العربية
نظام eSpeakNG، نظام متراص مفتوح المصدر، نظام نطق على وندوز ولينكس ومنصات أخرى. يعتمد على طريقة التركيب على المباني Formant، يدعم لغات عديدة منها العربية منذ الإصدار 1.49.2، هو نظام متراص حجمه صغير. معظم دعم اللغات في النظام مبني على ملفات للقواعد صممها مطورون متحدثون أصليون لتلك اللغات.
لتثبيت البرنامج يرجى الاطلاع على توثيق espeak-ng.
للإصدارات السابقة، يمكن تحميل ملفات مجهزة من ar-espeak. اختر ما يناسب رقم إصدار برنامجك.
مثلا: أنا أستخدم الإصدار 1.48.03 على حاسوبي، لذا حمّلت الملف المضغوط espeak-data zipped file
$wget https://sourceforge.net/projects/arabic-espeak/files/espeak-data1.48.03.zip/download
$ unzip espeak-data1.48.03.zip
$ cp -R espeak-data ~
أولا، ننول الملف ثم نفك ضغطه، ثم ننسخ المجلد espeak-data إلى مجلد المستخدم. نظام إسبيك يفحص وجود المجلد espeak-data أولا في مجلد المستخدم، ليستخدمه.
فلنجرب النظام بالأمر التالي لقراءة نص باللغة الإنجليزية
$espeak -v en "Hello world"
إذا نجح، يمكن عرض كل اللغات المدعومة، تحقق أن ألعربية موجودة.
$espeak --voices
إن كانت العربية مذكورة في القائمة، جرّب:
$espeak -v ar "السلام عليكم"
برنامج إسبيك سيعتمد على مجلد espeak-data في منزل المستخدم أولا ثمّ على مجلد الإعدادات النظامية في المجلد: usr/share/doc/espeak-data/.
مجلد espeak-data يحتوي على ملفات مجهزة ccompiled وملف الصوتيات وقاعدة بيانات الفونيمات التي سيستعملها إسبيك، عليك الانتباه لرقم الإصدار.
ننصح باستعمال الإصدارات الأحدث..
Mbrola
يمكن تجاوز هذه الفقرة إن كنت لا ترغب في استعمال أمبرولا أو لا تستطيع لسبب ما
نظام MBROLA خوارزمية لتركيب الكلام، موزعة برخصة للأغراض غير التجارية، وهو مشروع تعاوني عبرالعالم. موقع أمبرولا يقدم قواعد بيانات للأصوات للغات واسعة الانتشار عبر العالم. الأصوات العربية لنظام أمبرولا أفضل حاليا من أصوات أسبيك الأصلية.
عليك أولا تثبيت نظام أمبرولا بواسطة مدير التطبيقات لديك
لتوزيعات دبيان وأوبنتو ومشتقاتها:
sudo apt-get install mbrola
توزيعة Archlinux:
$ sudo pacman -S mbrola
لتوزيعة Archlinux على نظام راسبيري
cd /tmp
git clone [email protected]:saez0pub/mbrola-archlinux-rasberrypi.git
cd mbrola-archlinux-rasberrypi
makepkg -s
sudo pacman -U ./mbrola-3.02b-4-armv6h.pkg.tar.xz
الآن جرب امبرولا بالأمر
$ mbrola
لتشغيل أمبرولا تحتاج إلى بعض الأصوات
الإنجليزية:
العربية:
بعد التحميل، ضع الملفين ar1, ar2 في المجلد المناسب
Debian/Ubuntu/ Archlinux
$ mkdir -p /usr/share/mbrola/voices
$ cp ar1 /usr/share/mbrola/voices/
$ cp ar2 /usr/share/mbrola/voices/
الآن، جرب إسبيك بطعم أمبرول
$ espeak -v mb-en1 "Hello World"
$ espeak -v mb-ar1 "السلام عليكم"
إعداد قارئ الشاشة
نحتاج إلى قارئ الشاشة Orca. يمكن بعد تثبيت أوركا تشغيله بالأمر في سطر الوامر على مدير النوانذ (سطح المكتب)
$ orca -s
تحصل على النافذة الآتية
اختر من لسان voice، اختر الشخض المناسب لك. واخرت صوت العربية.
لتجربة أوركا بالإعدادات الجديدة استعمل الأمر الآتي
$orca -r
برنامج التشكيل
من أجل الحصول على نطق أفضل، نقترح إضافة مشكّل آلي للنصوص (برنامج تشكيل). النصوص العربية تأتي في الأغلب غير مشكولة، لذا يستحسن تشكيلها قبل نطقها آليا، لذا سنستعمل برنامج التشكيل الآلي مشكال كوسيط يحضّر النص قبل تمريره لنظام النطق.
برنامج مشكال مصمم بلغة بيثون ويوفر واجهات على سطر الأوامر، وسطح المكتب وواجهة وب.
سنستعمل سطر الأوامر.
أولا حمّل مشكال من http://mishkal.sourceforge.net، حيث يتوفر بشكل حزم لأنظمة مختلفة. أو حمّل المصدر من مستودعات github
$ git clone https://github.com/linuxscout/mishkal.git
اسنخ المجلد في مجلد العمل، أنا اخترت وضعه في منزل المستخدم.
/home/me/mishkal-master/
شغله بواسطة بيثون 2.7
$python2 mishkal-master/bin/mishkal-console.py
(C) CopyLeft 2012, Taha Zerrouki
Usage: mishkal-console -f filename [OPTIONS]
mishkal-console 'السلام عليكم' [OPTIONS]
[-f | --file = filename]input file to mishkal-console
[-h | --help] outputs this usage message
[-v | --version] program version
[-p | --progress] display progress status
* Tashkeel Actions
-------------------
[-r | --reduced] Reduced Tashkeel.
[-s | --strip] Strip tashkeel (remove harakat).
[-c | --compare] compare the vocalized text with the program output
* Tashkeel Options
------------------
[-l | --limit] vocalize only a limited number of line
[-x | --syntax] disable syntaxic analysis
[-m | --semantic] disable semantic analysis
[-i | --ignore] ignore the last Mark on output words.
[-t | --stat] disable statistic tashkeel
This program is licensed under the GPL License
جربه الآن مع نص
$python2 mishkal-master/bin/mishkal-console.py "السلام عليكم"
السِّلَام عَلَيْكُمْ
يمكن تشغيل مشكال على سطح المكتب كتطبيق
$python2 mishkal-master/interfaces/gui/mishkal-gui.py
أو على شكل خدمة وب، هذه الطريقة تمكن المستخدم بتشغيل ما يشبه الموقع الأصلي لمشكال على الخط
$python2 mishkal-master/interfaces/web/mishkal-webserver.py
serving on 0.0.0.0:8080 view at http://127.0.0.1:8080
ثم افتح في المتصفح العنوان التالي : http://127.0.0.1:8080
خدمة الوب هذه تقدم واجهة برمجية ليستعملها المطورون في ربط تطبيقات بالتشكيل.
الدمج
الآن بعد تثيبت وإعداد كل الأدوات، يمكننا محاولة دمج التشكيل في سيرورة النطق.
أولا، نجرب مشكال + أسبيك باستعمال ربط الأوامر
$python2 mishkal-master/bin/mishkal-console.py "السلام عليكم" | espeak -v ar
ثانيا، نجرب مشكال مع أسبيك بأصوات أمبرولا
$python2 mishkal-master/bin/mishkal-console.py "السلام عليكم" | espeak -v mb-ar1
إعداد مرسل الكلام Speech Dispatcher
قم بتثبيت نظام مُرسل الكلام Speech Dispatcher حسب ما يناسب توزيعتك، أو حمّل المصدر المضغوط من http://www.freebsoft.org/speechd
ثم اتبع تعليمات الملف INSTALL
.
إعداد المرسل Speech Dispatcher
يمكنك تجاوز هذه الفقرة إلا إذا أردت تخصيص الإعدادات. أفضل طريقة لتثبيت إعدادات مخصصة هي استعمال الأمر spd-conf
الذي سيقودك في وضع الإعدادات الأساسية، ويجري بعض الفحوص ويساعد في كشف بعض الأعطال. جرب فقط:
$spd-conf
أبسط طريقة لفحص مرسل الكلام هو الأمرspd-conf -d
أو بالأمر spd-say
مثال
spd-conf -d
spd-say "Hello!"
spd-say -l cs -r 90 "Ahoj"
ربط أمبرولا واسبيك بالمرسل
ملفات الإعدادات ستوضع في المجلد config/speech-dispatcher.
في مجلد المنزل للمستخدم.
افحص ملف الإعدادات ‘modules/espeak-mbrola-generic.conf’، وتحقق أن الأصوات المضافة في قسم AddVoice
موجودة أصلا، يمكنك التحقق أنها مثبة بالأمر :
ls /usr/share/espeak-data/voices/mb/mb-*
إن لم تكن موجودة أضفها.
تحقق أنّ القسم GenericExecuteString
يحوي الأسماء الصحيحة لأصوات أمبرولا وتحقق أنّ المسارات صحيحة.
ارفع تعليق سطر AddModule
من أجل espeak-mbrola-generic
في ملف الإعدادات ‘speechd.conf’ .
استأنف برنامج speech-dispatcher واختر الإعداد espeak-mbrola-generic
كمخرج للأصوات للنظام، جربها بالأمر الآتي:
spd-say -o espeak-mbrola-generic -l en Testing
حرر الملف الآتي
nano .config/speech-dispatcher/modules/espeak-mbrola-generic.conf
أضف اللغة العربية في قسم , GenericLanguage وأضف الاسطر الآتية في آخر القائمة
GenericLanguage "ar" "ar" "utf-8"
اذهب إلى قسم AddVoice وزد الأسطر الآتية
AddVoice "ar" "MALE1" "ar1"
AddVoice "ar" "FEMALE1" "ar1"
AddVoice "ar" "MALE1" "ar2"
AddVoice "ar" "FEMALE1" "ar2"
استأنف برنامج speech-dispatcher واختر الإعداد espeak-mbrola-generic
كمخرج للأصوات للنظام، جربها بالأمر الآتي:
جرب الآن اللغة العربية
spd-say -o espeak-mbrola-generic -l ar "السلام عليكم"
إضافة التشكيل لمرسل الكلام
حرر الملف الآتي
nano .config/speech-dispatcher/modules/espeak-mbrola-generic.conf
الآن, افحص قسم GenericExecuteSynth
GenericExecuteSynth \
"echo \'$DATA\' | espeak -v mb-$VOICE -s $RATE -p $PITCH $PUNCT -q --stdin --pho | mbrola -v $VOLUME -e /usr/share/mbrola/$VOICE/$VOICE - -.au | $PLAY_COMMAND"
يرجى التحقق من أن المسار الآتي يحوي الأصوات المحملة ،
/usr/share/mbrola/$VOICE/$VOICE
مثلا، الإنجليزية موضوعة في
/usr/share/mbrola/en1/en1
إن لم تكن كذلك، ربما عليك تعديل المسار ليصبح كالآتي، مما يعني أن كل الأصوات موجودة في نفس المجلد
/usr/share/mbrola/voices/$VOICE
يصبح الأمر كالآتي
GenericExecuteSynth \
"echo \'$DATA\' | espeak -v mb-$VOICE -s $RATE -p $PITCH $PUNCT -q --stdin --pho | mbrola -v $VOLUME -e /usr/share/mbrola/voices/$VOICE - -.au | $PLAY_COMMAND"
يمكننا أن نلاحظ أنّ البيانات النصية التي ستنطق تمر أولا بأمر العرض echo ثم تمر إلى أسبيك ثم إلى أمبرولا، وتوجه إلى مشغل صوتيات.
سنستعمل برنامج التشكيل كمرحلة وسيطة بدلا من echo
الأمر المخصص للتشكيل هو
python2 mishkal-master/bin/mishkal-console.py
وعليه تصبح الإعدادات لعملية معالجة النص كالآتي
# adding mishkal
GenericExecuteSynth \
"python2 mishkal-master/bin/mishkal-console.py \'$DATA\'| espeak -v mb-$VOICE -s $RATE -p $PITCH $PUNCT -q --stdin --pho | mbrola -v $VOLUME -e /usr/share/mbrola/voices/$VOICE - -.au | $PLAY_COMMAND "# adding mishkal
الآن، النص يُشكّل قبل نطقه بنظام تحويل النص إلى كلام.
استأنف برنامج speech-dispatcher واختر الإعداد espeak-mbrola-generic
كمخرج للأصوات للنظام، جربها بالأمر الآتي:
جرب الآن اللغة العربية
spd-say -o espeak-mbrola-generic -l ar "السلام عليكم"
من أجل متابعة الأخطاء المحتملة يمكن تشغيل مرسل الكلام بخيار مستوى التنقيح debug
speech-dispatcher -l 4
[Tue Dec 5 15:51:06 2017 : 74036] speechd: Speech Dispatcher 0.8.3 starting
[Tue Dec 5 15:51:06 2017 : 74143] speechd: Trying to find /run/user/1000/speech-dispatcher
[Tue Dec 5 15:51:06 2017 : 74186] speechd: Using directory: /run/user/1000/speech-dispatcher for pidfile and logging
[Tue Dec 5 15:51:06 2017 : 74251] speechd: Speech Dispatcher already running.
Speech Dispatcher already running.
هكذا يمكن مراقبة الأخطاء في المجلد
/run/user/1000/speech-dispatcher directory .
إذا سار كل شيء على ما يرام، يمكن تجربة قارئ الشاشة