المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : خوارزمية برنامج ناطق للنصوص بالعربي


ثامر أبو بلقيس
16-07-2015, 11:39 PM
السلام عليكم ورحمة الله وبركاته

الموضوع بدون شك صعب صعوبة اللغة العربية

أخي دعنا نحاول ... محاولة فاشلة قد تنجح بتطوير منك أحسن من عدم وجود محاولة أليس كذلك ؟

ندخل على الرابط التالي :
http://www.acapela-group.com/

و أبدأ في تجميع كل حرف بأصواته مهملا في ذلك الشدة

حيث أجمع مثلا أصوات الحرف ب بأصواته على شكل ملفات mp3

وسيكون المتحصل عليه 10 أصوات هي
بَ -بُ-بِ-بَا-بُو-بِي-بًا-بٌ-بٍ-بْ
هذه الملفات الصوتية تحفظ بنفس تسميتها
حيث سيصبح عندك
بَ.mp3 - بً.mp3 .... الخ

بعد ما تجمع كل الحروف العربية بهذا الشكل مع مراعاة احتمالات
الهمزة على " النبرة و الواو و السطر ... الخ

تحتاج لملفين اثنين
واحد لـ أل التعريف
سجل : الْ بهذا الشكل و احفظها ينفس التسمية

وتحتاج لفترة صمت سجل
ملف مدته ثانيتين أو ثلاث شاغر و تسميته 0

بعد جمع هذه الملفات ضعها كلها في مجلد audio التابع للأوتوبلاي

ثامر أبو بلقيس
16-07-2015, 11:56 PM
السلام عليكم ورحمة الله وبركاته

في global functions
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
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

ضع في تجميعيتك العناصر التالية
- ListBox1 تدعم العربي و لا تكتب فيها أي معادلة يمكنك اخفاء العنصر
- Input1 يقبل العربي و متعدد الاسطر هذا العنصر ستكتب فيه ما تريد سماعه
- ListBox2 تدعم العربي و تستطيع جعله مخفي كذلك
في حدث on select لهذا العنصر أكتب
tblSel = ListBox.GetSelected(this);
if tblSel then
item = tblSel[1]
local sLBData = ListBox.GetItemData(this, tblSel[1]);
muzikcal(sLBData)
end


أخيرا نحتاج لزر لينفذ المطلوب أكتب في هذا الزر
الكود التالي :

ثامر أبو بلقيس
16-07-2015, 11:57 PM
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
------------
for n =1 , ListBox.GetCount("ListBox1") do
g = ListBox.GetItemText("ListBox1", n);
istibdalate2={[" "] = ""}
s2 = string.gsub (g, ".",istibdalate2)
ListBox.AddItem("ListBox2",s2 , "AutoPlay\\Audio\\"..s2..".mp3");
end
for y = 1,ListBox.GetCount("ListBox2")do
y1 = ListBox.FindItem("ListBox2", y, LB_BYTEXT, "");
if y1 ~=-1 then
ListBox.SetItemData("ListBox2", y1, "AutoPlay\\Audio\\0.mp3");
end
end
ListBox.SelectItem("ListBox2", 1);
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

عيد مبارك

امل الماضي
17-07-2015, 01:09 AM
موفق بإذن الله ... لك مني أجمل تحية .

ثامر أبو بلقيس
17-07-2015, 02:42 AM
موفق بإذن الله ... لك مني أجمل تحية .
مرور طيب ... شكرا
عيد مبارك :abc_152: