Unity3D 语音接入适用于pc、ios、android

语音接入

考虑到pc与ios、android三端的混服情况,所有录音的格式均存储为mp3格式,也是unity推荐的音频文件方式

前提:目前比较成熟的语音模块由科大讯飞平台提供的,目前我们需要的功能是把语音转化成文字,因此我们只需要下载相应的语音识别模块就可以了。

1)进入科大讯飞官网下载相应平台的sdk,目前我们只需要免费的语音识别就可以了,要创建相应的应用才能下载,里面的demo提供边录音边翻译的功能。

2)pc端的没有提供边录边能,要想在pc版进行录音可引入第三方库进行录音或者使用unity提供的microphone进行录音也可以的

1 pc端录音以及识别

1.1 录音:

方法一:unity本身有microphone录制功能,存储在AudioClip,这是原生态数据比较大,我们需要保存成相应的wav文件,再转成mp3发给服务器.

要根据服务器的协议发送大小,随时更改录制的参数, 主要录制功能代码 Microphone.Start(),一般移动端都适合录制10s,sample_rate(采样率) = 8000

的设置即可. mp3录制的参数的bitRate尽量设置为 16位(影响mp3文件大小的主要参数),不懂这些参数可参考以下链接,代码里面会有设置。

AudioClip存为wav参考链接:

http://www.lxway.com/812992244.htm

wav转成mp3参考链接:

https://github.com/Corey-M/NAudio.Lame

http://www.codeproject.com/Articles/5901/C-MP3-Compressor

http://stackoverflow.com/questions/19058530/change-format-from-wav-to-mp3-in-memory-stream-in-naudio

方法二:利用NAudio 录制,是利用.net里面的录音功能,同时压缩mp3也需要利用这里的库文件进行解析wav格式等等。

1.2 注意的问题:

1.2.1 NAudio 主要录制的功能waveIn,录制的时候往往需要获取声音的大小,以便录音者调整音量大小. waveIn有个事件回调,根据刷新频率传回相应的文件数据,此时只需要只能通过相应的数据来获取音量大小,可在一下源码进行获取观看。

http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=10182

1.2.1 NAudio waveOut是可用来播放mp3,但是没有源码播放、暂停、停止均不会设置回来状态。

2、 android录音以及存储、语音识别

2.1 目前没有和pc,ios混服 因此采用科大讯飞进行边录边翻译功能,暂时采用的存储方式是.amr,如果需要混服我们需要把它压缩成mp3格式,科大讯飞支持录制两种方式wav

和pcm,我们只需要在unity利用和pc端一样的压缩原理把它压缩成mp3即可.

步骤: 需要到科大讯飞开发者网站 创建应用下载相应的sdk,源码主要是在IatDemo里面

原理: 讯飞支持把语音数据分段发送进行识别,主要是边录边把数据进行发送识别,录音是采用android本身的录音。主要类是IatDemo

问题:讯飞提供的SpeechRecognizer主要是普遍反映录的声音较小,改变手机的音量会导致游戏的声音同时改变,解决办法:在录音提高系统音量,录完再回复原来音量

2.2  pcm或者wav转成mp3

同样是使用lame mp3库,主要采用 java与 C之间的交互生成相应的so文件(主要是调用lame mp3库方法),录音成pcm采用该so文件进行压缩即可,这个方法把安全容易造成某些机型闪退,不建议采用,尽量采用和pc端一样的压缩方式.

3 ios的原理和android差不多,只不过他有.a库,我们尽量不在XCode工程里面做压缩,ios、pc、android尽量采用统一方式在Unity层进行压缩即可。

时间: 2024-10-26 10:53:23

Unity3D 语音接入适用于pc、ios、android的相关文章

js判断是否是PC,IOS,Android客户端

写在前面 在项目中使用html5,需要针对不同的客户端浏览器有不一样的处理方式,这就需要对请求中的useragent进行分析,并进行处理. 一个例子 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Wolfy.RedirectDemo.Default" %> <!DOCTYPE html&

Unity3D如何接入第三方的SDK - iOS篇

来源:http://blog.csdn.net/smlisi2/article/details/8786485 授人以鱼,不如授人以渔”,以UNITY3D调用iOS版的91SDK为例,利用C# / C / OBJ-C 交互原理,本文将详细介绍UNITY3D与iOS之间交互的解决方案. 首先,打开XCODE新建一个空项目,参照91SDK开发文档将91SDK引入并进行环境配置. 配置完毕后创建一个名为“LsSdkConector”的OBJ-C CLASS文件.完毕后,当前项目应如图: LsSdkCo

HTML5网页录音和上传到服务器,支持PC、Android,支持IOS微信

准备做一个网页版聊天界面,表情啊.图片啊.上传文件啊都应该要有,视频就算了,语音还是要的. 本文记录的是在网页上用GitHub上的Recorder进行在线录音和上传到服务器. 录音代码 本示例代码支持PC.Android.IOS(仅Safari)中使用,如果用RecordApp可增加对IOS(微信浏览器.小程序)的支持. 看万遍代码不如行动一遍,新建一个html文件,把下面三段代码复制到文件内,双击浏览器打开就能进行测试. <!-- 先加载js录音库,注意:你应该把js clone到本地使用 -

使用多字节字符集的跨平台(PC、Android、IOS、WP)编码/解码方法

随着移动端的发展,跨平台已成为通讯架构设计的重要考虑因素,PC.Android.IOS.WP等跨多平台间的数据通讯,必然要解决字符编码/解码的问题. 多字节字符集MBCS不是跨平台的首选字符集,面向跨平台.国际化的推荐字符集肯定是UNICODE. 写VC的人都知道,在以前VC++6.0中默认的字符集是多字节字符集,而VS2005及以后默认的字符集是Unicode,VS2013中默认不再对多字节字符串进行支持. 但对很多较早的服务端项目,依然使用的是多字节字符集,不过使用多字节字符集依然可以实现跨

【Android语音合成TTS】百度语音接入方法,和使用技巧详解

请尊重他人的劳动成果,转载请注明出处:[Android语音合成TTS]百度语音接入方法,和使用技巧详解 Ps. 依托于百度开放云,百度语音为合作伙伴提供了业界领先.永久免费的语音技术服务,目前已上线的服务包括语音识别.语义解析.语音合成,后续会继续带来开放资源.多轮对话等技术服务:通过SDK.REST API及离线开发包等多种服务方式,满足不同开发者的开发需求. 目前百度语音提供免费的语音接入,语音合成质量尚可,但还没开放离线TTS. 服务接入流程 具体详情可查看:http://yuyin.ba

【iOS开发】封装聊天输入框MKInputBar,语音支持iOS &amp; Android平台

最近做的一个项目,有聊天的功能,最开始从网上找了个被人封装好的输入框,写的很复杂(反正我有点被看迷糊了),用起来呢又有点问题,最终放弃,自己封装了一个聊天输入框MKInputBar,难度不大.语音支持iOS和Android平台,其实就是把caf转换为mp3.底部给出了Demo工程,用起来很简单. 先上几张图吧       用法很简答,封装好只有两个文件MKInputBar.h & MKInputBar.m,实现三个代理方法: 1 - (void)inputBar:(MKInputBar *)in

移动端热更新方案(iOS+Android)

PPT资源包含iOS+Android 各种方案分析:https://github.com/qiyer/Share/blob/master/%E7%83%AD%E6%9B%B4%E6%96%B0%E5%88%86%E4%BA%ABPPT.pptx 一 .热更新(热修复)产品背景 这里谈到的热更新都是指APP(不包含网页).APP按大类别可以粗略分为 应用 和 游戏.APP的开发周期是极其快速的,在实际开发流程中,我们总会有一些需求迫使我们短时间内快速上线,比如需求流程出错,程序员主观导致的一些bu

Unity3D Optimizing Graphics Performance for iOS

原地址:http://blog.sina.com.cn/s/blog_72b936d801013ptr.html icense Comparisons http://unity3d.com/unity/licenses#iphone Optimizing Graphics Performance http://unity3d.com/support/documentation/Manual/Optimizing Graphics Performance.html iOS A useful bac

iOS/Android 浏览器(h5)及微信中唤起本地APP

在移动互联网,链接是比较重要的传播媒质,但很多时候我们又希望用户能够回到APP中,这就要求APP可以通过浏览器或在微信中被方便地唤起. 这是一个既直观又很好的用户体验,但在实现过程中会遇到各种问题: 如何解决未安装APP时的做好引导页 如何在微信中唤醒APP 在iOS9中如何处理universal link被用户误关的情况 如何解决Android各种机型.各种第三方浏览器导致的兼容问题等 在APP未安装情况下,引导用户下载后打开APP后,如何进入之前唤起时指定的页面或内容,即如何实现场景还原 在