الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن تشغيل عدة اصوات بنقرة زر واحدة؟

بدأه SuperNova57 في 14 أبريل 2012 · 19 رد · 1,900 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الموضوع و كل ما فيه اني دخلت حرف في تكست بوكس و ضغطت زر و طلع لي صوته

طيب لمن دخلت عدة حروف في التكست بوكس ما طلع لي غير صوت اخر حرف في التكست بوكس

كيف اخلي اصوات كل الحروف تبان؟

هل ممكن مثلا احفظ الاصوات في مصفوفة من نوع بايت مثلا و كل ما يجيني حرف اضيف صوته لهادي المصفوفة ؟و كيف اسوي كدا بالكود؟ و لا الفكرة اصلا غلط ؟

يا ريت تساعدوني مشكورين

و لو تبسطوا لي الموضوع لاني مبتدئة

:)

#2

السلام عليكم ...

ما هي الــ Text To Speech التي تستخدمونها ؟

ممكن وضع كود نطق حرف واحد الذي تم استخدامه ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#3
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim sentence As String = TextBox1.Text
        Dim letterName As Char
        Dim symblicName As String = ""


        For Each letterName In sentence
            Select Case letterName
                Case "ا"
                    symblicName = "A_1"
                Case "ب"
                    symblicName = "B_1"
                Case "ر"
                    symblicName = "R_1" 
                Case "ش"
                    symblicName = "SH_1"
                Case "ك"
                    symblicName = "K_1"
                Case "ل"
                    symblicName = "L_1"
            End Select

            playFile(symblicName)
        Next

    End Sub
    Private Sub playFile(ByVal Name As String)
        My.Computer.Audio.Play(Application.StartupPath + "\sounds\" + Name + ".wav")

    End Sub
End Class

A_1 . B_1 ....الخ هي اسماء الملفات الصوتية المقابلة

#4

السلام عليكم ..

  1. يوجد الكثير من تطبيقات و مكتبات الــ Text To speech ذات الجودة العالية ..
  2. إذا كنت تريد بناء واحد بطريقتك , فالأفضل هو دمج الأصوات في ملف صوتي واحد و تشغيل الملف النهائي ..
  3. لم استخدم Select Case لتحديد الملف الصوتي الخاص بالحرف , بل استخدمت dictionary فيه الــ key هو الحرف و الــ value هو اسم الملف , طالما ان اسماء الملفات هي 1 و 2 و 3 و 4 و 5 .. و 28
  4. في المرفقات مشروع بسيط يقوم بذلك و فيه:
    1. تم استخدام أصوات جاهزة تم جلبها من مشروع مفتوح المصدر هنا , الأحرف موجودة بثلاث صيغ (ضمة , فتحة , كسرة) , في المثال فقط استخدمت الضمة , لذلك النتائج سيئة .
    2. تم استخدام كود دمج ملفات الصوت من نوع wav من هنا (Concatenating Wave Files Using C# 2005) و تم تحويل الكود إلى VB.NET من هنا
    3. من أراد إكمال المشروع و التطوير عليه , فهو في المرفقات ..

      ArabTeam_ArabicTTS_VB_NET.7z

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 18 أبريل 2012 في 21:11

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#5

اشكرك جدا على مشاركتك القيمة

عندي سؤال اخر: الان النص كله عبارة عن كلمة واحد اي انه لا يوجد مسافات .. و عندما وضعت مسافات ظهرت لي رسالة خطا .. فماذا تقترح ليتم حل المشكلة؟

#6

السلام عليكم ..

  1. ببساطة نعتبر أن الفراغ هو الحرف رقم 29 في اللغة العربية , و قد قمت بتسجيل مقطع صوتي للفراغ (أكيد تشغيل التسجيل لمدة نصف ثانية مثلا و إيقافه دون التحدث , هو فراغ) و تم إضافة الملف 29.wav للمجلدات السابقة و تمت إضافته للــ Dictionary ..
  2. يمكن تحميل الملفات الجديدة من مرفقات المشاكة السابقة ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#7

جزاك الله كل خير

اود ان اسال عن البرنامج المستخدم في تسجيل الحروف و كيف اجعلها تكون كلها بنفس الطول (نصف ثانية كما تفضلت من قبل في ردك السابق)

حيث ان السكون و المدود غير موجودة في الملفات السابقة

#8

السلام عليكم ..

و جزاكم الله خيرا ...

  1. كما قلت في مشاركاتي السابقة , أني استخدمت الأصوات من مشروع مفتوح المصدر (رابط), و لكن بالنسبة لصوت الفراغ الذي قمت بتسجيله , استخدمت الــ Sound recorder الموجود في الويندوز و الذي يسجل الأصوات بصيغة wma ثم استخدمت برنامج تحويل أصوات (Format Factory) لتحويله إلى wav , مع إمكانية عمل قص من بداية الملف و من نهايته (بعد التسجيل نضع الــ start time و الــ end time بأجزاء الثواني) .
  2. يمكن استخدام برامج نطق الكلمات الانكليزية و كتابة أحرف بحيث أن نطقها يعطي الحرف باللغة العربية مثلا bo هو صوت حرف الباء مع الضمة , و تسجيل هذا الصوت ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#9

بعض الاشياء لم افهمها في الكود فعدت لاستخدام select و لكنه لم يعمل :(

        Dim sentence As String = TextBox1.Text
        Dim letterName As Char
        Dim symblicName As String = ""

        Dim myList As New List(Of String)

        For Each letterName In sentence

            Select Case letterName
                Case "ا"
                    symblicName = "1A"
                Case "ب"
                    symblicName = "1B"
                Case "ر"
                    symblicName = "1R"
                Case "ش"
                    symblicName = "1SH"
                Case "ك"
                    symblicName = "1K"
                Case "ل"
                    symblicName = "1L"
            End Select
            myList.Add(Path.Combine(Application.StartupPath + "\SDB\", symblicName + ".wav")) ' PROBLEM IN HERE

لكن حسبما فهمت ان الكود يظهر اصوات الحروف بالترتيب

كيف يمكننا تعديله ليظهر الصوت باي ترتيب على حسب ما هو موجود في مربع النص ؟

و شيء اخر هل بامكان الفور ايتش ان تاخد حرفين في المرة الواحدة بدل حرف واحد؟ مثلا ميم ثم واو ليظهر لنا صوت الحرف الخاص بالميم الممدودة؟ او لنقل اننا ادخلنا حرفا و حركته فناخذهما معا لنظهر الصوت المناسب للحركة ؟

#10

السلام عليكم ...

  1. اقتباس
    لكن حسبما فهمت ان الكود يظهر اصوات الحروف بالترتيب
    الكود الذي ارسلته أنا ينطق الحروف بأي ترتيب كان ..
  2. اقتباس
    و شيء اخر هل بامكان الفور ايتش ان تاخد حرفين في المرة الواحدة بدل حرف واحد؟ مثلا ميم ثم واو ليظهر لنا صوت الحرف الخاص بالميم الممدودة؟ او لنقل اننا ادخلنا حرفا و حركته فناخذهما معا لنظهر الصوت المناسب للحركة ؟
    هذا كود اقتطاع النص حرفين حرفين أو (حرف في النهاية إذا لم يوجد غيره) :
    For i = 0 To textBox1.Text.Length -1 Step 2
       			if( i + 1 < textBox1.Text.Length)
    			MessageBox.Show(textBox1.Text(i) + textBox1.Text(i + 1))
    			Else
    				MessageBox.Show(textBox1.Text(i))
    			end if
    		Next

  3. الكود الذي ارسلته يحتاج فقط لــ Next الخاصة بــ For كمايلي :
    Dim sentence As String = TextBox1.Text
           	Dim letterName As Char
        	Dim symblicName As String = ""
    
        	Dim myList As New List(Of String)
    
        	For Each letterName In sentence
    
            	Select Case letterName
                	Case "ا"
                    	symblicName = "1A"
                	Case "ب"
                    	symblicName = "1B"
                	Case "ر"
                    	symblicName = "1R"
                	Case "ش"
                    	symblicName = "1SH"
                	Case "ك"
                    	symblicName = "1K"
                	Case "ل"
                    	symblicName = "1L"
            	End Select
            	MessageBox.Show (symblicName)
            	myList.Add(IO.Path.Combine(Application.StartupPath + "\SDB\", symblicName + ".wav")) ' PROBLEM IN HERE
            	Next

1

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#11

اشكرك جدا على مشاركاتك القيمة التي استفدت منها كثيرا :)

لدي سؤال اخر لقد بحثت كثيرا عن تسجيلات صوتية تحوي السكون و المدود و التنوين لكني لم اجدها حتى الان حيث ان المصدر السابق لا يحتوي سوى الحركات الرئيسية و النطق لن يكون بتلك الدقة في هذه الحالة فاين بامكاني ايجادها؟

#12

السلام عليكم ..

لا شكر على واجب ..

اقتباس

لدي سؤال اخر لقد بحثت كثيرا عن تسجيلات صوتية تحوي السكون و المدود و التنوين لكني لم اجدها حتى الان حيث ان المصدر السابق لا يحتوي سوى الحركات الرئيسية و النطق لن يكون بتلك الدقة في هذه الحالة فاين بامكاني ايجادها؟

...

  1. المفروض ان تسجلوا الصوت المطلوب ثم تقومون بقصه بأحد برامج تعديل الأصوات مثل (Format Factory) .
  2. أو تقوموا بترجمة كلمة على ترجمة جوجل http://translate.google.com من الإنكليزية للعربية ثم تطلبون نطق الكلمة من جوجل , و لو كنتم مثبتين Internet Download Manager ستظهر أيقونة لتحميل ملف الصوت للكلمة الناتجة عن الترجمة , ثم تقومون بأخذ الجزء المطلوب بعملية القص , طبعا حاولوا أكثر من كلمة حتى تحصلوا على المطلوب .
  3. أو ممكن أن تبحثوا عن برنامج ناطق للعربي , و تسجلوا الصوت المطلوب . أو برنامج ناطق للإنكليزي مثل talk it رابط و تكتبون له كلمة بالانكليزية بحث أن نطقها يقابل الحرف المطلوب بالعربية مثل hiiii أو haaaa .. و هكذا .
  4. هنا kacst-atts برنامج ناطق للنص العربي مع التشكيل ... فيه أصوات أيضا مسجلة .. حاولو الاستفادة منها ... خذ القائمة open و افتح احد الملفات الموجودة معه (اتحدث عن الــ demo) ثم تطلب منه نطقها .. و حاول تسجيل الصوت .. . أحيانا لا ينطق إلا مرة واحدة و يتطلب إغلاقه و فتحه من جديد .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#13

اشكرك جدا على ردودك القيمة .. وجدت ان اخر رابط مفيد جدا من ناحية الاستفادة من الاصوات لكن المشكلة الان باتت في الكود حيث ان اسماء الملفات الصوتية مختلفة و يتم الاستفادة منها بطريقة مختلفة عن الاكواد السابقة

كيف يمكن رؤية السورس كود الخاص بالبرنامج؟

#14

السلام عليكم ...

لا شكر على واجب .. ...

البرنامج مفتوح المصدر , و لتحميل الأدوات و الكود المصدري , ادخلوا إلى المجلد المسمى Developers في ملفات المشروع هنا. و خصوصا الملفات kacst_atts2.zip و kacst_lib2.zip .

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#15

جزيت خيرا ..لقد قمت بفتح الملفات كما اريتني و وجدت ان اللغة المستخدمة هي c++ هل بالامكان تحويل السورس كود الى فيجوال بيسك؟

#16

السلام عليكم ..

  1. قوموا بالبحث عن أدوات تحويل , هذه واحدة (C++ to VB Converter). إنها demo لم أجربها و لا أعرف مدى دقتها .
  2. يفضل أن يقوم بتحويل الأكواد مبرمج يعرف تعليمات اللغة الأولى و ما يقابها من اللغة الأخرى ..

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#17

السلام عليكم ما زلنا بصدد اعداد كود مبسط و لدينا مشكلة بسيطة

لناخذ مثالا على حرف الذال (ذ)

من المفترض من الكود ان يفصل الحروف كالتالي:

3 حروف (ذاً) , (ذَا) , (ذِي) , (ذُو)

حرفين (ذْ) , (ذَ) , (ذِ) , (ذُ) , (ذٍ) , (ذٌ)

اذا لم يطايق الحالات السابقة فانه يتم عرض الحرف وحيدا

مثال: اذا << من المفترض ان يظهر كل حرف على حدا (ا) , (ذ) , (ا)

اذاً << (ا) , (ذاً)

المشكلة ان الكود لا يقوم بعرض الحروف كما في المثال بعد ان يجد ان الحرف لا تتبعه حركة

هذا هوا الكود:

For i = 0 To TextBox1.Text.Length - 1 Step 3
            If (i + 2 < TextBox1.Text.Length) Then
                If (TextBox1.Text(i + 2) = "ً") Then 'tanween fatha
                    MessageBox.Show(TextBox1.Text(i) + TextBox1.Text(i + 1) + TextBox1.Text(i + 2))
                ElseIf ((TextBox1.Text(i + 1) = "َ" And TextBox1.Text(i + 2) = "ا") Or (TextBox1.Text(i + 1) = "ِ" And TextBox1.Text(i + 2) = "ي") Or (TextBox1.Text(i + 1) = "ُ" And TextBox1.Text(i + 2) = "و")) Then 'mad
                    MessageBox.Show(TextBox1.Text(i) + TextBox1.Text(i + 1) + TextBox1.Text(i + 2))
                ElseIf (TextBox1.Text(i + 1) = "َ" Or TextBox1.Text(i + 1) = "ِ" Or TextBox1.Text(i + 1) = "ُ" Or TextBox1.Text(i + 1) = "ْ") Then 'harakat
                    MessageBox.Show(TextBox1.Text(i) + TextBox1.Text(i + 1))
                    i = i - 1
                Else
                    MessageBox.Show(TextBox1.Text(i))
                    i = i - 2
                End If  
            Else
                MessageBox.Show(TextBox1.Text(i))
            End If
        Next
#18

لدي سؤال اخر ايضا: لماذا ينتج البرنامج صوت صفير قبل ان يبدا بنطق الحروف؟

#19

السلام عليكم ..

السؤال المطروح قد ابتعد كثيرا عن العنوان ..

يرجى كتابة موضوع جديد (بعنوان واضح كي لا يغلق الموضوع) .. و ضعوا محاولتكم ...

بالنسبة لصوت الصفير ... للأسف لا معلومات لدي ..

تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 1 مايو 2012 في 12:33

لا إله إلا الله ... محمد رسول الله

لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة

المعرًف القديم : houssam11350_11350

من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر

#20

اعتذر لذلك ساقوم بوضع السؤال في موضوع منفصل ..شكرا

:)

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…