接入百度和轻语的AI智能接口实现语音识别和语音播放

  • 语音识别
    • 思路
    • 代码
  • 语音合成
  • 思路
  • 总结

语音识别

思路

先在百度和轻语申请接口,获得appkey和secretkey(这是为了获得鉴权,也就是token)
这个简单的说相当于身份的认证,服务器要知道是申请了这个接口的人在调用这个接口,才能通过,才能进行逻辑处理并返回数据
然后是在unity里用它自带的访问外网的类去访问即可,如www/UnityWebRequest,这两个都是可以访问到外网的类(亲测有效)
两个都可以get请求网post请求,post需要在URL后面加上你需要传入的参数即可
下面是www的请求方式

 WWWForm getTForm = new WWWForm();getTForm.AddField("tok", baiDuStoken);getTForm.AddField("cuid", "abcdxxx");getTForm.AddField("ctp", "1");getTForm.AddField("lan", "zh");getTForm.AddField("tex", word);WWW getTW = new WWW(baiduVoiceComposeUrl, getTForm);

请求的时候最好在IEnumerator方法里,因为里面有yield return www. 可以让程序在请求的过程中等待返回数据再进行后面的程序
下面是UnityWebRequest的请求方式

UnityWebRequest webRequest = UnityWebRequest.Get("你的请求网址以及需要的参数(如applykey等)" + question);

然后就是根据请求返回的数据对数据进行处理和识别
获得响应的数据的方法
www是www.text()这个是获得string数据
www.bytes()这个是获得字节流,这个方法在语音合成的时候有用,因为需要通过这个将字节流数据转换成音频,然后播放
UnityWebRequest是UnityWebRequest.downloadHandler.text这个获得string数据
然后需要加载第三方的插件litjson对string进行数据的分析
这里因为我是一开始用litjson老是报错,赶进度我就直接在响应数据里对数据进行判断自己拿数据了
目前对litjson里的方法掌握的还不是很熟练

代码

代码的精髓都在上面了,我就不重新贴了

语音合成

思路

将语音识别的数据变成byte字节流,然后通过第三方的类对其进行转换,变成wav/mp3格式。然后再用AudioSource.clip里的play()方法对音频进行播放就可以了
上面已经说明了如何获得byte字节流,这里就不多赘述
在这里我的主要难点有几个,首先是不知道我获得的byte字节流是不是就是我需要的音频数据,因此卡在这里了很久,后面通过将数据保存到本地后播放的方式确定了这个数据就是我需要的音频
音频的储存这里也不多描述了,百度大法有详细的教程
确定好这个数据是我要的音频后,就只需要专心的去想如何播放这个音频了,首先这里我用的是第三方的插件NAudio.dll,用他的方法直接将字节流转换成了音频文件(里面还有歌诗的选择,转成mp3或者wav都可以)
需要的大佬可以私聊(我试试可不可以在下面放链接)

直接用里面的fromWAVData方法把响应回来的数据全部放进去就行了,然后他会处理返回一个clip类,这个里面就保存了合成后的音频,然后进行play()就可以实现语音的播放了

总结

看这个帖子写的内容不多但是这个几乎花了我半天的时间研究,可能是因为这是对接外面的,所以很多报错的时候不知道从哪里开始入手,也不知道到底是哪里出了问题,只能一个一个百度,一个一个尝试,过程中发现我出现的问题基本搜不到,还烦了好一会儿,现在回想起来,可能是因为这个实现的过程其实很简单,大家基本 没有遇到太大的问题(还是太菜了)
先写到这里吧~

2021.3.22更新
上面这个只适用于window系统,之前没有测试过在安卓的情况,在安卓上发现naudioplayer这个库里的某些功能只能在windows系统下被识别,在安卓是识别不了的,更不用说ios了,至于解决办法,网上有一些,不过目前还没有成功的,明天再试试
今天主要是发现了如何给3d模型添加点击事件

http://blog.sina.com.cn/s/blog_c3e21e750102yfnm.html

大佬的帖子是可以使用的,亲测有效,直接复制代码就可以了
以及下面给物体添加简单的旋转功能

https://blog.csdn.net/qq_40323256/article/details/88397207

这两个功能结合在一起就能实现目前项目里最需要的一个功能,就是和模型能进行互动
这里有一个小问题,就是上面大佬的代码只适用于cube也就是unity自带的GameObject组件,从别的地方导入的模型他是不识别的,这里有一个小技巧,就是给模型创建一个透明的cube组件,将这个组件设为模型的父类,通过控制组件来控制模型即可

unity学习笔记-番外(接入百度和轻语的AI智能接口实现语音识别和语音播放)相关推荐

  1. unity学习笔记-番外(3d模型的动作设计以及导入-2018版)材质的替换以及动作穿模(自己的手穿模到自己的其他部位)

    unity学习笔记-番外(3d模型的动作设计以及导入) 动作设计白嫖方法 方法一:小k网 需要注意的地方 方法二:mixamo 需要注意的地方 材质的替换 一 动作的穿模 2021.5.13更新 -2 ...

  2. TikZ学习笔记番外篇: 使用tikzcd包绘制交换图

    什么是交换图 映射的合成关系, 用图表示出来, 称为交换图. 怎么绘制 有很多方法可以绘制, 都是基于LaTeX\LaTeXLATE​X 的, 这里我使用了TikZ\mathrm{T}i\mathrm ...

  3. cocos2d-x学习笔记番外篇05:如何快速屏蔽触摸

    cocos2d-x有个问题,即使暂停CCScene运行,触摸仍然有效,有些菜单和按钮仍然会被触发. 所以有的时候我们要手动屏蔽触摸,尤其是在弹出计费画面的,或者使用一些本平台自带控件的时候. 做法有几 ...

  4. 【Unity学习笔记】b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别)

    [Unity学习笔记]b站Unity架构课Unity3D 商业化的网络游戏架构(高级/主程级别) 自己跟着学完了,写了不少代码,会放在CSDN代码库,因为老师并没有提供源码,录屏也不是完全连续,所以难 ...

  5. Unity学习笔记1 简易2D横版RPG游戏制作(一)

    这个教程是参考一个YouTube上面的教程做的,原作者的教程做得比较简单,我先参考着做一遍,毕竟我也只是个初学者,还没办法完全自制哈哈.不过我之前也看过一个2D平台游戏的系列教程了,以后会整合起来,做 ...

  6. 【Unity学习笔记】[Unity中文课堂教程] C#中级编程代码

    [Unity学习笔记][Unity中文课堂教程] C#中级编程代码 最近想补一补C#基础,Unity官方的C#中级编程教程质量很高,于是开个帖子把跟着敲+记录了部分价讲解和我自己的理解的代码存在这 原 ...

  7. Unity学习笔记(4)-----粒子效果的实现

    Unity学习笔记(4)-–粒子效果的实现 一.效果展示 下面用若干张张动图展示效果: 大概就是这样,并不是很难. 实际效果要比图中的好一点(顺畅得多). 实现步骤 大致可以分为如下几个步骤,然后逐个 ...

  8. Unity学习笔记:个人学习项目《疯狂天才埃德加》纠错文档

    Unity学习笔记:个人学习项目<疯狂天才埃德加>纠错文档 本文档是完成学校Unity课程作业时建立的纠错文档.用于记录自己开发过程中遇到的各种问题,以便下次遇到相同的问题时及时找到解决方 ...

  9. Rust学习日记番外篇——代码写诗

    Rust学习日记番外篇--代码写诗 中秋节即将来临啦~~提前祝大家月饼节快乐.今天看到了掘金的文章,有个代码写诗的活动,那我就小露一手了. 0x01 选定诗句 在掘金有下面几句诗可选. 举头望明月,低 ...

最新文章

  1. centos7 安装mysql 解决:Failed to restart mysqld.service: Unit not found
  2. 个人推广网站不花钱的一些方法
  3. Visual Studio 2005 Web Application Projects 正式推出
  4. mysql workbench中删除数据表记录提示出错的问题
  5. VoxelNet: 基于点云的三维空间信息逐层次学习网络
  6. 手把手带你领略双十一背后的核心组件Sentinel之流控规则
  7. Cortex_m3的启动过程
  8. c++将引用作为函数的参数---6
  9. VC++ (三)虚函数与重载
  10. java判断时间区间 隔天_Java初中级程序员面试题宝典
  11. 价格高达万元!苹果将推1TB存储版本的iPhone
  12. 使用ffmpeg来探测GB28181的ps流
  13. 人口增长模型_未来中国近一半人口将生活在20强城市,这是异想天开还是大势所趋?...
  14. 根据dpr设置html fontsize,如何为不同移动设备设置html不同的font-size?
  15. window和document对象
  16. sqlhelp(sqlite)
  17. python的if条件语句的用法及实例
  18. 科学计算机计算等比求和公式,等比数列求和公式
  19. Archlinux的灵魂──PKGBUILD、AUR 和 ABS
  20. MATLAB 解数独

热门文章

  1. 【STM32学习】时钟配置详解
  2. Springboot毕设项目Yu见奶茶屋3rwhm(java+VUE+Mybatis+Maven+Mysql)
  3. IDEA常用快捷键和debug常用调试技巧
  4. Glossary - 术语对照表 4
  5. Hibernate中的session.beginTransaction();报错解决
  6. DeepID1 DeepID2 DeepID2+ DeepID3
  7. 网页中的画布 canvas
  8. mysql 本月老客户次月留存率_SQL-用户月留存率;
  9. 关于vue启动项目报错
  10. uniapp + renderjs + heatmap.js 实现热力图