تقييم الموضوع :
  • 1 أصوات - بمعدل 5
  • 1
  • 2
  • 3
  • 4
  • 5
تحويل النص إلى كلام بالعربي دون الاتصال بالأنترنت
#1
تحويل النص إلا كلام بالعربي دون اتصال بالنت
السلام عليكم و رحمة الله و بركاته
 بعد تتبع مسار ملفات الصوت الخاصة باللغة تبين ان هناك اكثر من ناطق باللغة العربية و لكن يلزم تفعيله  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 
بالتوفيق للجميع.
اللهم لك الحمد كما ينبغي لجلال وجهك و عظيم سلطانك
في حل و ترحال
الرد }}}


الردود في هذا الموضوع
تحويل النص إلى كلام بالعربي دون الاتصال بالأنترنت - بواسطة ابو ليلى - 25-04-20, 05:13 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سلسلة تعليمية] شرح تفصيلي وكامل عن كيفية الاتصال بسيكوال وعمل اتاش برمجي وجلب اسماء السيرفرات ابو انس 3 4,046 25-02-22, 12:44 AM
آخر رد: atefkhalf2004
  تحويل Interface الي دوال API silverlight 1 3,659 24-11-21, 04:15 PM
آخر رد: yassoo1985
  [مقال] إضافة خاصية التحجيم التلقائي - AutoSize - إلى أداة مربع النص - TextBox sooriaty03 10 12,834 21-03-21, 09:53 PM
آخر رد: عبد الهادي بهاب
Star [مقال] كيفية تحويل اسعار العملات بإستخدام Yahoo Exchange Rates Web Service Programmation 9 9,478 22-02-20, 12:58 PM
آخر رد: دمعة المقهور
  شرح انشاء برنامج تحويل صيغ الملفات الصوتيه CLARO 9 7,531 16-11-18, 04:41 PM
آخر رد: anassss
Lightbulb [VB.NET] درس مبسط في الاتصال بقاعدة بيانات SQL Bin-Komet 3 3,578 23-10-17, 09:34 AM
آخر رد: مصمم هاوي
Star [مقال] طرق الاتصال عبر الشبكة المحلية Fantastico 0 2,892 29-06-17, 12:09 AM
آخر رد: Fantastico
  [VB.NET] ( يبدو انني مزعج ) ممن عندهم خبره في vb.net هل يمكنك تحويل النص التالي إلى كود برمجي thevirus 2 3,825 21-11-16, 06:35 AM
آخر رد: أبو عمر
  مشكلة في الاتصال بقاعدة بيانات Mr.Fenix 2 3,361 19-08-16, 09:34 AM
آخر رد: Mr.Fenix
  [VB.NET] عمل برنامج تحويل الفيديو video convert alking-0999 0 3,023 09-07-15, 12:50 PM
آخر رد: alking-0999

التنقل السريع :


يقوم بقرائة الموضوع: