本博是针对上一个版本的语音机器人更新,主要更新内容为对iat的支持,即使用语音交互取代文字输入的方式,由于之前忙于其他事情一直没来的及更新,以后会将语音机器人一直做下去,添加更多的功能和大家分享。
那么先来看看2.0版本的长什么样吧,首先来捕捉一只皮皮怪:

额,单看界面好像并没有什么变化,唯一的区别就是输入聊天内容变成了按住说话,美化什么的只能图一乐,真快乐还得看功能哈哈哈,当前版本的实现方式同第一版大同小异,同样按照讯飞webapi文档准备好Appid,CurTime, Param 和 CheckSum 信息并放在 HTTP 请求头中,其实与第一版不同的就是param,第一版的Param是上传文字信息的Param,2.0版本则是上传的则是语音信息的,至于其他的参数如何获取可参考第一版,要上传语音信息首先要获取用户的语音,通过QAudioInput来获取用户的语音,首先来声明一个AudioDevice的类:

class AudioDevice : public QWidget
{Q_OBJECT
public:AudioDevice();void startAudioDevice();void endAudioDevice();void playAudio();QString getWavFilePath() {return AudioFileSouce + AudioWavFile;}qint64 addWavHeader(QString catheFileName , QString wavFileName);
private:QString AudioFileSouce = QCoreApplication::applicationDirPath()+ "/Audio/"; //设置音频文件的存放路径QString AudioRawFile = "1.raw"; //音频文件名QString AudioWavFile = "1.pcm"; //音频文件名QFile *file;QAudioInput * input;QAudioOutput* output;
};

startAudioDevice表示开始录音,endAudioDevice表示结束,按照界面的方式我们的实现逻辑就应该是当鼠标按下按钮时调用startAudioDevice,然后录音结束时调用endAudioDevice,然后就可以将语音消息上传到讯飞Aiui获取结果了,addWavHeader主要是将录音生成的.raw文件转成.wav格式的语音文件,类中具体的实现博主也是参考了网友的代码,这里不做展示,需要源码的可以在评论区给个邮件地址,然后就是准备好Param,主要录音的采用频率和编码格式,比如博主采用的是采样频率:8000,音频编码格式:raw,一切准备就绪后回到主程序:

    audioDevice = new AudioDevice;connect(BtnFaSong, &QPushButton::pressed, this, [=](){audioDevice->startAudioDevice();  //开始录音        });connect(BtnFaSong, &QPushButton::released, this, [=](){audioDevice->endAudioDevice();  //结束录音SendMsg();  //上传语音消息});

逻辑如上所述,然后就是SendMsg中的变化:

    QByteArray dataArray;
//    QString text = lineEdit->text();
//    if(text.isEmpty())  //若发送内容为空时,默认发送你好
//    {//        text = "你好";
//    }//获取文件的指针FILE *file=fopen(audioDevice->getWavFilePath().toLocal8Bit().data(),"rb");if(!file){qDebug()<<"Open Failed";return;}    //把指针移动到文件的结尾 ,获取文件长度fseek(file,0,SEEK_END);    //获取文件长度auto fileLength=ftell(file);    //定义数组长度auto fileBuffer = new char[fileLength+1];//把指针移动到文件开头 因为我们一开始把指针移动到结尾,如果不移动回来 会出错rewind(file);//读文件fread(fileBuffer,1,fileLength,file);//把读到的文件最后一位 写为0 要不然系统会一直寻找到0后才结束fileBuffer[fileLength]=0;//关闭文件fclose(file);qDebug()<<fileLength;dataArray.append(fileBuffer,fileLength);

1.0版本是将用户输入框lineedit中的内容作为post的内容(注释部分),2.0则是获取本地保存的之前录好的wav文件,将wav文件读取并以二进制字节数组放入请求body中,发送出去后就可以获取到返回的Jason信息了,对于Jason信息我们主要关注关键字:“sub”,“text”和“answer”就可以了,至于其他内容功能可以自行选择解析,备注第一版的解析方式不可以直接在第二版上用,需要做一定的修改。
至此,iat功能已经集成,其他省略的内容请参照第一版,下面是讯飞官方的webapi文档:
讯飞官方的webapi文档
独乐乐不如众乐乐,需要源码的可以评论留下邮件地址。

基于QT平台webapi科大讯飞语音机器人2.0相关推荐

  1. 基于QT平台webapi科大讯飞语音机器人

    最近打算做一个语音识别,语义理解机器人方面的软件,于是了解了科大讯飞语音平台,平台大部分都是对Java的支持,对c和c++的支持特别少,对c的支持有Windows的SDK,但是代码相对冗杂,且不支持跨 ...

  2. 基于Qt平台开发安卓应用

    基于Qt平台开发安卓应用 在之前的Qt学习中,使用QtGUI来实现简单的界面与后台功能设计.这样开发出来的应用往往界面元素比较单一,美感几乎可以省略,与其他移动平台开发的App相比,确实逊色不少.基于 ...

  3. 基于Qt平台的集串口调试助手、示波器、图像显示功能于一体的上位机。

    基于Qt平台的集串口调试助手.示波器.图像显示功能于一体的上位机. 可用的上位机及通信协议可在这里下载,通信协议可以很方便的移植到stm32上 链接:https://pan.baidu.com/s/1 ...

  4. 超详细基于Qt平台实现C/C++调用Matlab函数全流程

    超详细基于Qt平台实现C/C++调用Matlab函数全流程 1. 基本调用方式介绍 2. 环境配置 3. 将Matlab程序写成函数形式 4. Matlab配置C编译器,将.m文件转换成动态链接库 4 ...

  5. 基于云平台的智能语音交互式灌溉系统

    ---------------------------------------------------------------------------------------------------- ...

  6. ubuntu下,在QT中利用科大讯飞语音库实现语音合成TTS

    首先要去科大讯飞语音库注册,下载linux下的在线合成TTS的SDK,然后在QT下建立一个基于控制台的工程,其实建立关于UI的也可以,问题不大,这里以控制台工程进行说明.将sample中TTS部分的t ...

  7. 基于QT平台的手持媒体播放器项目实战视频教程下载

    分享一套关于在QT平台的手持媒体播放器项目实战的视频教程,Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架. 它既可以开发GUI程式,也可用于开发非GUI程式,比如控制台工 ...

  8. 【项目一】基于Qt平台的交互式输入与输出窗口

    [一]前言: 经过一段时间的C++和Qt学习,作为对这一阶段学习成果的检验,我决定使用Qt平台模仿C++的控制台输入输出编写一个项目. 初学C++的时候,程序获取用户输入是通过标准输入输出流对象实现的 ...

  9. 基于QT平台调试rtklib教程

    本次调试基于QT5.6.3 MinGW平台 Windows10系统 rtklib版本为最新b31 下载地址为https://github.com/tomojitakasu/RTKLIB/tree/rt ...

最新文章

  1. 剑指Offer_08_跳台阶
  2. 【IM】关于稀疏学习和鲁棒学习的理解
  3. 在多台服务器上简单实现Redis的数据主从复制
  4. 手机linux内核下载,Linux Kernel
  5. “高考”机器人横空出世 2017年居然要考“大学”
  6. 关于wpf,datagrid,双向数据绑定用法解决方案
  7. gwt格式_活性GWT
  8. 8a 中断 传感器采集_加速度传感器的安装,你get了吗
  9. 一道基础 Java 面试题,但值得很多人反思!
  10. iOS设计模式之备忘录模式
  11. python——遥感影像分块
  12. 最小均方算法二分类(基于双月数据集)
  13. VS2019++QT5.12.10+PCL1.11.1+VTK8.2.0+opencv(camke3.18.0)环境搭配及演示实例
  14. 一家互联网创业公司的“估值”是如何来的
  15. 【Redis】五种存储类型及其底层数据结构
  16. 一文读懂串口及各种电平信号含义
  17. 移动端测试介绍和练习
  18. 新商业模式:在区块链上寻找新机会
  19. 脉冲神经网络克服了类脑计算的硬件障碍,让AI更节能
  20. MDF,LDF格式文件还原数据库

热门文章

  1. (超全,超经典)scanf()函数与printf()中的格式说明符
  2. 笔记本无法访问特定无线网络的解决办法
  3. Pyhon - pyh 库 解决中文乱码问题
  4. 全国计算机四六级官网,英语四级报名入口|英语六级报名入口官网-全国大学英语四六级考试网...
  5. (转载)很经典的一篇文章《如果让我重做一次研究生——王泛森院士》
  6. DataBinder.Eval(Container.DataItem
  7. 计算机操作员中级资格证怎么补办,请问遗失了中华人民共和国职业资格证书在哪里补办..._卫生资格考试_帮考网...
  8. 显卡驱动怎么更新下载,驱动人生一键解决
  9. 推荐率91.3%,这款Roguelike游戏分享了和玩家“相处”的秘诀
  10. 旧手机不要轻易扔掉,将其设置为无线网卡,不消耗流量