【QT分享】基于QT的连续语音识别 [复制链接]
电梯直达
跳转到指定楼层
21189
楼主| TShadow 发表于 2017-3-13 19:56:21
1#
本帖最后由 TShadow 于 2017-3-13 19:56 编辑


操作系统:windows 10 x64
测试版本:Qt 5.8 mingw

本贴提供一个基于QT的连续语音识别Demo,通过音量大小判断音频录入的开始和结束,在附件的代码里,实时音量跟踪和录音都被封装成了独立的类,大家可以在记的代码里导入这些类并直接使用,即可实现连续语音识别了。

  1. MicAudio类
    提供两个可调用的函数,很简单。

    1. void startListen() : 开始监听音量
    2. void stopListen():停止监听音量
      刷新时间可以在函数内部自行修改,当捕获到音量时会自动发出一个signal,在主函数中connect一下并在slot里操作即可。
  2. WaveRecorder类
    主要用到的就是void set_FileName(QString des_path),void Start(),void Stop(),void Reset()

    1. void set_FileName: 设置录音文件
    2. void Start: 开始录音
    3. void Stop: 停止录音
    4. void Reset: 重置参数
      这个类很简单,但是调用的是win底层api,QT在使用之前需要先在pro文件里加载libwinmm.a,这个我已经在demo配置好了,libwinmm.a就在目录下。
  3. iFlyVoice类
    这个类相对于之前的版本(http://bbs.xfyun.cn/forum.php?mo … id=24654&extra=)做了修改,继承了QThread,程序中是以新的线程执行的,为什么这么做后面会说。主要用到以下函数:

    1. bool login(const char* login_param):登录操作,返回登录是否成功。记得填好自己的appid
    2. bool logout():退出操作,很简单。
    3. void speech2Text(const char* audioFileName, int iaccent, char *grammarId):主要就是语音转文字,具体介绍可以看code里面的说明,这个函数会通过继承QThread的run函数在新的线程里面执行,以start函数自动调用run。

主函数的整体思路:
由MicAudio类实时监听音量变化,当超过一定数值就开始由WaveRecorder类录音,为什么不用Qt自带的录音,一是避免实时监听和录音的冲突,二是底层API的效率会高一些,可以有效避免冲突。当音量低于一定数值时,自动停止录音,然后调用iFlyVoice类开辟新的线程并进行翻译,然后显示出结果。其实,我也试过用QAudioRecorder录音,但是效果总是不好,于是抛弃了。

提示:代码中的appid已经删除,请填写自己的,msc.dll也使用自己的吧,如果遇见未启动就crash,基本上是msc.dll没放好的原因。其他的操作也可以看参考之前的帖子,就是写的有点乱。http://bbs.xfyun.cn/forum.php?mo … id=24654&extra=

【QT分享】基于QT+科大迅飞的连续语音识别相关推荐

  1. ros+科大迅飞语音包+图灵机器人(一)sdk下载及测试

    一.首先从科大迅飞开放平台(http://www.xfyun.cn/)注册一个账户 二.创建应用程序 我这里创建的应用名称为KF 三.下载SDK 只有创建好应用才能下载SDK 在ubuntu创建一个文 ...

  2. ros+科大迅飞语音包+图灵机器人(二)在ros上使用科大迅飞

    在工作空间catkin_ws下创建一个包 $ cd catkin_ws/src/ $ catkin_create_pkg voice_system std_msgs rospy roscpp 把科大迅 ...

  3. ros+科大迅飞语音包

    ros+科大迅飞语音包+图灵机器人(一)sdk下载及测试 2018年06月07日 21:43:47 阅读数:52 一.首先从科大迅飞开放平台(http://www.xfyun.cn/)注册一个账户 二 ...

  4. 使用科大迅飞SDK进行语音合成出现sh: 1: mplayer: not found

    使用科大迅飞SDK进行语音合成出现sh: 1: mplayer: not found 解决: sudo apt-get install mplayer 再次运行即可解决

  5. ROS使用科大迅飞SDK进行语音合成在编译出现alsa/asoundlib.h: No such file or directory

    ROS使用科大迅飞SDK进行语音合成在编译出现alsa/asoundlib.h: No such file or directory时 只要需要安装 sudo apt-get install liba ...

  6. Qt:基于Qt开发的轻量级HTTP/HTTPS服务器

    介绍 JQHttpServer是基于Qt开发的轻量级HTTP/HTTPS服务器,目前支持GET和POST两个协议. 底层有QTcpSocket.QSslSocket和QLocalSocket三个版本, ...

  7. 科大迅飞语音听写(流式版)WebAPI,Web前端、H5调用 语音识别,语音搜索,语音听写

    前言 由于公司有个Web项目需要用到语音搜索功能,找了一些第三方库都不太理想,要么语音识别速度很慢,要么不能精确识别等等,最后选择了迅飞语音(迅飞语音听写(流式版)WebAPI).迅飞语音相对来说做得 ...

  8. 使用科大迅飞语音开发时的一系列问题及解决办法

    1.添加framework时,将demo中的iflymsc.framework直接拖到项目里,不要管什么lib文件夹下的那两个框架,然后 #import "iFlyMSC/IFlyRecog ...

  9. 基于qt和mysql的地铁线路系统_[源码和文档分享]基于QT实现的可视化地铁换乘查询系统...

    1.1 题目 上海的地铁交通网络已经基本成型,建成的地铁线十多条,站点上百个,现需建立一个换乘指南打印系统,通过输入起点和终点站,打印出地铁换乘指南,指南内容包括起点站.换乘站.终点站. 图形化显示地 ...

最新文章

  1. 4.4 为什么使用深层表示-深度学习-Stanford吴恩达教授
  2. [CTO札记]Yew敏捷软件项目管理最佳实践
  3. file协议访问linux,Mozilla Firefox for Android 'file'协议未授权访问漏洞(CVE-2014-1501)
  4. python 面试题 -------------- get 和 post 请求的 区别
  5. mysql命令查找失效索引_mysql查询时无效索引的简单总结
  6. JZOJ 1237. 餐桌
  7. Android找工作系列之事件传递机制
  8. 计算硬盘的计算机,硬盘整数分区计算器免费版
  9. java调用Shell脚本
  10. arduino uno连接超声波传感器测距
  11. 批量关闭开启wordpress文章的评论功能
  12. 每日一题:16. “气球” 的最大数量 (C++)
  13. Androidadb驱动实现原理
  14. SAP那些事-职业篇-25-顾问的价值
  15. 用python提取发票扫描件常用的10多个发票信息保存到excel表
  16. VScode启动流程
  17. 数字化是指用计算机,数字化
  18. 1主2从基于GKE搭建k8s集群-无需科学上网
  19. 操作系统和数据库专业单词
  20. 如何营造游戏的恐慌氛围

热门文章

  1. matlab短路计算10机39节点
  2. 如何恢复手机中删除的微信聊天记录?
  3. ORA-00031:标记要终止的会话
  4. matlabFREQZ函数
  5. 想知道音频剪切软件有哪些吗?
  6. h3c服务器操作系统微软彩盒,校园网络设计计算机网络课程设计.doc
  7. 群表示论之置换特征标和S4的三阶不可约表示上篇
  8. 酷派一芯多用 顶端实惠且移动联通适配
  9. 【杂乱的生活】50条经典心理定律,教你看透人心!
  10. web前端期末大作业 基于HTML+CSS+JavaScript角色管理(带增删改查功能)