如何用2分钟的时间,把语音识别功能加到你的项目中? 早在十年前,就有一些大厂推出了AI开放平台,这里面就包含语音识别的功能。
用法也非常简单,大概的流程就是,先把你的语音录制成文件,然后发送给服务器,服务器识别后得到数据,最后返回给你,全程不涉及语音识别,但是却完成了语音识别功能。
以百度AI平台为例,先注册一个账号,领取免费额度,这一步还有重要的信息,比如各种id、服务器地址等等。
然后开始录音,并且把音频数据以文件的形式保存下来。
QAudioDeviceInfo device = QAudioDeviceInfo::defaultInputDevice(); if (device.isNull()) //录音设备不存在 { QMessageBox::warning(NULL, "QAudioDeviceInfo", "录音设备不存在"); } else { //音频编码要求 QAudioFormat m_format; //设置采样频率 m_format.setSampleRate(16000); //设置通道数 m_format.setChannelCount(1); //设置位深 m_format.setSampleSize(16); //设置编码 m_format.setCodec("audio/pcm"); //判断设备是否支持该格式 if (!device.isFormatSupported(m_format)) { m_format = device.nearestFormat(m_format); } //打开文件 m_file = new QFile; m_file->setFileName(fileName); m_file->open(QIODevice::WriteOnly); //创建录音对象 m_audio = new QAudioInput(m_format, this); m_audio->start(m_file); }
注:以上代码基于QT! 接下来,就是通过HTTP协议把数据发送给服务器。
//把文件转换成QByteArray; QFile file; file.setFileName(fileName); file.open(QIODevice::ReadOnly); requestData =file.readAll(); file.close(); replyData.clear(); //再次发起请求 result = m_http.post_sync(speechUrl, header, requestData, replyData); if (result) { QString key = "result"; QString text = getJsonValue(replyData, key); return text; //qDebug() << accessToken; } else { QMessageBox::warning(NULL, "识别提示", "识别失败"); }
顺利的话,我们会收到一个json数据包,里面就包含了识别到的文字。
QJsonParseError parseError; QJsonDocument jsonDocument = QJsonDocument::fromJson(ba, &parseError); 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(); //转换成JsonArray QJsonValue jv = arr.at(0); //获取第1个元素 return jv.toString(); } } } }
这个过程,我们只需要会一些网络编程、文件操作、解析json,再配合官方的文档,基本就能搞定。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。