声音转换iOS SDK
SDK 下载地址
⾳频要求
- · ⽀持⾳频⽂件的编码格式及⽂件名的后缀: pcm。
- · ⽀持⾳频⽂件的采样率/位深: 16000Hz/16bit。
- · ⽀持的语⾔:中⽂普通话。
- · 声道:单声道。
集成SDK
- 1. 兼容性说明
系统:iOS 9.0以上版本
CPU架构:arm64 arm64e armv7 armv7s
添加隐私麦克风权限:Privacy - Microphone Usage Description:使用麦克风检测声音
- 2. 通过Pod方式集成
Pod DBAudioSDK/DBVoiceTransferKit , ‘xxx’ ; ‘xxx’ 指的是SDK的版本号;
手动导入资源文件,资源目录如下图,具体可参照demo
- 3. 引用SDK的头文件
声音转换类的头文件#import “DBVoiceTransferUtil.h”
SDK 调用说明
- 1. 声音转换调用
- 1. 鉴权: 实例化DBVoiceDetectionUtil对象,调用“setupClientId:clientSecret:block:” 的方法进行鉴权,鉴权成功后可以使用服务;
- 2. 配置声音转换的相关参数,具体可参照“参数说明”;
- 3. 开启声音转换:调用开启声音转换后,a.SDK会使用麦克风权限,录制声音进行声音转换,声音转换结果通过DBTransferProtocol进行回调;b.指定是否需要播放;
- 4. 结束声音转换:调用结束声音转换,会关闭麦克风和服务端的连接;
- 2. 声音文件转换调用
- 1. 鉴权: 同声音转换调用;
- 2. 配置声音转换的相关参数;
- 3. 开启文件转换:调用开启声音文件转换方法,需要传入声音文件的路径,并指定是否需要播放;
- 4. 结束文件声音转换: 调用结束声音文件转换并关闭服务端的连接;
调用代码示例
- 1. 鉴权示例
[[DBVoiceTransferUtil shareInstance] setupClientId:clientId clientSecret:clientSecret block:^(NSString * _Nullable token, NSError * _Nullable error) { if (error) { [[XCHudHelper sharedInstance] hideHud]; NSLog(@"获取token失败:%@",error); NSString *msg = [NSString stringWithFormat:@"获取token失败:%@",error.description]; return; } }];
- 2. 转换参数设置示例
_voiceTransferUtil = [DBVoiceTransferUtil shareInstance]; _voiceTransferUtil.log = YES; _voiceTransferUtil.voiceName = @"XXX"; _voiceTransferUtil.delegate = self;
- 3. 实时语音转换调用示例
// 开始 [self.voiceTransferUtil startTransferNeedPlay:YES]; // 结束 [self.voiceTransferUtil endTransferAndCloseSocket];
- 4. 文件转换调用示例
// 开启声音转换 [self.voiceTransferUtil startTransferWithFilePath:@"path" needPaley:YES]; // 结束声音转换 [self.voiceTransferUtil endFileTransferAndCloseSocket];
- 5. 回调函数处理示例
// 错误信息回调 - (void)onError:(NSInteger)code message:(NSString *)message{xxx} // 开启声音转换 - (void)readyToTransfer{xxx} // 麦克风录音数据回调 - (void)microphoneAudioData:(NSData *)data isLast:(BOOL)isLast {xxx} // 声音分贝值返回,回调 - (void)dbValues:(NSInteger)db{xxx} // 转换数据回调 - (void)transferCallBack:(NSData *)data isLast:(BOOL)isLast {xxx} /// 开启播放回调 - (void)readlyToPlay {xxx} /// 结束播放回调 - (void)playFinished {xxx}
参数说明
- SDK关键类
类接口名称 说明 DBVoiceDetectionUtil 声音转换的核心类: 包含鉴权,声音转换,文件声音转换 DBTransferModel 数据model类,封装服务端返回的数据 DBTransferEnum 错误枚举类,封装sdk客户端的错误 DBTransferProtocol 声音转换回调协议,包含声音转换相关回调方法 - 声音转换配置参数说明
参数名 参数类型 是否必填 说明 log BOOL 否 1.打印日志 0:不打印日志(打印日志会在沙盒中保存一份text,方便我们查看,上线前要置为NO); enableVad BOOL 否 true代表启动服务端vad功能,默认false。如果启动系统会根据输入音频进行检测,过滤环境噪音。否则直接将原始输入音频进行转换。 voiceName NSString 否 发音人参数即转换的目标声音 - 转换结果参数说明
参数名 参数类型 是否必填 说明 errcode int 否 错误码,0 代表成功其他代表识别,参考错误码说明。 errmsg string 是 错误信息描述 traceid string 是 会话唯一id,用于追踪定位问题 lastpkg bool 是 是否为最后一包,当时发送最后一包数据时设置为true 告诉调用方输出完成 - 调用方法说明
方法名 说明 - (void)setupClientId:(NSString *)clientId clientSecret:(NSString *)clientSecret block:(DBAuthenticationBlock)block; 鉴权,鉴权成功会返回token,失败会返回错误信息 - (void)startTransferNeedPlay:(BOOL)needPlay 开始转换,是否需要播放@param needPlay yes: 需要播放; no:不需要播放 - (void)endTransferAndCloseSocket; 结束转换并且并且关闭服务端连接 - (void)startTransferWithFilePath:(NSString *)filePath needPaley:(BOOL)needPlay; 本地文件转换,读取本地文件
@param needPlay yes: 需要播放; no:不需要播放- (void)endFileTransferAndCloseSocket; 结束文件变声转换并且关闭服务端连接 - (NSString *)getSavePath:(NSString *)fileName; 默认保存在Temp文件夹下
@param fileName 文件名称- (void)startServeConnetNeedPlay:(BOOL)needPlay; 先开启网络连接,接收到网络连接成功回调后再通过`webSocketPostData:isEnd`发送音频数据 - (void)webSocketPostData:(NSData *)audioData isEnd:(BOOL)isEnd; 向服务端发送数据
@param audioData 音频数据
@param isEnd 最后一包数据时isEnd设置为Yes,否则设置为NO- (void)stopPlay; 停止播放
回调方法DBTransferProtocol说明
方法名称 参数说明 - (void)readyToTransfer; 开启声音转换 - (void)microphoneAudioData:(NSData *)data isLast:(BOOL)isLast; 回调麦克风录制的数据 ,isLast: yes,最后一包,NO,非最后一包 - (void)transferCallBack:(NSData *)data isLast:(BOOL)isLast; 声音转换结果回调,isLast: yes,最后一包,NO,非最后一包 - (void)onError:(NSInteger)code message:(NSString *)message; 错误回调 code:错误码 message:错误信息 - (void)readlyToPlay; 准备好了,开始播放了的回调 - (void)playFinished; 播放完成回调 - (void)dbValues:(NSInteger)db; 获取麦克风的音频分贝值回调
错误码
- 客户端错误码
错误码 枚举状态 含义 19110001 DBErrorStateFileReadFailed 文件读取失败 19110002 DBErrorStateParsing 网络数据解析失败 19110003 DBErrorStateMicrophoneNoGranted 没有麦克风权限 - 服务端错误码
错误码 含义 类别 0 成功 请求参数错误 10000 ws数据包解析错误 10001 ws数据包json解析错误 10002 请求参数缺少access token 10003 access token过期或不合法 10004 请求参数缺少 voice name 10005 voice name 不存在 20000 引擎资源不足,拒绝新建会话。 服务端错误 20001 声音转换出错 20002 动态内存申请失败 20003 向客户端推送响应失败 20004 其他未定义的内部错误 30000 会话进行时客户端主动关闭 客户端错误 30001 会话空闲超时,超过一定时间没有数据传输导致会话空闲超时,主动断开连接。