一套基于模板匹配的语音识别技术 提取语音的特征,并建立模板库 可以将语音识别技术应用于机器人

本文介绍了一种基于模板匹配的语音识别技术,该技术通过提取语音特征并建立模板库,能够应用于机器人控制。在代码示例中,展示了如何处理不同指令,包括大臂、小臂、手腕等关节的运动控制,以及速度和状态的显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

               
  1. 视图类,废话少说,看看带注释的源码
  2. #include "stdafx.h"    
  3. #include "robot.h"    
  4. #include"Label.h"    
  5.    
  6. #include "robotDoc.h"    
  7. #include "robotView.h"    
  8.    
  9. #ifdef _DEBUG    
  10. #define new DEBUG_NEW    
  11. #undef THIS_FILE    
  12. static char THIS_FILE[] = __FILE__;   
  13. #endif    
  14.    
  15. /////////////////////////////////////////////////////////////////////////////    
  16. // CRobotView    
  17.    
  18. IMPLEMENT_DYNCREATE(CRobotView, CFormView)   
  19.    
  20. BEGIN_MESSAGE_MAP(CRobotView, CFormView)   
  21.     //{ {AFX_MSG_MAP(CRobotView)    
  22.     ON_WM_CTLCOLOR()   
  23.     ON_WM_TIMER()   
  24.     //}}AFX_MSG_MAP    
  25.     ON_MESSAGE(WM_COMMNOTIFY, OnCommNotify)   
  26. END_MESSAGE_MAP()   
  27.    
  28. /////////////////////////////////////////////////////////////////////////////    
  29. // CRobotView construction/destruction    
  30.    
  31. CRobotView::CRobotView()   
  32.     : CFormView(CRobotView::IDD)   
  33. {   
  34.     //{ {AFX_DATA_INIT(CRobotView)    
  35.     //}}AFX_DATA_INIT    
  36.     // TODO: add construction code here    
  37.     m_ncomand1=10;   
  38.     m_bflag=0;   
  39.     m_nsudu=1;   
  40.     m_ngzq=0;   
  41.     m_nguanjie;   
  42.     m_nfangxiang;   
  43.     m_nmsg[0]=0;   
  44.     m_njishu=0;   
  45.     m_nmsg[1]=0;   
  46.     m_nmsg[2]=0;   
  47.     m_nmsg[3]=0;   
  48.     m_nmsg[4]=0;   
  49.     m_nsum=0;   
  50.     m_ndelay=0;   
  51.     nLength=0;   
  52.     m_recflag=1;   
  53.     m_failflag=1;   
  54.     m_brush.CreateSolidBrush(RGB(40,98,122)); // 生成一绿色刷子     
  55.    
  56. }   
  57.    
  58. CRobotView::~CRobotView()   
  59. {   
  60. }   
  61.    
  62. void CRobotView::DoDataExchange(CDataExchange* pDX)   
  63. {   
  64.     CFormView::DoDataExchange(pDX);   
  65.     //{ {AFX_DATA_MAP(CRobotView)    
  66.     //DDX_Control(pDX, IDC_EDIT1, m_edit1);    
  67.     DDX_Control(pDX, IDC_STATIC_LINK, m_link);   
  68.     DDX_Control(pDX, IDC_STATIC_1, m_ml);   
  69.     DDX_Control(pDX, IDC_STATIC_4, m_workpart);   
  70.     DDX_Control(pDX, IDC_STATIC_COMMAND, m_command);   
  71.     DDX_Control(pDX, IDC_STATIC_STATUS, m_static);   
  72.     DDX_Control(pDX, IDC_STATIC_BUCHANG, m_buchangshu);   
  73.     DDX_Control(pDX, IDC_STATIC_5, m_buchang);   
  74.     DDX_Control(pDX, IDC_STATIC_3, m_sudu);   
  75.     DDX_Control(pDX, IDC_STATIC_2, m_zhuangtai);   
  76.     //}}AFX_DATA_MAP    
  77. }   
  78.    
  79. BOOL CRobotView::PreCreateWindow(CREATESTRUCT& cs)   
  80. {   
  81.     // TODO: Modify the Window class or styles here by modifying    
  82.     //  the CREATESTRUCT cs    
  83.    
  84.     return CFormView::PreCreateWindow(cs);   
  85. }   
  86.    
  87.    
  88.    
  89. /////////////////////////////////////////////////////////////////////////////    
  90. // CRobotView diagnostics    
  91.    
  92. #ifdef _DEBUG    
  93. void CRobotView::AssertValid() const   
  94. {   
  95.     CFormView::AssertValid();   
  96. }   
  97.    
  98. void CRobotView::Dump(CDumpContext& dc) const   
  99. {   
  100.     CFormView::Dump(dc);   
  101. }   
  102.    
  103. CRobotDoc* CRobotView::GetDocument() // non-debug version is inline    
  104. {   
  105.     ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CRobotDoc)));   
  106.     return (CRobotDoc*)m_pDocument;   
  107. }   
  108. #endif //_DEBUG    
  109.    
  110. /////////////////////////////////////////////////////////////////////////////    
  111. // CRobotView message handlers    
  112.    
  113. void CRobotView::OnDraw(CDC* pDC)    
  114. {   
  115.     // TODO: Add your specialized code here and/or call the base class    
  116.     SuduDisplay(m_nsudu);   
  117.     GzqDisplay(m_ngzq);   
  118. }   
  119.    
  120. void CRobotView::OnInitialUpdate()    
  121. {   
  122.     CFormView::OnInitialUpdate();   
  123.        
  124.     // TODO: Add your specialized code here and/or call the base class    
  125.     m_link.SetLink(TRUE)   
  126.         .SetTextColor(RGB(0,0,255))   
  127.         .SetFontUnderline(TRUE)   
  128.         .SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1));   
  129.     m_command.SetFontSize(24)   
  130.         .SetFontName("Terminal")   
  131.               .SetTextColor(RGB(240,240,40));   
  132.     m_static.SetFontSize(24)   
  133.               .SetTextColor(RGB(240,240,40));   
  134.     m_workpart.SetFontSize(24)   
  135.         .SetFontBold(TRUE)   
  136.               .SetTextColor(RGB(0,240,0));   
  137.     m_buchangshu.SetFontSize(24)   
  138.               .SetTextColor(RGB(240,240,40));   
  139.     m_buchang.SetFontSize(24)   
  140.             .SetFontBold(TRUE)   
  141.               .SetTextColor(RGB(0,240,0));   
  142.     m_sudu.SetFontSize(24)   
  143.             .SetFontBold(TRUE)   
  144.               .SetTextColor(RGB(0,240,0));   
  145.     m_zhuangtai.SetFontSize(24)   
  146.             .SetFontBold(TRUE)   
  147.               .SetTextColor(RGB(0,240,0));   
  148.     m_ml.SetFontSize(24)   
  149.             .SetLinkCursor(AfxGetApp()->LoadCursor(IDC_ICON1))   
  150.             .SetFontBold(TRUE)   
  151.              .SetTextColor(RGB(0,240,0));   
  152.     GetParentFrame()->RecalcLayout();   
  153.     ResizeParentToFit();   
  154. }   
  155.    
  156. LRESULT CRobotView::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)    
  157. {   
  158.     // TODO: Add your specialized code here and/or call the base class    
  159.     if(message == (WM_USER + 1002))   
  160.         ProcessMessage(wParam, lParam);   
  161.     else if(message==(WM_USER+1003))   
  162.         ProcessMyMessage();   
  163.     return CFormView::WindowProc(message, wParam, lParam);   
  164. }   
  165. void CRobotView::ProcessMessage(WPARAM wParam, LPARAM lParam)   
  166. {   
  167.        
  168.     CRobotDoc* pDoc=GetDocument();   
  169.     char* l[57] = { "零","一","二",///012    
  170.         "三","四","五","六","七","八","九","执行","各关节归零","大臂正转",///12    
  171.         "大臂反转","小臂正转","小臂反转","手腕正转","手腕反转","手爪张开","手爪闭合","上升","下降","大臂运行",///13--22    
  172.         "大臂负运行","小臂运行","小臂负运行","手腕运行","手腕负运行","手爪运行","手爪负运行","升降运行",////23---30    
  173.         "升降负运行","大臂归零","小臂归零","手腕归零","手爪归零","升降归零","速度加","原点记忆",///31---38    
  174.         "系统复位","示教盒","","","回原点","速度减","区号加","区号减","单步再现","周期再现",///39---48    
  175.         "连续再现","返回","继续","数据记忆",
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值