باسمة
المساهمات : 352 تاريخ التسجيل : 14/03/2013
| موضوع: خوارزمية برنامج ناطق للنصوص بالعربي الجمعة يوليو 17, 2015 12:19 pm | |
| خوارزمية برنامج ناطق للنصوص بالعربيالسلام عليكم ورحمة الله وبركاته الموضوع بدون شك صعب صعوبة اللغة العربية أخي دعنا نحاول ... محاولة فاشلة قد تنجح بتطوير منك أحسن من عدم وجود محاولة أليس كذلك ؟ ندخل على الرابط التالي : http://www.acapela-group.com/ و أبدأ في تجميع كل حرف بأصواته مهملا في ذلك الشدة حيث أجمع مثلا أصوات الحرف ب بأصواته على شكل ملفات mp3 وسيكون المتحصل عليه 10 أصوات هي [size=48]بَ -بُ-بِ-بَا-بُو-بِي-بًا-بٌ-بٍ-بْ هذه الملفات الصوتية تحفظ بنفس تسميتها حيث سيصبح عندك بَ.mp3 - بً.mp3 .... الخ بعد ما تجمع كل الحروف العربية بهذا الشكل مع مراعاة احتمالات الهمزة على " النبرة و الواو و السطر ... الخ تحتاج لملفين اثنين واحد لـ أل التعريف سجل : الْ بهذا الشكل و احفظها ينفس التسمية وتحتاج لفترة صمت سجل ملف مدته ثانيتين أو ثلاث شاغر و تسميته 0 بعد جمع هذه الملفات ضعها كلها في مجلد audio التابع للأوتوبلاي [/size] السلام عليكم ورحمة الله وبركاته في global functions
كود PHP: كود PHP: - الكود:
-
function muzikcal(path)
Audio.Load(CHANNEL_BACKGROUND, path, true, false);
Page.StartTimer(10);
local tblSplit = String.SplitPath(path);
nLen = Audio.GetLength(CHANNEL_BACKGROUND)
tnctr=true
end
في حدث on timer
- الكود:
-
كود PHP:
[code]
if tnctr then
nCurPos = Audio.GetCurrentPos(CHANNEL_BACKGROUND);
nGetLength = Audio.GetLength(CHANNEL_BACKGROUND);
if Math.Round(nCurPos)== Math.Round(nGetLength) then
item = item + 1
itemdatasi = ListBox.GetItemData("ListBox2", item);
ListBox.DeselectItem("ListBox2", -1);
ListBox.SelectItem("ListBox2", item);
muzikcal(itemdatasi)
end
end [/code]
ضع في تجميعيتك العناصر التالية - ListBox1 تدعم العربي و لا تكتب فيها أي معادلة يمكنك اخفاء العنصر - Input1 يقبل العربي و متعدد الاسطر هذا العنصر ستكتب فيه ما تريد سماعه - ListBox2 تدعم العربي و تستطيع جعله مخفي كذلك في حدث on select لهذا العنصر أكتب
- الكود:
-
كود PHP:
[code]
tblSel = ListBox.GetSelected(this);
if tblSel then
item = tblSel[1]
local sLBData = ListBox.GetItemData(this, tblSel[1]);
muzikcal(sLBData)
end [/code]
أخيرا نحتاج لزر لينفذ المطلوب أكتب في هذا الزر الكود التالي : كود PHP: - الكود:
-
ListBox.DeleteItem("ListBox1", LB_ALLITEMS); ListBox.DeleteItem("ListBox2", LB_ALLITEMS); ------------------------------------------------------------------------------------------------------------ t =Input.GetText("Input1"); istibdalate={["ّ"] = ""} s = string.gsub (t, ".",istibdalate) ---------------------------------------- for i = 1,String.Length(s) do d=string.sub(s, i, i) result = ListBox.AddItem("ListBox1", d, ""); end my_table = {"َ", "ً", "ُ", "ٌ", "ّ" ,"ِ", "ٍ", "ْ"}; for k = 1,ListBox.GetCount("ListBox1")do for x = 1 , #my_table do var = ListBox.GetItemText("ListBox1", k); if var == my_table[x] then ListBox.SetItemText("ListBox1", k-1, ListBox.GetItemText("ListBox1", k-1)..ListBox.GetItemText("ListBox1", k)); ListBox.DeleteItem("ListBox1", k); end end end -------------------------------------------------------------------------------------------------------------------------- for k = 1,ListBox.GetCount("ListBox1")do p = ListBox.FindItem("ListBox1",1, LB_BYTEXT, "ي"); if p ~= -1 then ListBox.SetItemText("ListBox1", p-1, ListBox.GetItemText("ListBox1", p-1)..ListBox.GetItemText("ListBox1", p)); ListBox.DeleteItem("ListBox1", p); end end -------------------------------------------------------------------------------------------------------------------------- for k = 1,ListBox.GetCount("ListBox1")do p = ListBox.FindItem("ListBox1",1, LB_BYTEXT, "ا"); if p ~= -1 then ListBox.SetItemText("ListBox1", p-1, ListBox.GetItemText("ListBox1", p-1)..ListBox.GetItemText("ListBox1", p)); ListBox.DeleteItem("ListBox1", p); end end -------------------------------------------------------------------------------------------------------------------------- for k = 1,ListBox.GetCount("ListBox1")do p = ListBox.FindItem("ListBox1",1, LB_BYTEXT, "و"); if p ~= -1 then ListBox.SetItemText("ListBox1", p-1, ListBox.GetItemText("ListBox1", p-1)..ListBox.GetItemText("ListBox1", p)); ListBox.DeleteItem("ListBox1", p); end end -------------- -------------------------------------------------------------------------------------------------------------------------- for k = 1,ListBox.GetCount("ListBox1")do p = ListBox.FindItem("ListBox1",1, LB_BYTEXT, "لْ"); if p ~= -1 and String.Find(ListBox.GetItemText("ListBox1", p-1), "ا", 1, false)~= -1 then ListBox.SetItemText("ListBox1", p-1, ListBox.GetItemText("ListBox1", p-1)..ListBox.GetItemText("ListBox1", p)); ListBox.DeleteItem("ListBox1", p); end end - الكود:
-
من افكار ثامر ابوبلقيس | |
|