unity 接入iOS 端语音听写-简书

接的科大讯飞的sdk,unity一键打包配置xcode机制,功能均在unity端实现


1.SDK下载d导入

导入讯飞听写SDK,这里我需要重点说下!!!!!不要直接用的工程里的SDK,因为我的SDK是用我的AppId下载的,你需要用自己的appid下载对应SDK。  后面会附上工程demo链接,这里我就介绍相关文件,,,libXunFeiVA.a和XunFeiVA这个文件是自己用c和oc封装的讯飞的相关类,不用管他,放入你工程里就ok

2.封装iOS语音接口

XunFeiVAInterface  这个是c#类,主要提供讯飞相关接口给unity和ios互相调用的,直接用就可以了,不用去修改相关代码,都是事件委托处理,这里需要介绍一点,平时我们经常看到

,ios调unity 用到的api都是UnitySendMessage(),我这用的是MonoPInvokeCallback这个类去封装了c的静态方法,可以oc直接调c方法。实现ios给unity传回调

3.编辑unity调用及回调接口

Test类就是我用来测试用的,需要调注册讯飞的一些信息,这里你只需要替换你自己的AppId就可以,语音开始听写接口 XunFeiVAInterface.ISR_StartRecording()    语音听写结束接口XunFeiVAInterface.ISR_StopRecording(),还有其他的接口如音量大小,错误信息,各个回调等,代码都很详细。

4.踩坑总结

前面三步一已经完美的实现了讯飞语音听写功能,这了我要记录的时一个坑,找了好久才解决的。因为我的项目需要播放一些本地音频文件,所以当我调用的讯飞听写接口后,各种回调也拿到了。但我本地的音频不能播放了,Xocde   Debug显示大概是说AVAudioSession已经被占用,意思是需要每次调用讯飞接口后需要重置,这个问题安卓端并没有。这里自己试了很多方法,最后这样解决的,添加了AddAction.h文件内容:

#import

@interface AVAudioSession(AddAction)

@end

添加AddAction.m文件:

#import "AddAction.h"

@implementation AVAudioSession (AddAction)

- (BOOL)setActive:(BOOL)active withOptions:(AVAudioSessionSetActiveOptions)options error:(NSError * _Nullable __autoreleasing *)outError {

return YES;//强行返回true

}

@end

这里用了oc的分类,就是给系统类添加方法用的,即类似c#的重写,大意就是给系统的一个类添加了跟系统重名的方法,分类的优先级高于系统的方法,调用时app启动就调用,这两个

文件我后面都直接放在了unity 的plugins文件夹下的,也不用去管他

TIM截图20200522114823.png (183.12 KB, 下载次数: 14)

TIM截图20200522114807.png (81.42 KB, 下载次数: 17)

TIM截图20200522114739.png (60.25 KB, 下载次数: 14)

TIM截图20200522105909.png (33.92 KB, 下载次数: 15)

网盘链接:https://pan.baidu.com/s/1sugh4qEJwTaWgn4g_itEYQ

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容