vosk语音识别需要训练吗
在Windows下,使用Microsoft Speech API(简称为SAPI)可以很简单高效的实现语音识别,关于如何使用SAPI实现语音识别的文章请参见MVP尹成的博客 :
而Speech SDK安装后有一个Samples文件夹,里面有C++/C#/VB的示例代码可以参考。
现在我想把基于SAPI的语音识别转移到我的QT的项目里,也就是在QT里调用微软的SAPI来实现语音识别。这个想法是很简单的,但要实现的话,却充满了阻碍。我首先查了一下QT调用Win API的可能性,发现这是完全可以的;接下来就着手来实现了。
首次还是封装一个Speech Recognition的引擎类SREngine,其头文件和源文件分别如下:
在MainWindow的ui上添加一个“开启”按钮,然后给它添加槽函数:
实现的时候,一个比较棘手的问题是,如何将MFC的消息机制用QT来取代。我首先想到的当然是用信号槽机制来实现,但是这里完全跟信号槽对不上号啊,套不进去啊!!!尝试了半天,在google和baidu上搜啊搜,找到了很少比较相关的资料。没办法我就加QT技术的QQ群,问群里大牛,但可能我没描述清楚,还是解决不了。
最后,还是google搜,通过搜QT和WinAPI混合编程,找到了一两个比较好的结果,里面有提到用winEvent来截获窗体的消息,于是看到希望了,哈哈哈。我的winEvent函数如下:
这里的winEvent函数就相当于WinAPI里的WinProc函数,但不需要用信号槽来显式的将信号和槽connect起来,只要有该窗体有消息产生,它就会执行。这样就将消息机制实现了,消息从SAPI的函数里产生,发送到了MainWindow窗体,再在MainWindow的winEvent函数里截获该消息进行相应的处理。
下一篇 >>