logo
产品简介 产品简介
基本概念 基本概念
平台新手指引 平台新手指引
计价模式 计价模式
开发者文档下拉
开放平台计价
定制服务计价
获取访问令牌 获取访问令牌
语音合成 语音合成
开发者文档下拉
接口说明
发音人列表
短文本合成 开发者文档下拉
Android SDK
iOS SDK
C++(Linux) SDK
RESTful API
Websocket API
长文本合成 开发者文档下拉
长文本合成API
离线合成 开发者文档下拉
模型文件说明
离线合成(普通版) Android SDK
离线合成(普通版) iOS SDK
离线合成(精品版) Android SDK
离线合成(精品版) iOS SDK
XML标签
SSML标签
语音合成时间戳功能
语音识别 语音识别
开发者文档下拉
音频格式说明
一句话识别 开发者文档下拉
RESTful API
Websocket API
Android SDK
iOS SDK
实时长语音识别 开发者文档下拉
Websocket API
Android SDK
iOS SDK
录音文件识别 开发者文档下拉
RESTful API
自学习工具 开发者文档下拉
热词
个性化模型
声音复刻 声音复刻
开发者文档下拉
定制模型 开发者文档下拉
RESTful API
Android SDK
iOS SDK
定制声音合成 开发者文档下拉
RESTful API
声音转换 声音转换
开发者文档下拉
发音人列表
Websocket API
Android SDK
iOS SDK
离线声音转换 离线声音转换
开发者文档下拉
发音人列表
Android SDK
iOS SDK
声纹识别 声纹识别
开发者文档下拉
RESTful API
语音评测 语音评测
开发者文档下拉
RESTful API
声音理解 声音理解
开发者文档下拉
RESTful API
协议规则 协议规则
开发者文档下拉
平台服务协议
平台通用规则
法律声明及隐私政策
服务等级协议SLA
常见问题 常见问题
开发者文档下拉
语音合成
语音识别

声音转换iOS SDK

1.下载安装

项目地址: https://github.com/data-baker/BakerIosSdks

2. 兼容性说明

  • 1. 兼容性


    系统:iOS 9.0以上版本
    CPU架构:arm64 arm64e armv7 armv7s
    添加隐私麦克风权限:

    Privacy - Microphone Usage Description:使用麦克风检测声音
  • 2. SDK关键类


    DBOfflineConvertVoiceClient:声⾳转换关键业务处理类,全局只需⼀个实例 即可。

    DBOfflineVoiceConvertDelegate:声⾳转换业务回调类。您可以在这些个回调 ⽅法中获取到当前转换的进度状态、转换后声⾳的播放状态和各类数据结果, 或者错误信息。注意回调⽅法都是运⾏在⼦线程的。

调用说明

  • 1. 实例化调用对象
    • 实例化VoiceConvertOffLineManager类,得到VoiceConvertOffLineManager的实例。
    • DBOfflineConvertVoiceClient *convertClient = [DBOfflineConvertVoiceClient 
      shareInstance];
  • 2. 初始化SDK
    [convertClient setupVoiceConvertSDKClientId:clientId 
    clientSecret:clientSecret messageHander:^(NSInteger ret, 
    NSString * _Nonnull message) { 
     if (ret == 0) { 
     NSLog(@"鉴权成功"); 
     }else { 
     NSLog(@"鉴权失败-code:%@-msg:
    %@",@(ret),message); } 
     }];
              
    • 初始化这⼀步会进⾏⽹络请求,做授权操作。所以在实际调⽤过程中,请将此步骤尽可能提前调⽤,保障⾜够时间进⾏⽹络授权请求。离线设备授权仅第⼀次需要联⽹激活,此后⽆需联⽹授权激活。
  • 3. 离线声⾳转换⽀持3种转换场景
    • 第⼀种是SDK内调⽤⼿机⻨克⻛录⾳、转换返回转换结果。
    • 第⼆种场景是接收pcm⽂件路径,sdk读取⽂件进⾏转换,返回转换结果。
    • 第三种场景是接收pcm字节流,SDK收到数据完成转换,返回转换结果。
    • 三种⽅式会实时返回转换结果,同时会将转换结果在沙盒中缓存成⼀个pcm⽂件,仅存在⼀个⽂件,后⼀次转换会覆盖前⼀次转换后结果的⽂件。若使⽤第⼀种⽅式也需要接⼊⽅提前获取应⽤的录⾳权限,同时录⾳原⽂件也会缓存⼀份,再次录⾳转换会覆盖前⼀次录⾳备份⽂件。
    第⼀种场景(SDK内调⽤⼿机⻨克⻛录⾳转换)

    需要应⽤取得录⾳权限。

    • A.调⽤ -(void)startAndRecord;⽅法开启sdk录⾳说话。录⾳开启成功后会回调onReadyForConvert⽅法。录⾳转换过程中,回调⽅法-(void)onResultData:(NSData *)data endflag:(BOOL)endFlag;会实时返回转换 结果。data是转换后数据,endFlag=1代表转换结束。
    • B.调⽤- (void)stopRecord;⽅法结束录⾳。转换完成时回调⽅法 - (void)onConvertComplete;会执⾏。
    • C.调⽤-(void)play;对转换后声⾳进⾏播放。播放过程中的播放状态回调⽅法详⻅表(4.2)。若需要边转换边播放,可以考虑在-(void)onResultData:(NSData *)dataendflag:(BOOL)endFlag;回调⽅法⾥⾯接收到转换后数据后⾃⾏实现播放逻辑,不使⽤sdk⾃带播放器进⾏播放。若要再次执⾏录⾳、转换、播放,请重复A、B、C步骤即可。
    第⼆种场景(接收声⾳⽂件路径转换)
    • A.调⽤- (void)startFileConvertPCMPath:(NSString *)path开启转换。SDK准备 好后会回调- (void)onReadyForConvert;⽅法。
    • B.在- (void)onReadyForConvert;回调⽅法。转换过程中,回调⽅法-(void)onResultData:(NSData *)data endflag:(BOOL)endFlag;会实时返回转换结果。audioData是转换后数据,endFlag==1代表转换结束。转换完成时回调⽅法 - (void)onConvertComplete;会执⾏。
    • C.然后可以调⽤-(void)play;对转换后声⾳进⾏播放。播放过程中的播放状态回调⽅法详⻅表xxx。也可根据⾃身需求,在- (void)onResultData:(NSData*)data endflag:(BOOL)endFlag;回调⽅法⾥⾯接收到转换后数据后⾃⾏实现播放逻辑,不使⽤sdk⾃带播放器进⾏播放。
    • 若要再次执⾏转换、播放,请重复A、B、C步骤即可。
    第三种场景(接收声⾳字节流转换)
    • A.调⽤- (void)startConvertByPCM;开启转换。Sdk准备好后会回调 -(void)onReadyForConvert;⽅法。
    • B.在 -(void)onReadyForConvert;回调⽅法执⾏后,可多次调⽤-(void)sendData:(NSData *)dataindex:(NSInteger)index;⽅法对⾳频流进⾏转换,index是发包序号,从0开始计数⾃增,最后⼀包index需(乘以-1)变负数。转换过程中,回调⽅法- (void)onResultData:(NSData *)dataendflag:(BOOL)endFlag; 会实时返回转换结果。data是转换后数据,endFlag==1代表转换结束。转换完成时回调⽅法 -(void)onConvertComplete; 会执⾏。
    • C.调⽤-(void)play;对转换后声⾳进⾏播放。播放过程中的播放状态回调⽅法详⻅表4.2。也可根据⾃身需求,在- (void)onResultData:(NSData *)dataendflag:(BOOL)endFlag;回调⽅法⾥⾯接收到转换后数据后⾃⾏实现播放逻辑,不使⽤sdk⾃带播放器进⾏播放。
    • 若要再次执⾏转换、播放,请重复A、B、C步骤即可。

方法说明

  • DBOfflineConvertVoiceClient基本调⽤⽅法说明
    方法名 方法作用 说明
    - (void)setupVoiceConvertSDK ClientId:(NSString *)clientId clientSecret:(NSString *)clientSecret messageHander: (DBMessagHandler)message Handler; 初始化SDK 必须调⽤此⽅法初始化SDK,详⻅ 3.2。clientId、secret等信息请从 标⻉配置平台获取。callBack 是 DBMessagHandler。
    - (void)startAndRecord; 开启录⾳转换 使⽤sdk内部唤起的录⾳,进⾏声⾳转换。开启成功后, - (void)onReadyForConvert;回调⽅法会执⾏。转换结果通过- (void)onResultData:(NSData *)data endflag:(BOOL)endFlag;回 调实时返回,转换完成后会执⾏- (void)onConvertComplete;回调⽅ 法。
    - (void)stopRecord; 结束录⾳ 配合- (void)startAndRecord;⽅法使⽤,结束sdk录⾳转换。
    - (void)play; 播放 调⽤sdk内播放器,播放转换后声⾳。三种转换⽅式转换后,均可调 ⽤sdk内部播放器进⾏播放控制。
    - (void)pause; 播放 暂停sdk内播放器播放,调⽤ play() ⽅法可恢复播放
    - (void)stopPlay; 停止播放 停⽌sdk内播放器,并清除掉播放器内数据。
    - (void)startFileConvertPCMPat h:(NSString *)path; 开启数据转换 ⽂件或者⾳频数据流转换启动⽅法, 需要传⼊PCM格式的数据,采样率 16K,单声道,16位深
    - (void)startConvertByPCM; 开启数据转换 客户只有的PCM数据进⾏转换;
    - (void)sendData:(NSData *)data index:(NSInteger)index; ⾳频字节流数据转换⽅法 需要先调⽤- (void)startConvertByPCM;,然后 在收到-(void)onReadyForConver回调后,多次调⽤-(void)sendData:(NSData *)dataindex:(NSInteger)index;⽅法进⾏⾳频流转换。index是发包序号, 从0开始计数⾃增,最后⼀包index需(乘以-1)变负数。转换结果通过(void)onResultData:(NSData*)data endflag:(BOOL)endFlag;回调实时返回,转换完成后会执⾏-(void)onConvertComplete;回调⽅ 法。
    - (void)setupVoiceName: (NSString *)voiceName 设置⽬标声⾳模型名称 每次转换前可设置⾳⾊名称,默认⾳⾊是萝莉⾳"Vc_luoli",⾳⾊列 表⻅4.3,
    - (NSString *)getOriginRecordFile; 获取原始录⾳⽂件 如果是通过sdk录⾳转换,可以通过这个⽅法拿到原始录⾳⽂件路径。每次录⾳都会覆盖前⼀次录⾳的原始⽂件,录⾳⽂件路径和⽂件名固定不变。若未录⾳调⽤此⽅ 法,也会返回路径,但是⽂件可能不存在。所以使⽤此路径时,建议 检测⽂件是否存在。
    - (NSString *)getConvertResultFile; 获取转换后录⾳⽂件 ⽆论哪种转换⽅式,每次转换后, sdk都会将转换后的⾳频存储在⼀个⽂件中,可以通过此⽅法拿到转换后声⾳⽂件。每次转换都会覆盖前⼀次转换的结果⽂件。此⽂件路 径和⽂件名固定不变。

  • DBOfflineVoiceConvertDelegate回调类⽅法说明
    方法 作用 说明
    - (void)onReadyForCo nvert; 准备就绪 鉴权通过,准备就绪后回调,三种转换⽅式均会回调。
    - (void)onResultData: (NSData *)data endflag: (BOOL)endFlag; 转换数据实时回调⽅法 若想⾃⾏处理转换后数据,可使⽤此回调⽅法中的数据。endFlag == 1 代表转换结束。
    - (void)onConvertCom plete; 转换完成回调 每次转换完成,均会有此回调。
    - (void)dbValues: (NSInteger)db; 录⾳⾳量分⻉值回调 如果通过sdk⾃带录⾳功能进⾏转换,这个回调会返回录⾳过程中声⾳的分⻉ 值。
    - (void)onPlaying; 播放中回调 调⽤sdk内部播放器进⾏播放时,正在播放中状态回调。
    - (void)onPaused; 播放暂停回调 调⽤sdk内部播放器进⾏播放时,暂停播放状态回调。
    - (void)onPlayComplet ed; 播放完成回调 调⽤sdk内部播放器进⾏播放时,播放完成回调。
    - (void)onStopped; 停⽌播放回调 调⽤sdk内部播放器进⾏播放时,停⽌播放回调。
    - (void)onError: (NSString *)errorCode msg: (NSString *)message; 转换出现错误回调 NSString code是错误码,错误码具体请 参考以下错误码对照表。NSString message是具体的错误信息⽇志。

  • 离线声音转换音色列表
    名字 voice name参数 (⾸字⺟⼤写) ⽀持采样率(Hz)
    萝莉⾳ Vc_luoli 16K
    ⼤叔 Vc_dashu 16K
    搞怪 Vc_gaoguai 16K
    空灵 Vc_kongling 16K
    霸王⻰ Vc_bawanglong 16K
    重⾦属 Vc_zhongjinshu 16K
    机械音 Vc_jixieyin 16K

  • 发⽣异常时返回的code对应表
    错误码 含义 类别
    22190010 请求授权参数报错 SDK内部错误码
    22190011 获取token报错
    22190012 授权⽆效
    22190013 设备信息鉴权失败
    22180006 使⽤sdk⾃带Player相关错误