السلام عليكم ورحمة الله وبركاتة كل عام وجميع الاعضاء بخير ممكن الموضوع ده صعب بالنسبالى جدا او مستحيل لأن لا اعرف من اين ابدأ و ان شاء الله من خلال خبرات الاعضاء سوف اعرف من وين أبدأ الموضوع وبكل اختصار اريد ان احول الكلام من خلال المايك الى نصوص مكتوبة فى تيكست بوكس وبالاخص اريد ان احول الارقام فقط بمعنى ان المستخدم يتحدث فى المايك ويقول رقم واحد يتحول فى التيكست بوكس ويكتب رقم (1) تمام انا اريد مجرد الطريق وانا سوف ابحث واجتهد فى الموضوع ان شاء الله بس الموضوع مهم جدا انا اعرف ان شركة IBM عملت مثل هذا الشىء انا لا اسعى لذلك انا اريد تحويل الارقام فقط وليس جميع الكلام ارجوا من جميع الاعضاء الاهتمام والرد ولو بعدم المعرفة واعتقد ان هذا الموضوع سيفيد الجميع ان شاء الله .. شكرا ومع وافر تحياتى للجميع .. السلام عليكم ورحمة الله وبركاتة ..
كيفيه تحويل الكلام لنص مكتوب !؟؟؟؟؟
السلام عليكم ورحمة الله وبركاتة
انا بجد مش لاقى كلام اقوله بس انا قولت الرد ولو بعدم المعرفة انا شايف ان التفاعل قل فى المنتى اسف
اسف تانى مرة ان انا حاطط سؤالى فى المكان الغلط
وشكرا للجميع
المشكلة ليست في قلة التفاعل .. المشكلة هي في صعوبة التعرف على الكلام المنطوق ( باللغة العربية ) .. مع ان شركات مثل IBM وصخر قامت بتطبيقها ولكنها ليست متوفرة للمبرمجين للاستفادة منها ..
سبحان الله وبحمده ... سبحان الله العظيم
اخي الكريم اذا كان المستخدم واحد اعتقد فيها بعض المنطقية - لان نبره الصوت اذا اختلفت تكون هناك صعوبة في التعرف على الارقام
لي عودة بالتفصيل
oracle@arabdb.org
المبرمج أحمد كتب:المشكلة ليست في قلة التفاعل .. المشكلة هي في صعوبة التعرف على الكلام المنطوق ( باللغة العربية ) .. مع ان شركات مثل IBM وصخر قامت بتطبيقها ولكنها ليست متوفرة للمبرمجين للاستفادة منها ..
اشكرك هذا هو التفاعل الذى اريده ممكن نوصل لحل بس نتكلم
انا بحثت كثير ووصلت ان لغتى الدوت نت والسى شارب يفعلان مثل هذا
ولكن المشكلة فعلا صعوبة التعرف على اللغة العربية ولكن هنا بصدد الارقام فقط يعنى هيبقى الموضوع محصور فى الارقام وسوف نبدأ برقم واحد على سبيل المثال واذا تم فيبقى باقى الارقام من السهولة التعرف عليها
وحتى برنامج صخر ليس مثالى فى اللغة العربية احنا ممكن نطبق الموضوع باللغة الانجليزية ان شاء الله
بس احنا عايزين عضو يكون فاهم فى الصوتيات وكيفيه التعرف عليها وحفظها فى قاعدة البيانات وكيفيه البحث عنها فى قاعدة البيانات
والاهم هو التعرف على الصوت الداخل الى الجهاز وكما قلت ان احنا هنبدأ بالارقام فقط واظن ان الموضوع ده يستحق العناء وان هذا سوف يساعد الجميع فى استخدام برامجهم بسهولة تامة ان شاء الله
واسف جدا على الاطالة ومستنى الردود وشكرا ....
tofeee كتب:اخي الكريم اذا كان المستخدم واحد اعتقد فيها بعض المنطقية - لان نبره الصوت اذا اختلفت تكون هناك صعوبة في التعرف على الارقام
لي عودة بالتفصيل
انا معك يا اخى فى كل كلمة وانا منتظر التفصيل منك ان شاء الله لعله ينفع الجميع باذن الله ..
السلام عليكم
اقتباسالمشكلة هي في صعوبة التعرف على الكلام المنطوق ( باللغة العربية )
ارى أن هذا كلام غير منطقي تماما!
لماذا؟
نحن نريد صنع برنامج يتعرف على الأصوات فأي صوت سوف يتم التعامل معه بنفس الطريقة و لو كان كلام بالهندية :excl: !
لأن الهدف هو التمييز بين نطق الحروف أو الأرقام و ليس الهدف هو صنع برنامج خارق للكتابة بالشكل و الإملاء الصحيح
حسب معرفتي البسيطة الطريقة هي في صنع دالة أو خوارزمية تحول الصوت إلى منحنى مثل هذا
الصورة من موقع ehow.com

ليس بالضرورة أن يكون بهذه الجودة :blink: و لكن المهم أن يتم رسم شكل حسب الصوت
لأن أساس عمل هذه البرامج أن لكل كلمة أو صوت شكل مختلف
و بعدها يتم استخراج معادلة أو رقم مميز للشكل حسب خصائصه و مقارنتها مع معادلات أو أرقام مميزة لأصوات تم تسجيلها من قبل و إذا حدث تطابق أو تقارب كبير يتم التعرف على الصوت :lol:
ربما لم اشرح جيدا و لكن إذا أردت التوسع يمكننا الحديث أكثر إن شاء الله :)
تم تعديل هذه المشاركة بواسطة 3ml في 9 ديسمبر 2009 في 19:59
تسلم يا أخى وهذا فعلا المطلوب وكما قلت ليس الصعوبة فى اللغة العربية ولكن فى كثرة اللكنات
كما هو ايضا فى اللغة الانجليزية ولكن من الممكن استخدام هذا النوع فى الحماية مثلا سيتم تسجيل صوت المستخدم فى اول مرة بعدة مرات يعنى بصوت منخفض ثم متوسط ثم عالى حتى يتم تخزينهم
ثم التعرف عليه عند الحاجة اليه فيما بعد ويتم تسجيل الارقام كذالك عندما يقول رقم نبحث عن هذا الرقم فى قاعدة البيانات ونضعه فى التيكست بوكس وهذا المطلوب فقط لا نريد ان يتم التحدث الكامل
فى جميع الجمل انما نريد مثل هذا الشىء فى الحماية وكذلك كما قلت فى استخدامها فى الارقام ..
وأرجو منك يا اخى لا تبخل علينا وانا حاسس ان شاء الله يكون معك الحل باذن الله ..
فقل لنا ما يمكن فعله عملى ونبدأ فى تطوير البرنامج خطوة خطوة ان شاء الله ..
وشكرا لك جزيلا وربنا يجعله فى ميزان حساناتك..
السلام عليكم
أولا أنا لست مبرمجا محترفا و ليست لدي خبرة في هذا المجال ولكن سأعمل ما في وسعي للمساعدة بما أعرفه حتى نصل إن شاء الله إلى الحل :hmm:
علينا أولا فهم الطريقة التي من خلالها نتعرف على الأرقام التي ينطقها المستعمل و بعدها نبدأ في البرمجة لأن المبدأ هو الأساس و الخطة و التنفيذ يأتيان فيما بعد
كما قلت في الرد السابق الحل هو إتباع المراحل التالية (هذا مجرد إقتراح ،فإذا كان لديك حل أفضل عليك قم بطرحه و سنناقشه إن شاء الله) :
* تسجيل صوت نطق كل رقم على حدى و من أشحاص مختلفين و ندرس منحنيات كل صوت و نقارن بينها لنحصل على أجزاء التشابه بينها
* يعني أننا يمكننا التعرف على الرقم من خلال الملف الصوتي(mp3 مثلا) دون سماعه، أي فقط من خلال الكود الخاص به
و هذا هو أهم ما في الأمر
* بعدها نصنع دالة أو خوارزمية تقوم بالعملية طبعا فالجهاز يقوم بالأمر بسرعة كبيرة جدا
* و بعدها سيتمكن الجهاز من التعرف على الأرقام من خلال تسجيل الصوت و مقارنته بأصوات الأرقام المسجلة لديه مسبقا
ماذا يجب أن نفعل الآن؟
الآن علينا التعرف على صيغة mp3 أو wav أو أي صيغة أخرى حتى نتمكن من التعرف على طريقة تخزين البيانات فيها (mp3 مضغوط لذلك فهو ربما صعب)
أو نبحث عن ocx جاهز للـ Visual basic يقوم برسم منحنى الصوت أو مستوى الصوت مثل الذي تراه عند قراءة ملف صوتي في Windows media player.
رجاءا إقرأ جيدا حتى تفهم ماذا أقصد لأن شرحي ليس جيدا
هذه صورة من موقع howstuffworks.com توضح أهم مراحل العملية

يمكك أيضا قراءة هذا المقال بالإنجليزية و دائما من موقع howstuffworks.com
شكرا
تم تعديل هذه المشاركة بواسطة 3ml في 10 ديسمبر 2009 في 19:48
السلام عليكم ورحمة الله وبركاتة
اشكرك يا اخى على الرد والتفاعل فى الموضوع . وانا ايضا مثلك لا افقه شىء فى هذا الموضوع ولكنك تعرف عنه بعض الشىء
انا بحثت ووجدت مساعدة فى هذا الموضوع ولكن بلغة السى ولكن انا ارى ان من الممكن دمج اللغتى مع بعض بمعنى ان يتم عمل برنامج بلغة السى ويتم ارسال المخرجات الى البرنامج المعمول بلغة ال 6
وبهكذا قد تم الاستفادة من لغتى البرمجه و لو من الممكن عمل هذا بال 6 يبقى كده تمام ويبقى برمجة 6 من الاول الى الاخر ان شاء الله .
وانا معك فى كل كلمة وأظن ان الموضوع صح 100 % منطقيا ولكن نريد عمليا وهذا لينك لمواضيع تهتم مثل هذا الموضوع
http://www.vc4arab.com/forumdisplay.php?f=55
نشوف مع بعض تلك المواضيع لعلا نستفاد منها ان شاء الله ..
السلام عليكم
السلام عليكم
شكرا على الرابط وقد إطلعت بسرعة على بعض ما فيه و لفتتني هذا الموضوع
و ستجد في الأخير أن الطريقة هي في رسم موجة لكل كلمة أو حرف و بعد المقارنة نجد الكلمة أو الحرف المطلوب
وبالنسبة لـ Visual Basic فأعتقد أن لغة Basic ككل لا تمتلك القوة اللازمة لقراءة الملفات بايت بايت أي تحول الملف إلى مثل هذا: 0110010011001.....
و لكن لغة c أو c++ قادرة على مثل هذه الأمور
ولكن إذا تمكنا من الدمج بين اللغتين قد نتوصل لنتيجة
ولكن قبل أن نلجأ لهذا الحل سأبحث عن ocx أو api جاهز للقيام برسم المنحنيات للملفات الصوتية و إذا نجحت في إيجاد واحد يصبح الباقي سهلا بإذن الله
لاحظ في الصورة التي وضعتها في الرد السابق و انظر إلى المرحلة 2 و ستجد الملف الصوتي تحول إلى أصفار و آحاد و هو أهم ما في العملية
عند أي جديد سأكتب ما وجدته لنتشاور و نتناقش حوله
شكرا
السلام عليكم
اخى الكريم احيك على اهتمامك بالموضوع وفعلا انا مؤيدك فى كل كلمة ولكن انا بحثت كثير عن ocx او Module او اى شىء يساعدنا فى هذا الموضوع ولكن لا نتيجة
ومن الممكن ان تصل الى شىء باذن الله وفعلا انا ارجح التعاون معنا ومع منتدى السى لفعل مثل هذا الشىء واتمام المشروع بنجاح باذن الله ومنتظر اخر الاخبار منك وارجو اضافتى على الميل
james_2devil@hotmail.com
وشكرا جزيلا..
اقتباساخى الكريم احيك على اهتمامك بالموضوع
أنا أحب المشروعات الطموحة و التي تحتاج إلى جهد و بحث مثل هذا المشروع، عكس المواضيع الأخرى التافهة التي تملأ المنتديات العربية، فهذا المشروع قد يستغرق مدة طويلة لحله ولكن نتيجته ستكون كبيرة و مفيدة بإذن الله و ستزيد من خبراتنا و معارفنا لذلك فأنا أحاول المساعدة بكل ما أعرفه بدون أي إنزعاج أو ملل فلا تقلق،،،،،،
لقد أضفت عنوانك إلى msn
لكن ملاحظة : لا تنشر عنوانك مباشرة على المنتديات لأن هناك برامج و قراصنة :ph34r: تقوم بالبحث باستمرار عن أي عنوان لإزعاجه أو سرقة الإيميل منه، إحذر يمكنك أن تكتب مثلا:
@ << at
.com << dotcom
وهكذا حتى لا تتمكن البرامج من التعرف على العنوان :wink:
بالنسبة للمشروع أرجوا أن ننتقل لقسم الـ c أو الـ c++ لطلب المساعدة في قرائة الملفات بايت بايت
أنا سأبحث عن حلول و أي جديد سأوافيك به
شكرا
السلام عليكم
بحثت في بعض المواقع ووجدت مشروعا لتحويل الكلام إلى كتابة Speech too text
المشروع مفتوح المصدر أي يمكننا الإطلاع على الكود الخاص به و هو مجاني أيضا و مكتمل
لكن المشروع مكتوب بلغة Java و أنا لا أفهمها و أرجوا أن يكون هناك من يساعدنا من قسم الـ Java في هذا المنتدى لتحليل الكود وأخذ ما نحتاجه منه لعمل المشروع
أرجوا أن يكون هذا مفيدا ،وأتمنى أن يتدخل أحد من قسم الـ Java للمساعدة
شكرا
السلام عليكم
أشكرك اخى على النصيحة وسوف اعمل بها واشكرك على بحثك.
هناك ايضا بلغة السى مشاريع مفتوحة المصدر ومجانيه ولكن نحن نريد احد من يعرف احدى اللغتين لكى يتم التعاون معه ونتمم المشروع بإذن الله .
وانا سوف اترك موضوع فى منتدى السى وكذلك فى الجافا لكى نرى احد يساعدنا بإذن الله ..
ومنتظر المزيد منك يا اخى ومزيد من التقدم ان شاء الله ...
والسلام ختام
السلام عليكم
أخي أنا وجدت شيء جميل جدا في أحد المنتديات هذا الموضوع الأصلي
أهم ما فيه أن "khaled_hash" *إسم العضو* قام بوضع كود يقوم بتحويل ملف صوتي إلى ملف نصي يتألف من آحاد واصفار وهو المطلوب:
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
int main(int argc, char** argv)
{
char byte;
size_t read;
FILE* f ,*nf;
int ret;
int i;
char header[44];
unsigned long pos;
if ( argc < 2 ) {
fprintf(stderr, "Usage: %s FILENAME\n", argv[0]);
return 1;
}
f = fopen(argv[1], "r");
if ( !f ) {
fprintf(stderr, "Can't open file %s. Error: \n", argv
[1],strerror(errno));
return 1;
}
//اذا كنت ترديد عدم حفظ راس الملف( الهيدار) فعليك جعل هذه الجزء يعمل لان هذه الجزء يخزن راس الملف ملحق به
البيانات
/* if ( 44 != fread(header, 1, 44, f) ) {
fprintf(stderr, "Failed reading header. This may not be
a .wavfile.\n");
if ( fclose(f) == EOF )
fprintf(stderr, "Failed closing file. Error: %
s\n",strerror(errno));
return 1;
} */
// c يخزن مباشرة على VoiceBinaryfORMAT.txt سو ف يتم انشاء ملف اسمه
if ((nf=fopen("c:\\VoiceBinaryfORMAT.txt","w"))==NULL)
{
printf("Can't open file");
return 1;
}
do {
errno = 0;
read = fread(&byte, 1, 1, f);
if ( read == 1 ) {
for ( i=8-1 ; i>=0 ; i-- )
{
// ان الناتج لان يطبع لان شاشة الاخراج فى السي لا تطبع اكثر من 398 سطر لذلك قد تعتقد ان الطباعة
خطاء لذلك يتم التخزين فى ملف تكست ومنه تتم الطباعة
//printf("%d", ((byte >> i) & 0x1));
fprintf(nf,"%d",((byte >> i) & 0x1));
if (i==0)
{fprintf(nf,"\n");
printf("\n");
}
}
}
} while ( read == 1 );
ret = 0;
if ( ferror(f) ) {
fprintf(stderr, "Error: %s\n", strerror(errno));
ret = 1;
}
if ( fclose(f) == EOF ) {
fprintf(stderr, "fclose error: %s\n", strerror(errno));
ret = 1;
}
printf("\n");
return ret;
}"أنا لا أعتقد أنها لغة C++ أنا أعتقد c" :excl:
الملف الناتج سيكون كما هو واضح c:\\VoiceBinaryfORMAT.txt لكن الملف الذي نريد تحويله لم أجد أي يجب وضعه أو وضع مساره!
لكل من يعرف c رجاءا ساعدونا في قراءة الكود و تحليله
شكرا
اقتباس"أنا لا أعتقد أنها لغة C++ أنا أعتقد c" :excl:
الكود فعلا بلغة C++ كنت مخطئا
لم أتمكن من تشغيله على Gcc و هو Compiler للغة C و C++ ، أعتقد أنه يحتوي على أخطاء
أرجوا المساعدة من كل من يعرف C++ ، نحن في حاجة فعلا للمساعدة
السلام عليكم
اشكرك اخى على اهتمامك بهذا الموضوع ولكن هنا لا اعتقد ان احد يدخل يعرف لغة السى انا وضعت فى قسم السى للمساعدة
ومنتظر الرد من احد الاعضاء وربنا يسهل ان شاء الله وهذا المشروع سوف يكون مفيد للجميع وسوف نضعه هنا لتعم الفائدة ان شاء الله ..
والسلام ختام ..
السلام عليكم
الحمد لله تلقينا مساعدة كبيرة من العضو Khaled.Alshaya في لغة C++ حيث قام بكتابة كود كاملا من أجل تحويل الملفات إلى صيغة ثنائية
ولقد جربت الكود و هو يعمل بشكل صحيح
هذا هو كود العضو Khaled.Alshaya (جميع الحقوق محفوظة :wink: ) طبعا هذا هو الصواب:
/*
This program is a C++ implementation of the C code you have.
All what the original code does, is that it reads a binary
sound file of type (.wav) and writes a textual representation of
the raw bytes of that file.
Enjoy :)
the input file consists of the following parts:
header: 44 bytes.
sound: the rest of the file.
*/
#include <iostream>
#include <fstream>
#include <string>
#include <exception>
std::streamsize fileSize( const char* filePath ){ ///////////////////////
std::fstream::pos_type fsize = 0;
std::ifstream file( filePath, std::ios::binary );
fsize = file.tellg();
file.seekg( 0, std::ios::end );
fsize = file.tellg() - fsize;
file.close();
return fsize;
}
std::string byte_to_string(unsigned char byte)
{
const size_t byteBits = 8;
std::string byteString(byteBits, '0');
byteString[0] = (byte & 1) ? '1' : '0';
byteString[1] = (byte & 2) ? '1' : '0';
byteString[2] = (byte & 4) ? '1' : '0';
byteString[3] = (byte & 8) ? '1' : '0';
byteString[4] = (byte & 16) ? '1' : '0';
byteString[5] = (byte & 32) ? '1' : '0';
byteString[6] = (byte & 64) ? '1' : '0';
byteString[7] = (byte & 128) ? '1' : '0';
return byteString;
}
int main()
{
using namespace std;
const string soundFileName = "test.wav"; // input file
const string outputFileName = "test.txt"; // output file
const streamsize headerSize = 44;
const streamsize inputFileDataSize = fileSize(soundFileName.c_str()) - headerSize;
streamsize input_i = 0; // input file data pointer
ifstream inputFile(soundFileName.c_str(), ios::binary);
ofstream outputFile(outputFileName.c_str(), ios::trunc);
unsigned char byte;
// Discard the header, because we are interested in converting
// the raw bytes of the sound file only.
inputFile.seekg(headerSize, ios::beg);
while( input_i++ < inputFileDataSize )
{
inputFile.read(reinterpret_cast<char*>(&byte), sizeof(byte));
outputFile << byte_to_string(byte);
}
}سوف نعمل الآن على تحويله لـ exe لأني لا أستعمل MS Win فقد لا أتمكن من إخراجه بهذه الصيغة و لكن سأحاول
و بعدها نحتاج لملفات صوتية بكل الأرقام بأي صيغة كانت لكن أفضل wav
لعمل ملفات نصية بصيغتها الثنائية binary
وبعدها سوف نحاول إيجاد طريقة للتفريق بين الأرقام من الصيغة الثنائية حتى نحول هذا إلى برنامج يعمل عبر VB إن شاء الله
شكرا
السلام عليكم ورحمة الله وبركاتة
احيك اخى على ما توصلت اليه انا اسف فى التأخر على الرد لظروف خارجة عن ارادتى
وارجو اذا توصلت الى تحويل ال exe ان ترسل الى رسالة على الميل
شكرا
بسم الله الرحمن الرحيم
هل تريدون الكلام بالانجليزي أم بالعربي
إذا كنتم تريدون بالانجليزي فأنا أستطيع مساعدتكم :)
أم إذا كنتم تريدونه بالعربي فأنا لاأعرف ولكنني سوف أحاول :mad:
السلام عليكم ورحمة الله وبركاتة
اهلا بيك اخى ويشرفنا اكيد هذة المساعدة
ولكن حضرتك تعرف فى لغة السى او حضرتك عارف الموضوع يتم بلغة افيجوال 6 ؟؟؟
وثانيا نحن نريد اللغتين وبما ان مع حضرتك اللغة الانجليزية سوف يتم تنفيذها باللغة الانجليزية ثم نعمل على اللغة العربية
وانا اضفت الايميل الخاص بك لكى يتم التواصل من خلاله ان شاء الله ومنتظر الرد على ما سوف نفعله ..
والسلام ختام ..شكرا
السلام عليكم
أخي Jamyz أنا حاولت أن أصنع exe من نظام التشغيل الذي أعمل عليه ولكني لم أتمكن :sleep:
أريدك أن تجرب بإستعمال هذا البرنامج هذه صفحة التحميل
جرب أن تقوم بإخراجه بصيغة exe لأنك على Windows سيكون الأمر سهل
والبرنامج صغير حجمه أقل من 3Mb
هذه صورة للبرنامج من الموقع الرسمي وهو مجاني و بسيط

و إذا لم تتمكن أرجوا أن تحاول بهذا البرنامج Sally IDE الرابط للتحميل المباشر من Sourceforge.net
وهو أيضا مجاني و صغير الحجم لا يتجاوز 3Mb ،و أنا أعتقد أنه أفضل من الأول لكنه يحتاج إلى
.NET Framework
و لا أعلم إن كانت موجودة على جهازك، المهم جرب و أخبرني بالنتيجة
آسف على الإطالة :blush: لأني كنت مشغول بأمور أخرى و لكني حاولت رغم ذلك
شكرا
تم تعديل هذه المشاركة بواسطة 3ml في 3 يناير 2010 في 18:30
السلام عليكم ورحمة الله وبركاتة
ازيك اخى ادعو ان تكون بألف خير ان شاء الله
اسف جدا على تأخير الرد لظروف خاصة .
انا نزلت البرنامج ولكن لم اتعرف كيفيه التعامل معه وانا اشك انه يعمل مع هذا الكود ليس اعرف ولكن ابحث على برنامج ثانى حاليا
ربنا يكرم ان شاء الله ويتم هذا المشروع بإذن الله ..
بالغ تحياتى لجميع الاعضاء والسلام ختام ..
شكرا لك أخي
أنا أيضا هذه الأيام لدينا إمتحانات و بعدها إن شاء الله سأعود "بقوّة" ;)
لأن هذا الموضوع بالذات يحتاج إلى بعض العمل و ليس فقط إلى مجرد الرد.
حاول و أنا أيضا بعدما أنتهي سأحاول.
شكرا.
تم تعديل هذه المشاركة بواسطة 3ml في 11 يناير 2010 في 22:46
ربنا يوفقك يا اخى وان شاء الله بالتوفيق والنجاح
وانا منتظرك وان شاء الله اكون وصلت لحلول ..

