做语音识别项目,不想购买讯飞的语音识别套餐(就是想BAI PIAO)。于是对讯飞输入法的语音部分打起了主意。开始的时候尝试了访问剪切板,发现语音输入不会暂存在剪切板里。又试了一下HOOK键盘消息和鼠标消息,一样获取不到。最终使用MFC的EDIT控件来获取。
1.下载讯飞语音输入法,安装,将语音的快捷键设置成F2。(下面的是绿色板的只有语音功能)
2.新建一个MFC 工程,添加一个EDIT控件,在属性里将控件设置成不可见(还可以添加一个显示控件,用来显示语音输入法的文字)
3.使用SetTimer,然后在OnTimer里响应一下
SetTimer(0, 20, NULL);
检测F2有没有按下
bool IsKeyDown = false;
void CVoiceDlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值if (nIDEvent == 0){if (GetKeyState(VK_F2) & 0x8000){if (!IsKeyDown){IsKeyDown = true;SetDlgItemText(IDC_WORD, L"");SetDlgItemText(IDC_EDIT_VOICE, L"");GetDlgItem(IDC_EDIT_VOICE)->SetFocus();}}else{if (IsKeyDown){IsKeyDown = false;CString word = GetStrFromClipboard();GetDlgItemText(IDC_EDIT_VOICE, word);SetDlgItemText(IDC_WORD, word);}}}CDialogEx::OnTimer(nIDEvent);
}
4.效果