接的科大訊飛的sdk,unity一鍵打包配置xcode機制针炉,功能均在unity端實現(xiàn)
1.SDK下載d導入
導入訊飛聽寫SDK挠他,這里我需要重點說下!4叟痢V城帧!镰烧!不要直接用的工程里的SDK拢军,因為我的SDK是用我的AppId下載的,你需要用自己的appid下載對應SDK怔鳖。??后面會附上工程demo鏈接茉唉,這里我就介紹相關文件,结执,度陆,libXunFeiVA.a和XunFeiVA這個文件是自己用c和oc封裝的訊飛的相關類,不用管他献幔,放入你工程里就ok
2.封裝iOS語音接口
XunFeiVAInterface??這個是c#類坚芜,主要提供訊飛相關接口給unity和ios互相調用的,直接用就可以了斜姥,不用去修改相關代碼鸿竖,都是事件委托處理,這里需要介紹一點铸敏,平時我們經(jīng)掣坑牵看到
,ios調unity 用到的api都是UnitySendMessage(),我這用的是MonoPInvokeCallback這個類去封裝了c的靜態(tài)方法杈笔,可以oc直接調c方法闪水。實現(xiàn)ios給unity傳回調
3.編輯unity調用及回調接口
Test類就是我用來測試用的,需要調注冊訊飛的一些信息蒙具,這里你只需要替換你自己的AppId就可以球榆,語音開始聽寫接口 XunFeiVAInterface.ISR_StartRecording()? ? 語音聽寫結束接口XunFeiVAInterface.ISR_StopRecording(),還有其他的接口如音量大小朽肥,錯誤信息,各個回調等持钉,代碼都很詳細衡招。
4.踩坑總結
前面三步一已經(jīng)完美的實現(xiàn)了訊飛語音聽寫功能,這了我要記錄的時一個坑每强,找了好久才解決的始腾。因為我的項目需要播放一些本地音頻文件,所以當我調用的訊飛聽寫接口后空执,各種回調也拿到了浪箭。但我本地的音頻不能播放了,Xocde? ?Debug顯示大概是說AVAudioSession已經(jīng)被占用辨绊,意思是需要每次調用訊飛接口后需要重置奶栖,這個問題安卓端并沒有。這里自己試了很多方法门坷,最后這樣解決的驼抹,添加了AddAction.h文件內(nèi)容:
#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的分類,就是給系統(tǒng)類添加方法用的拜鹤,即類似c#的重寫框冀,大意就是給系統(tǒng)的一個類添加了跟系統(tǒng)重名的方法,分類的優(yōu)先級高于系統(tǒng)的方法敏簿,調用時app啟動就調用明也,這兩個
文件我后面都直接放在了unity 的plugins文件夾下的,也不用去管他
TIM截圖20200522114823.png?(183.12 KB, 下載次數(shù): 14)
TIM截圖20200522114807.png?(81.42 KB, 下載次數(shù): 17)
TIM截圖20200522114739.png?(60.25 KB, 下載次數(shù): 14)
TIM截圖20200522105909.png?(33.92 KB, 下載次數(shù): 15)
網(wǎng)盤鏈接:https://pan.baidu.com/s/1sugh4qEJwTaWgn4g_itEYQ