ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

QT的语音识别

2021-09-23 22:01:27  阅读:209  来源: 互联网

标签:jsonvalue QT Key key token client 语音 error 识别


难点:
难点就是如何跟百度云的语音应用进行通信。
首先,要获取应用的API Key、Secret Key,并通过请求鉴权接口换取 token。向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:
并在URL中带上以下参数:

grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key;

也就是
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=%14&client_secret=%2&
%1处填API KEY,%2处填secret key.

之后调用 QNetworkReply *reply=manager.post(request,requestdata);函数发送第一次http请求。(request里面设置url以及”头“)
requestdata第一次可以为空,不需要传什么东西,只是获取token。获取得到的json需要进行处理,以得出真正的token。

之后再用post函数来发送第二次请求,这次的request的url需要设置为http://vop.baidu.com/server_api?dev_pid=1537&cuid=%1&token=%2,其中%1需要设置为主机号(随便一个数字都可以),%2需要设置access token.也就是第一次请求获取的token,头与上次一样,requestdata需要传入需要识别的文件(这里打开音频文件,获取里面的全部内容放入QByteArray requestdata中,之后再发送过去,然后就可以接受数据,接受过来的数据里面包含一个result数组,此数组里面第一个元素包含的就是翻译后的结果。

解析json:
QString speech::getjsonvalue(QByteArray ba, QString key)
{
QJsonParseError error;
QJsonDocument jsondocument=QJsonDocument::fromJson(ba,&error);
if(error.error==QJsonParseError::NoError)
{
if(jsondocument.isObject())
{
QJsonObject jsonboj=jsondocument.object();
if(jsonboj.contains(key))
{
QJsonValue jsonvalue=jsonboj.value(key);
if(jsonvalue.isString())
{
return jsonvalue.toString();
}
else if(jsonvalue.isArray())
{
QJsonArray arr=jsonvalue.toArray();
QJsonValue jv=arr.at(0);
return jv.toString();
}
}
}
}
return “”;
}

前三个循环用来判断接收到的数据是否正常,然后判断是数组还是字符串,如果是字符串就是第一次post收来的数据,如果是数组就是第二次传来的数据。然后再最终获取数据。

标签:jsonvalue,QT,Key,key,token,client,语音,error,识别
来源: https://blog.csdn.net/heng6868/article/details/120427346

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有