全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 音视频/家电 >

如何把语音识别功能加到你的项目中?

时间:2023-02-16 10:58

人气:

作者:admin

标签: 服务器  语音识别  AI 

导读:如何把语音识别功能加到你的项目中?-大概的流程就是,先把你的语音录制成文件,然后发送给服务器,服务器识别后得到数据,最后返回给你,全程不涉及语音识别,但是却完成了语...

如何用2分钟的时间,把语音识别功能加到你的项目中? 早在十年前,就有一些大厂推出了AI开放平台,这里面就包含语音识别的功能。

305d8468-ad16-11ed-bfe3-dac502259ad0.png

用法也非常简单,大概的流程就是,先把你的语音录制成文件,然后发送给服务器,服务器识别后得到数据,最后返回给你,全程不涉及语音识别,但是却完成了语音识别功能。

308d80a0-ad16-11ed-bfe3-dac502259ad0.png

以百度AI平台为例,先注册一个账号,领取免费额度,这一步还有重要的信息,比如各种id、服务器地址等等。

30f088a8-ad16-11ed-bfe3-dac502259ad0.png

  然后开始录音,并且把音频数据以文件的形式保存下来。

  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,再配合官方的文档,基本就能搞定。 如果需要详细教程,扫描下方二维码,基于QT的百度语音识别应用。     编辑:黄飞

 

 

 

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信