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

نسخة كاملة : تحويل النص الي كلام في السي شارب بصوت عربي؟
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم
الكلاس SpeechSynthesizer الموجود في using System.Speech.Synthesis  يقوم بتحويل النص الي كلام صوتي ولقد استخدمتة وقام بالعمل بشكل جيد ولكن المشكلة تكمن في النصوص العربية لا يقوم بنطقها فاريد الطريقة التي تعرف النظام ان النص المستخدم نص عربي وكذلك الملفات المطلوبة  حيث قمت بثبيت الملفات الاتية :
Microsoft Speech Platform - Runtime
MicrosoftSpeechPlatformSDK
اما الملف الثالث فهو يعرف اللغة كالاتي
MSSpeech_TTS_fr-CA_Harmonie 
لكني لم اجد ملف للعربية
ارجو الافادة وشكرا
السلام عليكم ورحمة الله

أخي أحمد

إذا أردت كود يحول النص العربي إلى صوت ولكن عن طريق النت فهذا هو الكود
يجب إضافة المكتبة Windows Media Player من نوع COM وملفها هو Interop.WMPLib.dll
PHP كود :
public void iSpeech_ArabicMale(string txt) {
    try {
        
string link "https://api.ispeech.org/api/rest?apikey=52fed8fdfcc6e9ef19b7a579a13d59c0&action=convert&voice=arabicmale&text=" txt;
        
byte[] = new System.Net.WebClient().DownloadData(link);
        
string vf System.IO.Path.GetTempFileName() + ".mp3";
        
System.IO.File.WriteAllBytes(vfb);
        new 
WMPLib.WindowsMediaPlayer() {URL vf};
    }
    catch (
Exception ex) {
        
MessageBox.Show(ex.Message);
    }

شكرا اخي فقد جربت الكود وهو يعمل لكن اخي هذا حل صعب للاتصال الدائم بالانترنت وشكر
الفكرة اني اريد ان اقوم بعمل نداء الي حسب المدخلات وفكرة ان اسجل الاصوات صعبة جدا لانة مطلوب لاكثر من لغة
ولكن اعتقد انة الحل الوحيد
إذا كان الكلام محدد مثلا كما هو موجود ببرامج الملاحة في الموبايل
تستطيع تشغيله ببساطة مثلا
PHP كود :
switch (textbox1.text)
 {
    case 
"مرحبا":
    
// do event
        
break;


اما لو كان النص Free
فالأمر مضني قليلاً
والفكرة اللي في راسي كالتالي
تسجيل كل حرف لوحده - ولو ان التشكيل سيكون عقبة - ثمقراءة النص حرف حرف
وتجميع الملفات الصوتية المقابله لكل حرف في النص ثم تشغيلها كملف صوتي واحد !!!
كبدايات جوجل كانت ولا زالت قراءة الكلمات العربية مكسرة !!!
السلام عليكم ورحمة الله

أخي أحمد

عدلت الكود السابق لتتمكن من حفظ الناتج الصوتي في ملفmp3
PHP كود :
public void iSpeech_ArabicMale(string txt,bool savevoice false) {
 
   try {
 
       string link "https://api.ispeech.org/api/rest?apikey=52fed8fdfcc6e9ef19b7a579a13d59c0&action=convert&voice=arabicmale&text=" txt;
 
       byte[] = new System.Net.WebClient().DownloadData(link);
 
       string vf System.IO.Path.GetTempFileName() + ".mp3";
 
       System.IO.File.WriteAllBytes(vfb);
 
       new WMPLib.WindowsMediaPlayer() { URL vf };
 
       if (b.Length && savevoice) {
 
           using (SaveFileDialog saveFileDialog = new SaveFileDialog()) {
 
               saveFileDialog.Filter "صوتيات (*.mp3)|*.mp3";
 
               if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
 
                   System.IO.File.WriteAllBytes(saveFileDialog.FileNameb);
 
               }
 
           }
 
       }
 
   }
 
   catch (Exception e) {
 
       MessageBox.Show(e.Message);
 
   }


وهنا لابد من إضافة علامة true عند استخدام الكود
PHP كود :
iSpeech_ArabicMale(textBox1.Text,true); 

أخي أبو عمر
السلام عليكم ورحمة الله

أخي أحمد

وجدت موقع ينتج صوت في نظري أفضل من المذكور في الكود السابق وجعلت الكود أيضاً فيه امكانية حفظ الناتج الصوتي في ملفmp3
PHP كود :
public void Acapela(string txtbool savevoice false) {
    try {
        
txt System.Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(txt));
        
string link "http://voice2.reverso.net/RestPronunciation.svc/v1/output=json/GetVoiceStream/voiceName=Mehdi22k?inputText=" txt;
        
byte[] = new System.Net.WebClient().DownloadData(link);
        
string vf System.IO.Path.GetTempFileName() + ".mp3";
        
System.IO.File.WriteAllBytes(vfb);
        new 
WMPLib.WindowsMediaPlayer() { URL vf };
        if (
b.Length && savevoice) {
            
using (SaveFileDialog saveFileDialog = new SaveFileDialog()) {
                
saveFileDialog.Filter "صوتيات (*.mp3)|*.mp3";
                if (
saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
                    
System.IO.File.WriteAllBytes(saveFileDialog.FileNameb);
                }
            }
        }
    }
    catch (
Exception ex) {
        
MessageBox.Show(ex.Message);
    }


قم بإضافة العلامة true لحفظ النتاج الصوتي عند استخدام الكود
PHP كود :
Acapela(textBox1.Texttrue); 

أخي أبو عمر
بارك الله فيك وجعلها في ميزان حسناتك
جاري التجربة