منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : تحويل النص إلى كلام بالعربي دون الاتصال بالأنترنت
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
تحويل النص إلا كلام بالعربي دون اتصال بالنت
السلام عليكم و رحمة الله و بركاته
 بعد تتبع مسار ملفات الصوت الخاصة باللغة تبين ان هناك اكثر من ناطق باللغة العربية و لكن يلزم تفعيله  Big Grin
في البداية نتأكد من ان لغتنا لديها الميزات المطلوبة من الاعدادات 






و اذا لم تكن مثبتة ميزة تحويل النص الى كلام فيجب تثبيتها





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


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

بعد تثبيت الاصوات المطلوبة


الشيئ المؤسف في الموضوع ان هذه الاصوات لا يتم تثبيتها في المكان المطلوب بشكل افتراضي
اذ انه يجب ان تتوفر بشكل فعلي في المسار التالي الى جانب الاصوات القديمة.
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\SPEECH\Voices\Tokens

حيث لا تتواجد الى حزمتين اساسيتين في هذا المكان.
و بعد البحث عن الحزم التي قمنا بتثبيتها تبين انها تواجدت بمكان اخر  
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Speech_OneCore\Voices\Tokens


لذا كنا مجبرين على اعادة زرعاها في المسار الاول و لتحقيق المهمة , نذهب الى المسار 
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Speech_OneCore\Voices\Tokens
و نتبع كما بالصور




بعد تصدير الملف نحفظه في مكان على اي قرص ,
نقوم بفتح الملف عبر اي محرر نصوص
و نعدل داخله كما بالصورة
باستبدال المسار داخل الملف الى المسار المطلوب


و من ثم نحفظ الملف , و بعد ذلك نقوم بالضغط باليمين على الملف و من ثم Merge او دمج
و نعمل ذلك مع كل ملف جديد.





بعد هذا الجهد نلاحظ توفر الحزم في المكان المطلوب , و لم يتبقى سوى التجريب.

انشأ مشروع جديد و ضع عليه أدوات كما يلي





الاجراء الخاص بجلب الاصوات
PHP كود :
   Private Sub Btn_GetVoices_Click(sender As ObjectAs EventArgsHandles Btn_GetVoices.Click
        Using synth 
As SpeechSynthesizer = New SpeechSynthesizer()

 
           For Each voice As InstalledVoice In synth.GetInstalledVoices()
 
               Dim info As VoiceInfo voice.VoiceInfo
                Dim AudioFormats 
As String ""

 
               For Each fmt As SpeechAudioFormatInfo In info.SupportedAudioFormats
                    AudioFormats 
+= String.Format("{0}" vbLffmt.EncodingFormat.ToString())
 
               Next

                ListBox1
.Items.Add(info.Name)

 
               TextBox1.AppendText(info.Name vbNewLine)
 
               TextBox1.AppendText(info.Culture.DisplayName vbNewLine)
 
               TextBox1.AppendText(info.Age vbNewLine)
 
               TextBox1.AppendText(info.Gender vbNewLine)
 
               TextBox1.AppendText(info.Description vbNewLine)
 
               TextBox1.AppendText(info.Id vbNewLine)
 
               TextBox1.AppendText(voice.Enabled vbNewLine)


 
               If info.SupportedAudioFormats.Count <> 0 Then
                    TextBox1
.AppendText(" Audio formats: " AudioFormats vbNewLine)

 
               Else
                    TextBox1
.AppendText(" No supported audio formats found" vbNewLine)

 
               End If

 
               Dim AdditionalInfo As String ""

 
               For Each key As String In info.AdditionalInfo.Keys
                    AdditionalInfo 
+= String.Format("  {0}: {1}" vbLfkeyinfo.AdditionalInfo(key))
 
               Next
                TextBox1
.AppendText(" Additional Info - " AdditionalInfo vbNewLine)

 
               TextBox1.AppendText("ـــــــــــــــــــــــــــــــــــــــ" vbNewLine)

 
           Next
        End Using

    End Sub 


الاجراء الخاص بالكلام
PHP كود :
   Private Sub Speek_Arabic()
 
       Dim speaker = New SpeechSynthesizer()
 
       ' speaker.Rate = -2
        Dim culture = CultureInfo.GetCultureInfo("ar-SA")
        Dim voices = speaker.GetInstalledVoices(culture)

        If voices.Count > 0 Then
            speaker.SelectVoice(voices(0).VoiceInfo.Name)
            speaker.SpeakAsync(RichTextBox1.Text)
        End If
    End Sub 
توضيح المعلق الذي سيتكلم هنا هو Naayf .
وجب التنويه الى ان Culture هو من يحدد المتحدث لذلك قمنا بجلب معلومات شاملة عن المعلق , و اذا توفر اكثر من متحدث بنفس اللهجة فاننا نختار اول معلق راجع الكود.
اما Hoda فـ Culture الخاص بها فهو (ar-EG).

اما المكاتب الخارجية فجربت احداها على الرابط التالي.
Vision A ID
الصوت نزل باسم معلق اسمه Maged.
يتم اختيار المعلق حسب اسمه في الكود .

يوجد العديد من المعلقين على الانترنت لكن الاشكال ان كل المعلقين مدفوعين.
لذا من النادر ان تجد معلق مجاني.

لا تنسى استيراد فضاء الاسماء الخاص بالمكتبة System.Speech.

اما داخل المشروع.

PHP كود :
Imports System.Speech.Synthesis
Imports System
.Speech.AudioFormat
Imports System
.Globalization 
بالتوفيق للجميع.
السلام عليكم ورحمة الله وبركاته

مساهمة رائعة من شخص مبدع، جزاك الله عنا كل خير، وبعد:

طبقت خطوات الريجستري، وهذه الصورة:
[attachment=24550]
والملفات بالمرفقات:
[attachment=24552]
وطبقت خطوات الأكواد، ولكن لم تنجح النتيجة، حيث لم يظهر إلا الأصوات الأجنبية:
[attachment=24551]

والبرنامج الذي قمت بتطبيقه بالمرفقات
[attachment=24553]

أخي العزيز عندما قمت بتعديل الحفظ إلى مسار الريجستري التالي:
كود :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens
ظهرت أسماء الأصوات العربية في الليستا كما تشاهد:
[attachment=24554]

ولكن لا يتم نطق الكلام بالعربي وإنما يظهر هذا الخطأ:
[attachment=24555]
السلام عليكم و رحمة الله و بركاته
بعد جلب الاصوات يظهر لدي اسماء المعلقين كما يلي

PHP كود :
Microsoft David Desktop
الإنجليزية 
(الولايات المتحدة)
30
1
Microsoft David Desktop 
English (United States)
TTS_MS_EN-US_DAVID_11.0
True
 No supported audio formats found
 Additional Info 
  AgeAdult
  Gender
Male
  Language
409
  Name
Microsoft David Desktop
  SharedPronunciation

 
 SpLexicon: {0655E396-25D0-11D3-9C26-00C04F8EF87C}
 
 VendorMicrosoft
  Version
11.0

ـــــــــــــــــــــــــــــــــــــــ
Microsoft Naayf
العربية 
(السعودية)
30
1
Microsoft Naayf 
Arabic (Saudi)
MSTTS_V110_arSA_NaayfM
True
 No supported audio formats found
 Additional Info 
  AgeAdult
  DataVersion
11.0.2016.1130
  Gender
Male
  Language
401
  Name
Microsoft Naayf
  SayAsSupport
spell=NativeSupportedcardinal=NativeSupportedordinal=NativeSupporteddate=NativeSupportedtime=NativeSupportedtelephone=NativeSupportedurl=NativeSupportedalphanumeric=NativeSupported
  SharedPronunciation

 
 VendorMicrosoft
  Version
11.0

ـــــــــــــــــــــــــــــــــــــــ
Microsoft Zira Desktop
الإنجليزية 
(الولايات المتحدة)
30
2
Microsoft Zira Desktop 
English (United States)
TTS_MS_EN-US_ZIRA_11.0
True
 No supported audio formats found
 Additional Info 
  AgeAdult
  Gender
Female
  Language
409
  Name
Microsoft Zira Desktop
  SharedPronunciation

 
 VendorMicrosoft
  Version
11.0

ـــــــــــــــــــــــــــــــــــــــ
Maged
العربية 
(مصر)
0
1
Vocalizer Maged
VocalizerMaged
True
 No supported audio formats found
 Additional Info 
  NameMaged
  Vendor
VisionAid International
  Gender
Male
  Language
C01

ـــــــــــــــــــــــــــــــــــــــ 

و انت يجب ان يظهر لديك اسماء المعلقين لتختار من بينهم من تريد


بعد تجريب مثال فهو يحتوي على هدى فقط لذا وجب تعديل السطر التالي
PHP كود :
       Dim culture CultureInfo.GetCultureInfo("ar-SA"
الى
PHP كود :
Dim culture CultureInfo.GetCultureInfo("ar-EG"
و ما تبقى سارى ما يمكنني فعله جرب الان مع Hoda
وجدت الحل، ونجحت الطريقة عندي 100% وتم النطق بالعربي، والحل هو:
في مفتاح Naayf نضيف قيمة جديدة باسم VoicePath نضع فيها هذا المحتوى:
كود :
%windir%\Speech_OneCore\Engines\TTS\ar-SA\M1025Naayf
المفاتيح بالمرفقات للتجريب والتأكد
والأكواد من جديد بالمرفقات
هذا ملف تصويري للعملية
انا لم اجري اي تعديل فقط كما شرحت
ارجع الى الصور و لاحظ ان القيمة VoicePath   موجودة مسبقاً 
والا لن يعمل معك اي ملف صوت حتى الاجنبي.
 الحمد لله انها عملت معك
(25-04-20, 07:23 PM)ابو ليلى كتب : [ -> ]هذا ملف تصويري للعملية
انا لم اجري اي تعديل فقط كما شرحت
و الحمد لله انها عملت معك

أخي العزيز أبو ليلى بيَّض الله وجهك وجعل هذا السَّبْقَ البرمجي في موازين حسناتك في هذا الشهر الفضيل
حقيقة أنت قدمت عملاً رائعاً، طالما أتعب الكثير من البرمجين
فجزاك الله عنا كل خير وجعلك من عتقاء الشهر الفضيل
Smile
السلام عليكم ورحمة الله وبركاته
لو ان مؤسسة برمجية ضمت في صفوفها الاخ ابوليلى  او   السندبااد لتمكنوا من النجاح
فكيف لو اجتمع الاثنان !!! حتما تذلل الصعاب
بارك الله بكما ولكما وجعله في موازين حسناتكما
اخي السندباد يطهر معي نفس الخطا الزي يظهر معك هل تعرف ما هو الحل وشكران
(25-04-20, 07:34 PM)ابراهيم ايبو كتب : [ -> ]
السلام عليكم ورحمة الله وبركاته
لو ان مؤسسة برمجية ضمت في صفوفها الاخ ابوليلى  او   السندبااد لتمكنوا من النجاح
فكيف لو اجتمع الاثنان !!! حتما تذلل الصعاب
بارك الله بكما ولكما وجعله في موازين حسناتكما

هذا ذوقك الرفيع وأخلاقك العالية أخي وأستاذي الحبيب إبراهيم
أسأل الله تعالى أن يستجيب دعواتك الطيبة، ولك مثل ذلك Smile

(25-04-20, 08:10 PM)محمد ايمن كتب : [ -> ]اخي السندباد يطهر معي نفس الخطا الزي يظهر معك هل تعرف ما هو الحل وشكران

ذكرت الحل هنا في هذه المشاركة
http://vb4arb.com/vb/showthread.php?tid=...#pid160022
(25-04-20, 07:31 PM)السندبااد كتب : [ -> ]أخي العزيز أبو ليلى بيَّض الله وجهك وجعل هذا السَّبْقَ البرمجي في موازين حسناتك في هذا الشهر الفضيل
حقيقة أنت قدمت عملاً رائعاً، طالما أتعب الكثير من البرمجين
فجزاك الله عنا كل خير وجعلك من عتقاء الشهر الفضيل
Smile

بارك الله بك اخي بشير و زادك الله خلقاً و علماً و جعلنا و اياكم جميعا من عتقاء شهر رمضان من النار
بالمناسبة كنت اود ان اسألك عن الاخ ابو جاسم (الشاكي لله) ان كان لديك اخبار عنه فقد طال انقطاعه 
وفقه الله اين ما كان (اشتقنا له)

(25-04-20, 07:34 PM)ابراهيم ايبو كتب : [ -> ]
السلام عليكم ورحمة الله وبركاته
لو ان مؤسسة برمجية ضمت في صفوفها الاخ ابوليلى  او   السندبااد لتمكنوا من النجاح
فكيف لو اجتمع الاثنان !!! حتما تذلل الصعاب
بارك الله بكما ولكما وجعله في موازين حسناتكما

الاخ العزيز ابراهيم وفقك الله لما يحب و يرضى و زادك من خيره و رزقك خيرا
جزاك الله خيرا
الصفحات : 1 2