![]() |
|
تحويل الاوامر الصوتية الي نصوص باستخدام مكتبة SpeechLib - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184) +--- الموضوع : تحويل الاوامر الصوتية الي نصوص باستخدام مكتبة SpeechLib (/showthread.php?tid=4952) |
تحويل الاوامر الصوتية الي نصوص باستخدام مكتبة SpeechLib - RaggiTech - 03-10-12 كاتب الموضوع : 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 السلام عليكم ورحمة الله .... |