0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AI语音识别-我给浏览器加了个语音搜索功能

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2023-07-10 09:18 次阅读

1. 前言

随着物联网的发展,语音识别技术受到越来越多的关注,语音识别技术正积极推动信息通信领域的革命,语音拨号,语音邮件,语音输入乃至语音操控等以语音识别为基础的人机交互日益普及.尽管生物识别方式不断增多,语音识别方式仍是主流方式.与其他生物识别技术相比,语音识别技术不仅具有非接触,非侵入性,使用方便,不会遗失和忘记,不需记忆等特点。

本篇文章就采用华为云提供的在线语音识别服务给浏览器设计一个语音自动搜索的功能,编程语言采用C++,软件框架采用QT设计,浏览器内核采用QWebEngineView,在QT5.7以后,QT里就不支持webkit了,目前自带的浏览器内核是QWebEngineView,只能使用MSVC编译编译,mingw要使用浏览器可以单独下载webkit的库,或者使用COM组件调用IE浏览器,当前文章里使用的浏览器是QWebEngineView,编译器采用VS2017,32bit。

语音采集功能使用QT的QAudioInput类来实现,采集声卡的PCM数据,保存起来,通过华为云的语音识别HTTP接口完成文字识别,得到文字后再通过浏览器进行搜索文字相关内容。

实现效果如下:

image-20220106190739135

点击界面上的 ”开始语音采集“按钮,就可以说话,说完点击停止采集,然后调用华为云的语音识别接口进行语音识别,在下面的显示框上显示识别到的文字,然后再完成浏览器自动搜索。

image-20220106190855680

image-20220106193216974

2. 创建语音服务器

2.1 使用语音服务

登录华为云官网: https://www.huaweicloud.com/

选择产品-人工智能-语音交互服务-一句话识别。

image-20220106164835826

短语音识别地址: https://www.huaweicloud.com/product/asr.html

短语音识别是将口述音频转换为文本,通过API调用识别不超过一分钟的不同音频源发来的音频流或音频文件。适用于语音搜索、人机交互等语音交互识别场景。 支持免费试用。

image-20220106165023581

免费试用每日500次。

image-20220106165205406

image-20220106165217533

image-20220106165234937

image-20220106165403583

image-20220106170045851

2.2 HTTP接口使用介绍

文档地址: https://support.huaweicloud.com/api-sis/sis_03_0094.html

image-20220106170707976

在线调试接口地址: https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=SIS&api=RecognizeShortAudio

几个重要的参数:

本地音频采集的频率、通道数都得与参数匹配。

image-20220106191232190

image-20220106191250256

2.3 接口地址总结

请求地址: "https://{endpoint}/v1/{project_id}/asr/short-audio"
 ​
 请求数据:
 {
     "config": {
         "audio_format": "ulaw8k8bit",
         "property": "chinese_8k_common",
         "add_punc": "yes",
         "digit_norm": "yes",
         "need_word_info": "yes"
     },
     "data": "/+MgxAAUeHpMAUkQAANhuRAC..."
 }
 ​
 请求头里要带: X-Auth-Token 参数

请求数据里的参数在前面截图里介绍了,data就是音频文件的base64编码数据。

请求地址里的endpoint字段、project_id字段、还有X-Auth-Token字段只要是访问华为云的任何API接口都需要填,获取方法看这里: https://bbs.huaweicloud.com/blogs/317759 翻到2.3小节。

image-20220106192419443

识别成功返回的数据:

{
   "trace_id": "567e8537-a89c-13c3-a882-826321939651",
   "result": {
     "text": "欢迎使用语音云服务。",
     "score": 0.9,
     "word_info": [
       {
         "start_time": 150,
         "end_time": 570,
         "word": "欢迎"
       },
       {
         "start_time": 570,
         "end_time": 990,
         "word": "使用"
       },
       {
         "start_time": 990,
         "end_time": 1380,
         "word": "语音"
       },
       {
         "start_time": 1380,
         "end_time": 1590,
         "word": "云"
       },
       {
         "start_time": 1590,
         "end_time": 2070,
         "word": "服务"
       }
     ]
   }
 }

其中的text字段就是识别的文本数据。

3. 项目代码示例

下面列出核心的代码,主要是就是字符串拼接格式,拼接完发送http请求即可。

3.1 语音转文字请求代码

//语音转文本
 void Widget::audio_to_text(QByteArray data)
 {
     function_select=0;
 ​
     QString requestUrl;
     QNetworkRequest request;
 ​
     //存放文件的BASE64编码
     QString base64_Data;
 ​
     //设置请求地址
     QUrl url;
 ​
     //一句话识别的请求地址
     requestUrl = QString("https://sis-ext.%1.myhuaweicloud.com/v1/%2/asr/short-audio")
             .arg(SERVER_ID)
             .arg(PROJECT_ID);
     qDebug()< < "requestUrl:"<

3.2 更新token代码

/*
 功能: 获取token
 */
 void Widget::GetToken()
 {
     //表示获取token
     function_select=3;
 ​
     QString requestUrl;
     QNetworkRequest request;
 ​
     //设置请求地址
     QUrl url;
 ​
     //获取token请求地址
     requestUrl = QString("https://iam.%1.myhuaweicloud.com/v3/auth/tokens")
                  .arg(SERVER_ID);
 ​
     //自己创建的TCP服务器,测试用
     //requestUrl="http://10.0.0.6:8080";
 ​
     //设置数据提交格式
     request.setHeader(QNetworkRequest::ContentTypeHeader, QVariant("application/json;charset=UTF-8"));
 ​
     //构造请求
     url.setUrl(requestUrl);
 ​
     request.setUrl(url);
 ​
     QString text =QString("{"auth":{"identity":{"methods":["password"],"password":"
     "{"user":{"domain": {"
     ""name":"%1"},"name": "%2","password": "%3"}}},"
     ""scope":{"project":{"name":"%4"}}}}")
             .arg(MAIN_USER)
             .arg(IAM_USER)
             .arg(IAM_PASSWORD)
             .arg(SERVER_ID);
 ​
     //发送请求
     manager- >post(request, text.toUtf8());
 }

3.3 华为云返回的结果处理

//解析反馈结果
 void Widget::replyFinished(QNetworkReply *reply)
 {
     QString displayInfo;
     int statusCode = reply- >attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
 ​
     //读取所有数据
     QByteArray replyData = reply- >readAll();
 ​
     qDebug()< < "状态码:"<

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 物联网
    +关注

    关注

    2870

    文章

    41639

    浏览量

    358396
  • AI
    AI
    +关注

    关注

    87

    文章

    26458

    浏览量

    264072
  • 语音识别
    +关注

    关注

    37

    文章

    1635

    浏览量

    111836
  • 浏览器
    +关注

    关注

    1

    文章

    974

    浏览量

    34420
  • 华为云
    +关注

    关注

    3

    文章

    2155

    浏览量

    16807
收藏 人收藏

    评论

    相关推荐

    11你应当使用FIREFOX浏览器的理由

    安全。与IE不同的是,火狐不允许浏览器安装ActiveX控件 。 ActiveX其实是一可以在线更新Internet Explorer和Windows 的程序。但是它也一非常大的危险,那就是为
    发表于 11-26 16:31

    CES热门技术:语音识别

    ”理念,通过语音控制、动作控制和面部识别等技术手段,实现智能用户与智能电视间的互动关联。用户只需要简单地说声“你好,电视”(Hi, TV)就可以开启语音控制,说声“网络浏览器”(Web
    发表于 02-06 13:27

    1小时玩转AI语音识别

    的海报,便可获得:1、免费观看直播特权2、参与直播互动可得一份【AI语音及人脸识别系统开发文档教程】。本群限时开放400人参加,活动截止到2018年9月20日,福利将在活动结束三工作
    发表于 09-19 13:40

    直播福利:1小时玩转AI语音识别

    的海报,便可获得:1、免费观看直播特权2、参与直播互动可得一份【AI语音及人脸识别系统开发文档教程】。本群限时开放400人参加,活动截止到2018年9月20日,福利将在活动结束三工作
    发表于 09-19 13:46

    AI语音智能机器人开发实战

    设计、再到现场写代码实现每一子模块的功能,一步步带领大家开发出一款可量产的商用AI语音智能陪护机器人。学完整个课程,大家能够全面掌握AI
    发表于 01-04 11:48

    基于MSP432 MCU的语音识别设计概述

    示了这个功能。TI还发布了一用C语言代码编写的语音识别库,这个库使得基于MSP432 MCU的应用能够
    发表于 07-30 04:45

    通用型AI语音识别芯片音旋风611如何?

    近日,国产原生芯片品牌探境科技宣布全球首款通用型AI语音识别芯片——音旋风611(英文名称:Voitist611)目前正式进入批量供货量产并已获得大量客户的认可和采用。这款芯片将适用于各种需要
    发表于 09-11 11:52

    设计一语音识别的模块

    大,准备识别的最大范围能不能达到5米,或者说极限能够达到几米3:支持485长距离通讯4:可多个串联,只要一模块识别语音,就触发动作。或者是多个
    发表于 09-12 22:34

    语音识别】你知道什么是离线语音识别和在线语音识别吗?

    率是可以达到90%以上的;而对于一些不连接网络的产品,如:移动照明,按摩等,离线语音识别比在线的就更加适合,而且从价格方面来说,离线语音识别
    发表于 04-01 17:11

    自制基于ESP32的语音识别模块

    来调试模块,也可以通过UART接口对接单片机、arduino、DSP、FPGA等硬件,方便您实现语音识别功能语音识别模块背面
    发表于 08-24 15:03

    【开发教程11】AI语音人脸识别(会议记录仪-人脸打卡机)-AI语音系统架构

    传送到CC3200,CC3200通过wifi把采集到的语音信号发送给服务,服务再使用百度AI语音识别
    发表于 05-20 15:35

    【开发教程11】疯壳·AI语音人脸识别(会议记录仪-人脸打卡机)-AI语音系统架构

    传送到CC3200,CC3200通过wifi把采集到的语音信号发送给服务,服务再使用百度AI语音识别
    发表于 07-30 19:06

    【CC3200AI实验教程11】疯壳·AI语音人脸识别-AI语音系统架构

    传送到CC3200,CC3200通过wifi把采集到的语音信号发送给服务,服务再使用百度AI语音识别
    发表于 08-30 14:54

    请问语音识别如何停止?

    现在整合了语音识别和音乐播放功能识别到唤醒词
    发表于 03-10 08:31

    语音数据集在智能语音搜索中的应用与挑战

    挥着重要作用,为系统提供了丰富的语音数据和信息,提高了搜索的准确性和效率。本文将详细介绍语音数据集在智能语音搜索中的应用、面临的挑战以及未来
    的头像 发表于 01-18 15:09 211次阅读