تقييم الموضوع :
  • 1 أصوات - بمعدل 1
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] arabic text to speech
#1
السلام عليكم اخواني الاعزاء

انا تعبت كثيراً في البحث عن كود يقوم بتحويل النص المكتوب بالعربي الى صوت دون ان اصل الى نتيجة .....

ارجو من الاخوة الاعزاء مساعدتي في هذا الموضوع ... ودمتم لخدمة الناس
الرد }}}
تم الشكر بواسطة: mohgam3395
#2
السلام عليكم
صادفت نفس المشكلة يوما وهذا ما توصلت اليه
ضع webbrowser control في مشروعك وقم بتمرير هذا الرابط اليه مع تغيير النص الذي تريده ان ينطق "http://translate.google.com/translate_tts?tl=ar&q=اهلا بك معنا" على ان يكون مشروعك يعمل بالانترنت
ملحوظة
هناك مشكلة في web breowser control قد لا تحبدها مثلي وهي كون هذا الاخير يعطيك النص المراد نطقه لتحميله على شكل mp3 والاستماع اليه على عكس firefox او chrome
الرد }}}
تم الشكر بواسطة: Sajad
#3
انا اشكر اهتمامك بالموضوع ... الا اني اجد مشكلة مع النص العربي لا يتم نطقه . علماً انه يعمل مع اللغةالفرنسية والانكليزية كما يلي ....

اللغة الانكليزية
كود :
WebBrowser1.Navigate("http://translate.google.com/translate_tts?tl=en&q=good")

اللغة الفرنسية

[code] WebBrowser1.Navigate("http://translate.google.com/translate_tts?tl=fr&q=très bon")
الرد }}}
تم الشكر بواسطة:
#4
الرد }}}
تم الشكر بواسطة:
#5
عجبتني حركة google translate دقايق واجهز لكم دالة
الرد }}}
تم الشكر بواسطة:
#6
تفضلوا التطبيق



بما انه بالسي شارب سأضع الدالة الرئيسية لجلب الصوت وتشغيله >

PHP كود :
Private Sub DownloadAndPlay()
    Try
        
'main delecration'
        
Dim soundData As Byte()
        
Dim url As String String.Format("http://translate.google.com/translate_tts?tl={0}&q={1}"comboBox1.Text.ToLower(), textBox1.Text.Trim())

        
'create requset'
        
Dim rq As HttpWebRequest TryCast(WebRequest.Create(url), HttpWebRequest)
        
rq.UserAgent "Mozilla/5.0 (Windows NT 6.1; rv:27.0) Gecko/20100101 Firefox/27.0"

        'read response'
        
Dim response As HttpWebResponse TryCast(rq.GetResponse(), HttpWebResponse)
        
Using stream As New BinaryReader(response.GetResponseStream())
            
soundData stream.ReadBytes(CInt(response.ContentLength))
            
stream.Close()
            
response.Close()
        
End Using


        
'create voice file in windows-temprary folder'
        
Dim tempFilePath As String CreateTempFile(soundData)

        
'play temprary-file sound'
        
PlaySound(tempFilePath)

    Catch 
ex As Exception
        MessageBox
.Show(ex.Message)
    
End Try
End Sub

Private Function CreateTempFile(data As Byte()) As String
    
'sound format is mpeg'
    
Dim soundFileName As String System.IO.Path.GetTempPath() & Guid.NewGuid().ToString() & ".mpeg"
    
File.WriteAllBytes(soundFileNamedata)
    Return 
soundFileName
End 
Function

Private 
Sub PlaySound(file As String)
    
'initlize player'
    
Dim player As New WMPLib.WindowsMediaPlayer()
    
player.settings.volume 100
    player
.settings.autoStart True
    AddHandler player
.PlayStateChangeAddressOf player_PlayStateChange
    player
.URL file
End Sub

Private Sub player_PlayStateChange(NewState As Integer)
    
Application.DoEvents()
    If 
NewState CInt(WMPLib.WMPPlayState.wmppsMediaEndedThen
        
'release everything'
        
toolStripProgressBar1.Style ProgressBarStyle.Blocks
    End 
If
End Sub 


طبعا لاتنسوا اضافة مكتبة Windows Media Player المسؤولة عن تشغيل الاصوات (موجود في تاب COM في Add Reference)




الملفات المرفقة
.rar   WordSpeaker.rar (الحجم : 169.89 ك ب / التحميلات : 533)
الرد }}}
تم الشكر بواسطة: Sajad , Basil Abdallah , Basil Abdallah , a7med saba , abiza
#7
Star 
الشاكي لله .... الشاكي لله ..... الشاكي لله ...... الشاكي لله ........ الشاكي لله



لا استطيع كيف اشكرك اخي العزيز
http://www.vb4arb.com/vb/images/icons/heart.gif
الرد }}}
تم الشكر بواسطة: الشاكي لله
#8
شكراً لك اخي العزيز على ردك الجميل وهو يفي بالغرض ....

لي سؤال اخر هل هناك طريقة او كلاس يقوم بذلك دون الاتصال بالانترنيت
الرد }}}
تم الشكر بواسطة:
#9
السلام عليكم

نعم اخي العزيز هنالك دوال وفئات تقوم بالمهمة بدون الاتصال بالانترنت وهي عن طريق مجال الاسماء Speech التي تستطيع ان تضيفها الى المشروع عن طريق Add Reference ومن ثم تكتب الكود التالي:

PHP كود :
using System.Speech.Synthesis;
var 
spk = new SpeechSynthesizer();
            
spk.Speak(textBox1.Text); 

تحياتي
الرد }}}
تم الشكر بواسطة:
#10
مشكور اخي Sajad على هذه الاضافة الرائعة ولكنه لا ينطق الجملة المكتوبة باللغة بالعربية
الرد }}}
تم الشكر بواسطة:



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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم