| 日期 | 版本号 | 修改说明 | 作者 |
|---|---|---|---|
| 2017/10/11 | V1.0.0 | 文档创建 | 尹鑫 |
| 2017/12/18 | V1.0.1 | 1、新增屏蔽敏感词汇 2、新增语音时长 3、OPVoicePlayResult 接口变化 | 尹鑫 |
| 2019/3/14 | V1.0.7 | 1、讯飞SDK更新(Version 1.0.1216.1174) | 尹鑫 |
掌趣iOS语音SDK,实现语音识别功能。
基本流程:
接入前,需要由掌趣项目负责人完成渠道申报并在掌趣后台进行配置,从而获取到该游戏的渠道参数、掌趣配置文件ourpalm.cfg。
AppId是第三方应用集成讯飞开放平台SDK的身份标识,SDK静态库和appid是绑定的,每款应用必须保持唯一,否则会出现10407错误码。
Xcode->Project->Build Settings工程配置
[1] 添加库的连接参数
请在工程文件Build Settings处,找到Other Linker Flags,并添加以下内容
[2] 请将Apple LLVM 5.0 – Language – C++中C++ Standard Library项修改为以下内容
注意:
(1)Compiler Default的默认值在xcode5中为libstdc++,但在xcode6中的默认值为libc++。
(2)如果游戏需要支持C++11的新特性,C++ Standard Library需要设置为libc++,如下图,并且需要使用llvm文件中的静态库
[3] 其他编译设置
Contacts.framework
ContactsUI.framework
libc++.tbd
AddressBook.framework
AddressBookUI.framework
AVFoundation.framework
AudioToolbox.framework
CoreMotion.framework
Accelerate.framework
ImageIO.framework
WebKit.framework
CFNetwork.framework
libresolv.tbd
JavaScriptCore.framework
Security.framework
CoreTelephony.framework
libsqlite3.dylib
CoreGraphics.framework
AdSupport.framework
UIKit.framework
Foundation.framework
在Info.plist文件中添加OPVoice_XF_APPID
注意:参数AppId必须与静态库iflyMSC.framework一一对应,否则会出现10407错误码。
<key>OPVoice_XF_APPID</key><string>5a30c954</string>
<key>NSMicrophoneUsageDescription</key><string>要您的同意,才能访问麦克风</string>
功能说明
初始化语音SDK
接口定义
void Init();
接口示例
OPVoiceSDK::GetInstance().Init();
功能说明
当游戏角色登录成功后,设置游戏角色信息
接口定义
void SetGameLoginInfo(OPGameInfo opGameInfo);
OPGameInfo参数说明
| 参数名称 | 重要性 | 类型 | 说明 | |
|---|---|---|---|---|
| mGame_RoleName | 必须 | std::string | 游戏角色名称(不支持富文本) | |
| mGame_RoleId | 必须 | std::string | 游戏角色 id | |
| mGame_ServerId | 必须 | std::string | 游戏服务器id | |
| mGame_ServerName | 必须 | std::string | 游戏服务器名称 | |
| mGame_RoleLevel | 非必须 | std::string | 游戏角色等级 | |
| mGame_RoleVipLevel | 非必须 | std::string | 游戏角色vip等级 |
接口示例
OPGameInfo gameInfo;gameInfo.mGame_RoleId = "001";//游戏角色id(必填)gameInfo.mGame_RoleName = “abc”;//游戏角色名称(必填)gameInfo.mGame_ServerId = "1";//游戏服务器id(必填)gameInfo.mGame_ServerName = "test";//游戏服务器名称(必填)gameInfo.mGame_RoleLevel = "1";//游戏角色等级(可选)gameInfo.mGame_RoleVipLevel = "1";//游戏角色vip等级(可选)OPVoiceSDK::GetInstance().SetGameLoginInfo(gameInfo);
功能说明
开始录制语音并进行语音识别
接口定义
//MsgId为游戏聊天记录的唯一标示,当语音录制成功后,会返回该MsgId录制结果void StartRecord(const char* MsgId);
接口示例
OPVoiceSDK::GetInstance().StartRecord(“123456789”);
功能说明
停止录制语音以及语音识别
接口定义
void StopRecord();
接口示例
OPVoiceSDK::GetInstance().StopRecord();
功能说明
播放语音,如果本地没有语音文件会自动下载语音并进行播放
接口定义
//voiceId为SDK返回的语音唯一标识void PlayVoice(const char* voiceId);
接口示例
OPVoiceSDK::GetInstance().PlayVoice("SDK返回的语音唯一标识");
功能说明
停止播放语音
接口定义
void StopVoice();
接口示例
OPVoiceSDK::GetInstance().StopVoice();
功能说明
通过设置语音回调接口,游戏可以获取语音录制结果以及语音播放结果
接口定义
class OPVoiceListener{public://语音录制回调virtual void OPVoiceRecordResult(OPRecordState state,const char* data){};//语音播放回调virtual void OPVoicePlayResult(OPPlayState state,const char* voiceId){};};void SetVoiceListener(OPVoiceListener *listener);
接口示例
class OPSDK : public OPVoiceListener{public://语音录制回调void OPVoiceRecordResult(OPRecordState state,const char* data);//语音播放回调void OPVoicePlayResult(OPPlayState state,const char* voiceId,const char* data);}//设置语音回调OPVoiceSDK::GetInstance().SetVoiceListener(this);//语音录制回调void OPSDK::OPVoiceRecordResult(OPRecordState state,const char* data){//说明:data为json数据格式//例如://{// "localVoiceId":"游戏聊天记录的唯一标识",// "voiceId":"掌趣SDK返回的语音唯一标识,与localVoiceId一一对应",// "voiceToWord":"语音识别结果",// "isShielded":"是否有敏感词汇"// "shieldedStr":"屏蔽后的语音识别结果"// "timeLength":语音时长(毫秒)//}if (state == OPRecord_Success) {cout<<"语音录制成功并上传成功"<<endl;}else if(state == OPRecord_UploadFail){cout<<"语音录制成功但上传失败,可通过ReUploadVoice()重新上传语音"<<endl;}else{cout<<"语音录制失败"<<endl;}}//语音播放回调void OPSDK::OPVoicePlayResult(OPPlayState state,const char* voiceId,const char* data){if (state == OPPlay_Downloading) {cout<<"语音文件不存在,正在下载语音文件"<<endl;}else if(state == OPPlay_Downloaded){cout<<"语音文件下载成功"<<endl;}else if(state == OPPlay_Success){cout<<"语音播放成功"<<endl;}else{cout<<"语音播放失败"<<endl;}}
功能说明
当语音录制录制成功,但上传失败时,即 语音录制回调state = OPRecord_UploadFail,游戏可以通过调用ReUploadVoice()接口重新上传语音
接口定义
//MsgId为游戏聊天记录唯一标示void ReUploadVoice(const char* MsgId);
接口示例
OPVoiceSDK::GetInstance().ReUploadVoice();