当前位置: 首页 > news >正文

自动的网站设计制作网站搜索引擎怎样做

自动的网站设计制作,网站搜索引擎怎样做,新网站建设服务公司,游戏代理哪个平台正规前言 随着社会的发展#xff0c;科技的不断进步#xff0c;中国特色社会主义进入新时代#xff0c;我国社会主要矛盾已经转化为人民日益增长的美好生活需求......不好意思跑题了 咳咳#xff0c;OK 话不多说#xff0c;正式步入主题 目录 前言 一、语音识别详细过程 二、代… 前言         随着社会的发展科技的不断进步中国特色社会主义进入新时代我国社会主要矛盾已经转化为人民日益增长的美好生活需求......不好意思跑题了 咳咳OK 话不多说正式步入主题 目录 前言 一、语音识别详细过程 二、代码详情 1_0.音频获取—— .h文件 1_1.音频获取—— .cpp文件 2_0.语音识别请求——.h文件  2_1.语音识别请求——.cpp文件   3_0.HTTP请求——.h文件  3_1.HTTP请求——.cpp文件 效果展示 总结 一、语音识别详细过程 1、使用QT自带音频类录取语音信息 .........此处省略一万字 2、将语音信息上传至百度AI进行识别HTTP请求 .........此处省略一万字 3、解析获取的语音识别结果JSON解析 .........此处省略一万字 ——详情都在代码里 二、代码详情 1_0.音频获取—— .h文件 #ifndef AUDIO_H #define AUDIO_H#include QObject#include QAudioDeviceInfo //查询音频设备 #include QAudioInput //音频输入 #include QAudioFormat //音频存储#include QFile#include speech.h#include QMessageBox #include QDebugclass Audio : public QObject {Q_OBJECT public:explicit Audio(QObject *parent nullptr);signals:public slots:public:void startAudio(QString fileName);//初始化void stopAudio();//停止录音QString startSpeech();//开始录音并识别private:QString AudioFileName;//用于记录音频文件名QFile *AudioFile;//用于操作音频文件QAudioInput *AudioDevice;//音频设备对象Speech *speech;//语音识别对象};#endif // AUDIO_H 1_1.音频获取—— .cpp文件 #include audio.hAudio::Audio(QObject *parent) : QObject(parent) {speech new Speech(this); }void Audio::startAudio(QString fileName) {if(fileName.isEmpty()){QMessageBox::warning(NULL,警告(Audio),无音频文件名);return;}QAudioDeviceInfo device QAudioDeviceInfo::defaultInputDevice();//用于检测音频设备状态信息if(device.isNull()){QMessageBox::warning(NULL,警告(Audio),无音频设备);}else{/* 记录录音文件 */AudioFileName fileName;/* 音频编码要求 */QAudioFormat m_format;/* 设置采样频率 */m_format.setSampleRate(16000);/* 设置通道数 */m_format.setChannelCount(1);/* 设置位深 */m_format.setSampleSize(16);/* 设置编码格式 */m_format.setCodec(audio/pcm);//http上传推荐pcm格式也可封装成json上传/* 判断设备是否支持该格式 */if(!device.isFormatSupported(m_format)){/* 寻找最接近的格式 */m_format device.nearestFormat(m_format);}//打开文件创建一个音频文件AudioFile new QFile;AudioFile-setFileName(fileName);AudioFile-open(QIODevice::WriteOnly);/* 创建录音对象 */AudioDevice new QAudioInput(m_format,this);AudioDevice-start(AudioFile);}}QString Audio::startSpeech() {if(AudioFileName.isEmpty())//检查录音文件是否存在{QMessageBox::warning(NULL,警告,文件不存在);return QString();}return speech-speechIdentify(AudioFileName); //语音识别并返回识别后的结果调用speech中的函数 }void Audio::stopAudio() {/* 停止录音 */AudioDevice-stop();/* 关闭文件 */AudioFile-close();/* 删除文件对象指针并置空 */delete AudioFile;AudioFile nullptr;} 2_0.语音识别请求——.h文件 #ifndef SPEECH_H #define SPEECH_H#include http.h#include QObject#include QByteArray #include QMessageBox#include QJsonDocument #include QJsonObject #include QJsonArray #include QJsonValue#include QFile #include QHostInfo#include QDebugconst QString BaiduSpeechUrl https://aip.baidubce.com/oauth/2.0/token?grant_typeclient_credentialsclient_id%1client_secret%2; //获取token请求的Url const QString BaiduSpeechClientID v0jaeF9X3Z7e0n5TsHaD5keZ; //AK const QString BaiduSpeechClientSecret Sm3pQ1ERXLu11RlRddnlpRBsHBdUNvVn; //SK//语音识别的Url const QString BaiduSpeechSatrtUrl https://vop.baidu.com/pro_api?dev_pid80001cuid%1token%2; //80001识别普通话 %1:本机标识 %2:获取的token /** 1.发送获取token值的Url相当于向百度对接获取通行证(token值)* 2.发送语音识别的Url进行语音识别*/class Speech : public QObject {Q_OBJECT public:explicit Speech(QObject *parent nullptr);signals:public slots:public:QString speechIdentify(QString audioFile);//语音识别请求函数private:QString getJsonValue(QByteArray data, QString key);//json解析函数private:QString accessToken;//存放获取的token值 };#endif // SPEECH_H2_1.语音识别请求——.cpp文件 #include speech.hSpeech::Speech(QObject *parent) : QObject(parent) {} /*Http请求函数*/ QString Speech::speechIdentify(QString audioFile) {if(audioFile.isEmpty()){QMessageBox::warning(NULL,警告(speech),录音文件不存在);return QString();}bool ret false;/* 组装access token的Url */QString TokenUrl QString(BaiduSpeechUrl).arg(BaiduSpeechClientID).arg(BaiduSpeechClientSecret);/**************获取token值不用的参数但自定义http函数需要传入**************/QMapQString, QStringheader; //Content-Type: audio/pcm;rate16000键值对 RAW方式上传音频header.insert(QString(Content-Type),QString(audio/pcm;rate16000));QByteArray requestData;//存放上传的录音信息QByteArray replyData;//存放语音识别返回的结果/**************获取token值不用的参数但自定义http函数需要传入**************///获取token值获取一次使用30天if(accessToken.isEmpty() true)//如果token值为空即未获取token值{//http请求以获取token值ret Http::http_postRequst(TokenUrl, header, requestData, replyData);if(ret){QString key access_token;accessToken getJsonValue(replyData,key);replyData.clear(); // qDebug() 获取的token —— accessToken;}}/* 将获取的token值组装到新的url中用于发送语音识别请求*/QString speechUrl QString(BaiduSpeechSatrtUrl).arg(QHostInfo::localHostName()).arg(accessToken);/* 把文件转换成QByteArray */QFile file;file.setFileName(audioFile);//获取保存的录音文件file.open(QIODevice::ReadOnly);requestData file.readAll();//读取录音文件中的内容file.close();if(requestData.isEmpty()){return QString(语音数据为空);}/* 再次发送http请求 进行语音识别 */ret Http::http_postRequst(speechUrl, header, requestData, replyData);if(ret){QString key result;QString text getJsonValue(replyData,key);//json解析自定义函数将结果转换成QStringreturn text;}else{QMessageBox::warning(NULL,警告(speech),识别失败);}return QString(); }/*JSON解析函数*/ QString Speech::getJsonValue(QByteArray data, QString key) {QJsonParseError parseError;QJsonDocument jsonDocument QJsonDocument::fromJson(data,parseError);QString retStr ;if(parseError.error QJsonParseError::NoError){if(jsonDocument.isObject()){/* 将jsonDocument 转换成json对象 */QJsonObject jsonObj jsonDocument.object();if(jsonObj.contains(key)){QJsonValue jsonVal jsonObj.value(key);if(jsonVal.isString()){return jsonVal.toString();}else if(jsonVal.isArray())//检查是否为数组{QJsonArray arr jsonVal.toArray();for(int index 0; indexarr.size(); index){QJsonValue subValue arr.at(index);if(subValue.isString()){retStr subValue.toString() ;}}return retStr;}}else{qDebug() 不包含关键字 key;}//contains(key)}else{qDebug() 不是json对象;}//isObject}else{qDebug() 未成功解析JSON;}//NoErrorqDebug() 未成功解析JSON data.data();return QString(); }3_0.HTTP请求——.h文件 #ifndef HTTP_H #define HTTP_H#include QObject #include QNetworkAccessManager //发送请求 #include QNetworkRequest //请求内容 #include QNetworkReply //返回的结果#include QEventLoopclass Http : public QObject {Q_OBJECT public:explicit Http(QObject *parent nullptr);signals:public slots:public:static bool http_postRequst(QString Url, QMapQString,QStringheader, QByteArray requestData, QByteArray replyData); };#endif // HTTP_H3_1.HTTP请求——.cpp文件 #include http.hHttp::Http(QObject *parent) : QObject(parent) {}bool Http::http_postRequst(QString Url, QMapQString, QString header, QByteArray requestData, QByteArray replyData) {QNetworkAccessManager manager; //请求者QNetworkRequest request; //请求内容request.setUrl(Url); //获取token值时参数只需要url和接收token值即可QMapIteratorQString, QString it(header);while (it.hasNext()) {//判断header中是否有内容并读取it.next();request.setRawHeader(it.key().toLatin1(),it.value().toLatin1());}/* 发送请求等待响应 */QNetworkReply *Reply manager.post(request,requestData);//发送请求QEventLoop l;connect(Reply,QNetworkReply::finished,l,QEventLoop::quit); //等待响应l.exec();//阻塞等待响应if(Reply ! nullptr Reply-error() QNetworkReply::NoError){replyData Reply-readAll();//读取获取的语音识别结果return true;}return false; }效果展示 总结 通过调用 audio文件中的startAudio函数实现开始录音stopAudio函数停止录音并使用startSpeech函数上传语音信息进行识别。 项目链接:  Gitee链接 注如果使用时出现以下情况说明你的QT软件缺少OpenSSL库建议去安装对应版本的库不会装的话去网上搜索QT安装openSSL1.0.2教程
http://www.dnsts.com.cn/news/61202.html

相关文章:

  • 哈尔滨道外区建设局官方网站安徽网站建站系统平台
  • 网站开发费 会计科目wordpress win linux
  • wap网站域名申请北京发布会直播回放
  • 同城型网站开发网站建设与制作设计公司
  • 浙江住房和城乡建设网站万能浏览器手机版下载安装
  • 做PHP网站前端网站进不去塑胶网站建设
  • 以前在线做预算的网站东莞网站建设哪里找
  • 网站后台维护一般要怎么做网店美工素材
  • 有没有专门做采购的网站建网站多少钱建个网站需要怎么做
  • 电子商务网站开发技术和工具有哪些网站建设建议书
  • 建设银行新加坡招聘网站电商系统平台开发
  • 企业网站可以备案几个西安app开发
  • 做网站怎样做全页面珠海网站建设公
  • 深圳市龙岗区做网站的公司微信如何自己开发小程序
  • 上海建设银行官网网站首页百度竞价推广运营
  • 网站安全建设思考有道云笔记 wordpress
  • 我是做网站的 怎么才能提高业绩服装定制行业市场分析
  • 怎么判断一个网站做的好网络工程可以从事什么工作
  • h5免费模板网站深圳中国网站制作哪家公司好
  • 河南网站备案所需资料网站建设能挣钱吗
  • 做网站前端ps很重要吗湖南郴州最新消息
  • 网站做下cdn网站建设图片链接方法
  • 设计师的个人网站wordpress4.9.4中文版
  • 国外网站后台模板商城网站后台模板
  • 营销型网站规划抖音代运营合同文件
  • 随机图片网站旅游网站设计的目的与意义
  • 网站站外链接什么是网站的tdk
  • 企业网站的作用网站内部建设和程序
  • 如何制作网站教程视频讲解网站建设转正申请报告
  • 搜搜网站提交电子工程网站大全