• ভাষা:
  • English
  • বাংলা
হোম > ভয়েজ নিয়ন্ত্রিত কী বোর্ড
লেখক পরিচিতি
লেখকের নাম: মো: রেদওয়ানুর রহমান
মোট লেখা:৪৬
লেখা সম্পর্কিত
পাবলিশ:
২০০৮ - জানুয়ারী
তথ্যসূত্র:
কমপিউটার জগৎ
লেখার ধরণ:
প্রোগ্রামিং
তথ্যসূত্র:
ইন্টারফেস
ভাষা:
বাংলা
স্বত্ত্ব:
কমপিউটার জগৎ
ভয়েজ নিয়ন্ত্রিত কী বোর্ড

এ পর্বে ভয়েজ নিয়ন্ত্রিত কী বোর্ড সফটওয়্যার নিয়ে আলোচনা করা হয়েছে৷ নিচের চিত্র-১-এ ভয়েজ উইন্ডো দেখানো হয়েছে৷ এই সফটওয়্যারে ভয়েজ রিকগনিশনের জন্য মাইক্রোসফটের স্যাপি (SAPI 5.1)) ব্যবহার করা হয়েছে৷ এর জন্য মাইক্রোসফটের ওয়েভ অ্যাড্রেস থেকে এই SAPI 5.1 ডাউনলোড করে নিতে হবে অথবা www.geocities. com/voic-tomorrow হতে ডাউনলোড করে নিতে পারেন৷ SAPI ইনস্টল করার পর User Training শেষ করতে হবে৷ User Train করার জন্য কন্ট্রোল প্যানেলে গিয়ে স্পিচ রিকগনিশন অপশনে ক্লিক করতে হবে৷ এবার নিচের প্রোগ্রামটি ভিজ্যুয়াল বেসিকে ডেভেলপ করে রান করাতে হবে৷ এই সফটওয়্যারের জন্য একটি কমান্ড ফাইল ব্যবহার করা হয়েছে, যা প্রোগ্রামের রুট ডিরেক্টরিতে রাখতে হবে৷ নিচে এই প্রজেক্টের প্রোগ্রামিং কোড ও কমান্ড ফাইল দেয়া হলো৷




কমান্ড ফাইল

[Grammer] Type=Cfg [] =Start =Open =Ok =Close =Exit =Up =Down =Left =Right =One =Two =three =Four =Five =Six =Seven =Eight =Nine =Zero =A =B =C =D =E =F =G =H =I =J =K =L =M =N =O =P =Q =R =S =T =U =V =W =X =Y =Z =Caps =Gap =Back
প্রোগ্রামিং কোড Dim Temp As Variant Private Const KEYEVENTF_EXTENDEDKEY = &H1 Private Const KEYEVENTF_KEYUP = &H2 Private Const VK_Backspace = &H8 Private Const VK_Tab = &H9 Private Const VK_Shift = &H10 Private Const VK_Control = &H11 Private Const VK_Alter = &H12 Private Const VK_Pause = &H13 Private Const VK_CapsLock = &H14 Private Const VK_Return = &HD Private Const VK_Lshift = &HA0 Private Const VK_Rshift = &HA1 Private Const VK_Rcontrol = &HA Private Const VK_Escape = &H1B Private Const VK_Space = &H20 Private Const VK_End = &H23 Private Const VK_Home = &H24 Private Const VK_Left = &H25 Private Const VK_Up = &H26 Private Const VK_Right = &H27 Private Const VK_Down = &H28 Private Const VK_Insert = &H2D Private Const VK_Delete = &H2E Private Const VK_1 = &H61 Private Const VK_2 = &H62 Private Const VK_3 = &H63 Private Const VK_4 = &H64 Private Const VK_5 = &H65 Private Const VK_6 = &H66 Private Const VK_7 = &H67 Private Const VK_8 = &H68 Private Const VK_9 = &H69 Private Const VK_help = &H70 any help file open Private Const VK_0 = &H60 Private Const VK_a = &H41 Private Const VK_b = &H42 Private Const VK_c = &H43 Private Const VK_d = &H44 Private Const VK_e = &H45 Private Const VK_f = &H46 Private Const VK_g = &H47 Private Const VK_h = &H48 Private Const VK_i = &H49 Private Const VK_j = &H4A Private Const VK_k = &H4B Private Const VK_l = &H4C Private Const VK_m = &H4D Private Const VK_n = &H4E Private Const VK_o = &H4F Private Const VK_p = &H50 Private Const VK_q = &H51 Private Const VK_r = &H52 Private Const VK_s = &H53 Private Const VK_t = &H54 Private Const VK_u = &H55 Private Const VK_v = &H56 Private Const VK_w = &H57 Private Const VK_x = &H58 Private Const VK_y = &H59 Private Const VK_z = &H5A Private Const VK_star = &H6A * Private Const VK_plus = &H6B + Private Const VK_sub = &H6D - Private Const VK_dot = &H6E . Private Const VK_b_sls = &H6F / Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Type NOTIFYICONDATA cbSize As Long hwnd As Long uId As Long uFlags As Long uCallBackMessage As Long hIcon As Long szTip As String * 64 End Type Private Const WM_MOUSEMOVE = &H200 Private Const WM_LBUTTONDOWN = &H201 Button down Private Const WM_LBUTTONUP = &H202 Button up Private Const WM_LBUTTONDBLCLK = &H203 Double-click Private Const WM_RBUTTONDOWN = &H204 Button down Private Const WM_RBUTTONUP = &H205 Button up Private Const WM_RBUTTONDBLCLK = &H206 Double-click Private Declare Function Shell_NotifyIcon Lib "shell32" Alias "Shell_NotifyIconA" (ByVal dwMessage As Long, pnid As NOTIFYICONDATA) As Boolean Private nid As NOTIFYICONDATA Private Sub Form_Load() Dim FileN As String FileN = App.Path & "\commands.txt" SR.Deactivate SR.GrammarFromFile FileN SR.Activate SR.AutoGain = 99 CMD_List End Sub Private Sub SR_PhraseFinish(ByVal flags As Long, ByVal beginhi As Long, ByVal beginlo As Long, ByVal endhi As Long, ByVal endlo As Long, ByVal Phrase As String, ByVal parsed As String, ByVal results As Long) Debug.Print Phrase If Trim(Phrase) = "" Then Exit Sub Else Text2.Text = Trim(Phrase) SelMSG (Phrase) Process_Message (Trim(Phrase)) End If End Sub Function Process_Message(Msg As String) Select Case (UCase(Msg)) Case ("CLOSE") Call Close_window Case ("START") Call Start Case ("UP") keybd_event VK_Up, 0, 0, 0 Key Press keybd_event VK_Up, 0, KEYEVENTF_KEYUP, 0 Key Unpress Case ("DOWN") keybd_event VK_Down, 0, 0, 0 keybd_event VK_Down, 0, KEYEVENTF_KEYUP, 0 Case ("LEFT") keybd_event VK_Left, 0, 0, 0 keybd_event VK_Left, 0, KEYEVENTF_KEYUP, 0 Case ("RIGHT") keybd_event VK_Right, 0, 0, 0 keybd_event VK_Right, 0, KEYEVENTF_KEYUP, 0 Case ("OPEN") keybd_event VK_Return, 0, 0, 0 keybd_event VK_Return, 0, KEYEVENTF_KEYUP, 0 Case ("OK") keybd_event VK_Return, 0, 0, 0 keybd_event VK_Return, 0, KEYEVENTF_KEYUP, 0 Case ("ONE") keybd_event VK_1, 0, 0, 0 keybd_event VK_1, 0, KEYEVENTF_KEYUP, 0 Case ("TWO") keybd_event VK_2, 0, 0, 0 keybd_event VK_2, 0, KEYEVENTF_KEYUP, 0 Case ("THREE") keybd_event VK_3, 0, 0, 0 keybd_event VK_3, 0, KEYEVENTF_KEYUP, 0 Case ("FOUR") keybd_event VK_4, 0, 0, 0 keybd_event VK_4, 0, KEYEVENTF_KEYUP, 0 Case ("FIVE") keybd_event VK_5, 0, 0, 0 keybd_event VK_5, 0, KEYEVENTF_KEYUP, 0 Case ("SIX") keybd_event VK_6, 0, 0, 0 keybd_event VK_6, 0, KEYEVENTF_KEYUP, 0 Case ("SEVEN") keybd_event VK_7, 0, 0, 0 keybd_event VK_7, 0, KEYEVENTF_KEYUP, 0 Case ("EIGHT") keybd_event VK_8, 0, 0, 0 keybd_event VK_8, 0, KEYEVENTF_KEYUP, 0 Case ("NINE") keybd_event VK_9, 0, 0, 0 keybd_event VK_9, 0, KEYEVENTF_KEYUP, 0 Case ("ZERO") keybd_event VK_0, 0, 0, 0 keybd_event VK_0, 0, KEYEVENTF_KEYUP, 0 Case ("A") keybd_event VK_a, 0, 0, 0 keybd_event VK_a, 0, KEYEVENTF_KEYUP, 0 Case ("B") keybd_event VK_b, 0, 0, 0 keybd_event VK_b, 0, KEYEVENTF_KEYUP, 0 Case ("C") keybd_event VK_c, 0, 0, 0 keybd_event VK_c, 0, KEYEVENTF_KEYUP, 0 Case ("D") keybd_event VK_d, 0, 0, 0 keybd_event VK_d, 0, KEYEVENTF_KEYUP, 0 Case ("E") keybd_event VK_e, 0, 0, 0 keybd_event VK_e, 0, KEYEVENTF_KEYUP, 0 Case ("F") keybd_event VK_f, 0, 0, 0 keybd_event VK_f, 0, KEYEVENTF_KEYUP, 0 Case ("G") keybd_event VK_g, 0, 0, 0 keybd_event VK_g, 0, KEYEVENTF_KEYUP, 0 Case ("H") keybd_event VK_h, 0, 0, 0 keybd_event VK_h, 0, KEYEVENTF_KEYUP, 0 Case ("I") keybd_event VK_i, 0, 0, 0 keybd_event VK_i, 0, KEYEVENTF_KEYUP, 0 Case ("J") keybd_event VK_j, 0, 0, 0 keybd_event VK_j, 0, KEYEVENTF_KEYUP, 0 Case ("k") keybd_event VK_k, 0, 0, 0 keybd_event VK_k, 0, KEYEVENTF_KEYUP, 0 Case ("L") keybd_event VK_l, 0, 0, 0 keybd_event VK_l, 0, KEYEVENTF_KEYUP, 0 Case ("M") keybd_event VK_m, 0, 0, 0 keybd_event VK_m, 0, KEYEVENTF_KEYUP, 0 Case ("N") keybd_event VK_n, 0, 0, 0 keybd_event VK_n, 0, KEYEVENTF_KEYUP, 0 Case ("O") keybd_event VK_o, 0, 0, 0 keybd_event VK_o, 0, KEYEVENTF_KEYUP, 0 Case ("P") keybd_event VK_p, 0, 0, 0 keybd_event VK_p, 0, KEYEVENTF_KEYUP, 0 Case ("Q") keybd_event VK_q, 0, 0, 0 keybd_event VK_q, 0, KEYEVENTF_KEYUP, 0 Case ("R") keybd_event VK_r, 0, 0, 0 keybd_event VK_r, 0, KEYEVENTF_KEYUP, 0 Case ("S") keybd_event VK_s, 0, 0, 0 keybd_event VK_s, 0, KEYEVENTF_KEYUP, 0 Case ("T") keybd_event VK_t, 0, 0, 0 keybd_event VK_t, 0, KEYEVENTF_KEYUP, 0 Case ("U") keybd_event VK_u, 0, 0, 0 keybd_event VK_u, 0, KEYEVENTF_KEYUP, 0 Case ("V") keybd_event VK_v, 0, 0, 0 keybd_event VK_v, 0, KEYEVENTF_KEYUP, 0 Case ("W") keybd_event VK_w, 0, 0, 0 keybd_event VK_w, 0, KEYEVENTF_KEYUP, 0 Case ("X") keybd_event VK_x, 0, 0, 0 keybd_event VK_x, 0, KEYEVENTF_KEYUP, 0 Case ("Y") keybd_event VK_y, 0, 0, 0 keybd_event VK_y, 0, KEYEVENTF_KEYUP, 0 Case ("Z") keybd_event VK_z, 0, 0, 0 keybd_event VK_z, 0, KEYEVENTF_KEYUP, 0 Case ("CAPS") keybd_event VK_CapsLock, 0, 0, 0 keybd_event VK_CapsLock, 0, KEYEVENTF_KEYUP, 0 Case ("BACK") keybd_event VK_Backspace, 0, 0, 0 keybd_event VK_Backspace, 0, KEYEVENTF_KEYUP, 0 Case ("GAP") keybd_event VK_Space, 0, 0, 0 keybd_event VK_Space, 0, KEYEVENTF_KEYUP, 0 Case ("EXIT") End End Select End Function Public Sub Start() keybd_event VK_Control, 0, 0, 0 keybd_event VK_Escape, 0, 0, 0 keybd_event VK_Down, 0, 0, 0 keybd_event VK_Control, 0, KEYEVENTF_KEYUP, 0 keybd_event VK_Escape, 0, KEYEVENTF_KEYUP, 0 keybd_event VK_Down, 0, KEYEVENTF_KEYUP, 0 End Sub Public Sub Close_window() keybd_event VK_Alter, 0, 0, 0 keybd_event VK_F4, 0, 0, 0 keybd_event VK_Alter, 0, KEYEVENTF_KEYUP, 0 keybd_event VK_F4, 0, KEYEVENTF_KEYUP, 0 End Sub Function CMD_List() Dim TxT As String, Temp As String Open App.Path & "\commands.txt" For Input As #1 Do Until EOF(1) Line Input #1, TxT Temp = Left(TxT, 8) If Temp = "=" Then TxT = Mid(TxT, 9, Len(TxT)) List1.AddItem TxT End If Loop Close #1 End Function Function SelMSG(Msg As String) Dim Temp As String Dim i As Integer For i = 0 To List1.ListCount Temp = List1.List(i) If Trim(UCase(Temp)) = Trim(UCase(Msg)) Then List1.ListIndex = i Exit Function End If Next End Function ভিজ্যুয়াল বেসিকে প্রোগ্রামটি ডেভেলপ করার সময় Project মেনুতে গিয়ে Components -এ ক্লিক করতে হবে৷ এবার Components টেবল হতে Microsoft Voice Commands Control সক্রিয় করতে হবে৷ প্রোগ্রামে Private Sub SR_PhraseFinish (- - -) ফাংশনটি মূলত কাজ করে ভয়েজ রিকগনিশনের জন্য৷ যখন ভয়েজ রিকগনিশন শুরু হয়, তখন তা কমান্ড ফাইল হতে প্রকৃত শব্দটিকে আউটপুট হিসেবে দেখায়৷ তবে কমান্ড ফাইলের বাইরের শব্দকে এই ফাংশন দেখাবে না, সেক্ষেত্রে কমান্ড ফাইল তার গ্রামারের নিয়ম অনুযায়ী আপডেট করে নিবে৷ প্রোগ্রামের কোডে কী বোর্ডের প্রায় সব কী-এর হেক্সা ডেসিমেল নম্বর দেয়া হয়েছে৷ এবার Process_Massage (MsgAs String)-এ দুইটি ইভেন্ট ব্যবহার করা হয়েছে সেগুলো হচ্ছে Keybd_event keyname, 0,0,0 ও Keybd_event keyname, 0, keyeventf_keyupo ৷ প্রথম ইভেন্টটি কী-কে প্রেস করে আর অপর ইভেন্টটি সেই প্রেস করা কী-কে আনপ্রেস করে৷ এবার প্রোগ্রামটি রান করে মাইক্রোফোন লাগিয়ে বলতে হবে A, B, C, তাহলে মাইক্রোসফট ওয়ার্ডে (MS Word) A, B, C লেখা উঠতে থাকবে৷ এভাবে সব কী-ই ভয়েজ দিয়ে নিয়ন্ত্রণ করা সম্ভব হবে৷

এই একই প্রজেক্ট দিয়ে উইন্ডোজকে নিয়ন্ত্রণ করা সম্ভব হবে৷ এক্ষেত্রে প্রোগ্রামের Public Sub Start() ফাংশনটি সাহায্য করবে৷ প্রোগ্রামটি রান করিয়ে ডেস্কটপে চলে যান এবং Start কথাটি উচ্চারণ করুন৷ Start বলার সাথে সাথে Start মেনুটি খুলে যাবে৷ তারপর Up, Down, Left mJ Right উচ্চারণ করে আপনার পছন্দমত আইটেম সিলেক্ট করে Open বা Ok বললে সেই আইটেমটি রান করবে৷ ধরুন, আপনি উইন্ডোজ মিডিয়া প্লেয়ার রান করতে চান, তখন ডেস্কটপে গিয়ে Start মেনু খুলে উইন্ডোজ মিডিয়া প্লেয়ার সিলেক্ট করে খোলার জন্য Open বা OK বলতে হবে ৷ প্রোগ্রামটি খুবই সহজ৷ নিচের চিত্র-২-এ ভয়েজ কমান্ড দিয়ে কিভাবে উইন্ডোজে কাজ করতে হবে, তা দেখানো হয়েছে৷ প্রোগ্রামের যেকোনো সাহায্যের জন্য নিচের ওয়েবসাইটি ব্যবহার করতে পারেন৷ www.geocities.com/redu0007

ফিডব্যাক : redu0007@yahoo.com
পত্রিকায় লেখাটির পাতাগুলো
লেখাটি পিডিএফ ফর্মেটে ডাউনলোড করুন
অনান্য লিঙ্কস
২০০৮ - জানুয়ারী সংখ্যার হাইলাইটস
চলতি সংখ্যার হাইলাইটস