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

نسخة كاملة : تحويل الاوامر الصوتية الي نصوص باستخدام مكتبة SpeechLib
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : Friendassist

السلام عليكم ورحمة الله
هذا الموضوع يتحدث عن تحويل الصوت الي نصوص من خلال الاعتماد علي بعض المكتبات مثل مكتبة speechlib و التي يمكن من خلالها تحويل الصوت الي نص مكتوب في البرنامج و يمكن تطوير هذه الطريقة الي اوامر نصية تحول الي كلمات .وهذه الكلمات تكون معرفة في البرنامج علي انها مهام يمكن تنفيذها تلقائيا .
كما في نظام speech recognition في ويندوز سفن حيث يمكننا تنفيذ العديد من المهام المعروفة بالنسبة للويندوز من خلال اوامر صوتية ك open computer , close it ,try,start وغيرها ...

ولا بالنسبه للمشروع فانه يعمل علي ويندوز xp بدون اي مشاكل بالاعتماد منظومة speech sdk و التي تتضمن العديد من المكتبات لعمليات تحويل الصوت لاي نص او العكس و مهام اخري كثيرة لا اعرفها .

في المشروع الان سنقوم باضافة الاداه SpeechLib.dll
وفي قسم التعريفات Imports SpeechLib

و سنعتمد في هذه الطريقة علي الدالة التالية :

Public Sub SPReco_Create()
Dim rule As ISpeechGrammarRule
Dim propvalue As Object = ""
Dim wrd As Char
objrec = New SpSharedRecoContext()
grammer = objrec.CreateGrammar(0)
rule = grammer.Rules.Add("MenuCommand", SpeechRuleAttributes.SRADynamic Or SpeechRuleAttributes.SRATopLevel, 0)
rule.InitialState.AddWordTransition(Nothing, "new", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "old", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "help", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "open", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "close", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "start", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "try", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "do", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "sleep", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "shut down", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
rule.InitialState.AddWordTransition(Nothing, "yes", " ", SpeechGrammarWordType.SGLexical, wrd, 0, propvalue, 1.0)
grammer.Rules.Commit()
grammer.CmdSetRuleState("MenuCommand", SpeechRuleState.SGDSActive)
End Sub

تقوم هذه الداله بالتحقق من قواعد نطق الكلمات المضمنة بداخلها فاذا كانت الكلمة المنطوقة متطابقة مع التعبيرات المخزنة في ذاكرة المكتبة فانة سيتم اظهار الكلمة في اداة textbox
و في حالة عدم حدوث تطابق فان المكتبة ستتجاهل الكلمة الي ان تنطق بالطريقة الصحيحه ..

-في قسم التعاريف للمتغيرات و اثوابت :
Public WithEvents objrec As SpSharedRecoContext
Public grammer As ISpeechRecoGrammar
Dim rule As ISpeechGrammarRule
Dim propvalue As Object = ""

الدالة الاتية لمتابعة عملية تسجيل الصوت في ذاكرة البرنامج :
Public Sub Reco_Event(ByVal streamnmber As Integer, ByVal streamposition As Object, ByVal Recognitiontype As SpeechRecognitionType, ByVal Result As ISpeechRecoResult) Handles objrec.Recognition
Dim str As String
str = Result.PhraseInfo.GetText(0, -1, True)
TextBox1.Text = str.ToString
End Sub
و من خلالها ايضا يتم عرض الكلمة في اداة نص ..

-في حدث ال load :
SPReco_Create()

بحيث نهيئ الدالة للعمل .

داله لتحديد حالة المترجم :
Public Sub stoprec()
grammer.CmdSetRuleState("MenuCommand", SpeechRuleState.SGDSInactive)
End Sub

رابط تحميل المشروع :
http://download956.mediafire.com/7o2...545/Speech.rar

السلام عليكم ورحمة الله ....