iOS

概述

通过本文,您可以使用iOS版本的云上曲率实时语音翻译SDK,来实现实时语音场景下的翻译业务。

SDK集成

服务开通

云上曲率实时语音翻译SDK的使用,需要在云上曲率官网(https://www.ilivedata.com/) 注册账号并创建实时语音翻译服务项目。完成后,获取到项目对应的参数,更新到SDK中,再进行集成使用。

版本支持

支持 iOS 12.0版本及以上。

使用要求

  • 实时音频格式支持:只支持PCM格式音频
  • 采样率:16K Hz
  • 编码:16bit位深
  • 声道:单声道

集成依赖

  • TARGETS->Build Settings->Other Linker Flags (选中 “ALL” 视图)中添加 “-ObjC",字母 “O” 和 “C” 大写,符号 “-” 请勿忽略。
  • 静态库中采用 Objective-C++ 实现,因此需要您保证您工程中至少有一个 .mm 后缀的源文件(您可以将任意一个**.m后缀的文件改名为.mm**)。
  • 添加库 libresolv.9.tbd

初始化

+ (nullable instancetype)clientWithEndpoint:(nonnull NSString * )endpoint
                                  projectId:(int64_t)projectId
                                   delegate:(id <RTVTProtocol>)delegate;
参数 类型 必需 说明
endpoint string 必需 控制台提供的SDK接入地址
projcetId int64 必需 项目id
delgate - - 代理参考以下引入内容
引入 RTVTProtocol 协议
/// 翻译最终结果
/// - Parameters:
///   - streamId: 翻译流id
///   - startTs: 识别对应语音开始时间
///   - endTs: 结束时间
///   - result: 翻译最终结果
///   - language: 目标语言
///   - recTs: 识别完成的服务器时间
-(void)translatedResultWithStreamId:(int64_t)streamId
                            startTs:(int64_t)startTs
                              endTs:(int64_t)endTs
                             result:(NSString * _Nullable)result
                           language:(NSString * _Nullable)language
                              recTs:(int64_t)recTs;

/// 识别最终结果
/// - Parameters:
///   - streamId: 翻译流id
///   - startTs: 识别对应语音开始时间
///   - endTs: 结束时间
///   - result: 识别最终结果
///   - language: 目标语言
///   - recTs: 识别完成的服务器时间
-(void)recognizedResultWithStreamId:(int64_t)streamId
                            startTs:(int64_t)startTs
                              endTs:(int64_t)endTs
                             result:(NSString * _Nullable)result
                           language:(NSString * _Nullable)language
                              recTs:(int64_t)recTs;


/// 翻译临时结果
/// - Parameters:
///   - streamId: 翻译流id
///   - startTs: 识别对应语音开始时间
///   - endTs: 结束时间
///   - result: 翻译临时结果
///   - language: 目标语言
///   - recTs: 识别完成的服务器时间
-(void)translatedTmpResultWithStreamId:(int64_t)streamId
                               startTs:(int64_t)startTs
                                 endTs:(int64_t)endTs
                                result:(NSString * _Nullable)result
                              language:(NSString * _Nullable)language
                                 recTs:(int64_t)recTs;


/// 识别临时结果
/// - Parameters:
///   - streamId: 翻译流id
///   - startTs: 识别对应语音开始时间
///   - endTs: 结束时间
///   - result: 识别临时结果
///   - language: 目标语言
///   - recTs: 识别完成的服务器时间
-(void)recognizedTmpResultWithStreamId:(int64_t)streamId
                               startTs:(int64_t)startTs
                                 endTs:(int64_t)endTs
                                result:(NSString * _Nullable)result
                              language:(NSString * _Nullable)language
                                 recTs:(int64_t)recTs;

注意: 引入的 RTVTProtocol 协议中,带有断线自动重连内容。

登录

- (void)loginWithToken:(nonnull NSString *)token
                    ts:(int64_t)ts
               success:(RTVTLoginSuccessCallBack)loginSuccess
           connectFail:(RTVTLoginFailCallBack)loginFail;
参数 类型 必需 说明
token string 必需 参考控制台基本信息中密钥内容计算生成token
ts int64 必需 生成token对应的时间

开始实时语音翻译

-(void)starStreamTranslateWithAsrResult:(BOOL)asrResult
                            transResult:(BOOL)transResult
                             tempResult:(BOOL)tempResult
                                 userId:(NSString * _Nullable)userId
                            srcLanguage:(nonnull NSString *)srcLanguage
                           destLanguage:(nonnull NSString *)destLanguage
                         srcAltLanguage:(NSArray <NSString*> * _Nullable) srcAltLanguage
                                success:(void(^)(int64_t streamId))successCallback
                                   fail:(RTVTAnswerFailCallBack)failCallback;
参数 类型 必需 说明
asrResult bool 必需 设置是否需要语音识别结果
transResult bool 必需 设置是否需要翻译结果
tempResult bool 必需 设置是否需要临时结果
userId string 可选 用户id,业务侧可自行按需传入
srcLanguage string 必需 源语言
destLanguage string 必需 目标语言,如果只需转写功能,目标语言可以可传空字符串
srcAltLanguage array 可选 源语言的备选语言范围,最多支持3个语种传入
callback - - 成功后,服务端生成streamId并回调给SDK
-(void)multi_starTranslateWithAsrResult:(BOOL)asrResult
                             tempResult:(BOOL)tempResult
                                 userId:(NSString * _Nullable)userId
                            srcLanguage:(nonnull NSString *)srcLanguage
                         srcAltLanguage:(NSArray <NSString*> * _Nullable) srcAltLanguage
                                success:(void(^)(int64_t streamId))successCallback
                                   fail:(RTVTAnswerFailCallBack)failCallback;
参数 类型 必需 说明
asrResult bool 必需 设置是否需要语音识别结果
tempResult bool 必需 设置是否需要临时结果
userId string 可选 用户id,业务侧可自行按需传入
srcLanguage string 必需 源语言
srcAltLanguage array 可选 源语言的备选语言范围,最多支持3个语种传入
callback - - 成功后,服务端生成streamId并回调给SDK

注意:
1.需要回调识别结果的场景,需要将 “asrResult” 设置为 true ,"srcLanguage" 必传,"srcAltLanguage" 可选;
2.需要翻译结果的场景,需要将 “transResult” 设置为 true,"destLanguage" 必传,且不能传空字符串;
3.如果需要使用中间识别和翻译结果,那么需要手动将 “tempResult” 设置为 true
4.如果传入语种到 “srcAltLanguage” ,那么会默认先进行语种识别流程,开始的部分音频(3s左右)会用于语种识别流程,之后的识别/翻译结果会正常返回;
5.如果传入的语种不在支持的语种范围内,会提示“语种不支持”;如果传入的语种在项目中未被启用,则会提示“项目不支持”。
6. 当出现断线重连情况时,需要重新调用此方法获取新的streamId

发送语音片段

-(void)sendVoiceWithStreamId:(int64_t)streamId
                   voiceData:(nonnull NSData*)voiceData
                         seq:(int64_t)seq
                          ts:(int64_t)ts
                     success:(RTVTAnswerSuccessCallBack)successCallback
                        fail:(RTVTAnswerFailCallBack)failCallback;
参数 类型 必需 说明
streamId int64_t 必需 语音流id
seq int64_t 必需 语音片段序号(尽量有序)
voiceData byte 必需 语音数据,默认640字节
ts int64_t 必需 音频帧对应时间戳
-(void)multi_sendVoiceWithStreamId:(int64_t)streamId
                         voiceData:(nonnull NSData*)voiceData
                     destLanguages:(NSArray<NSString*>*)destLanguages
                               seq:(int64_t)seq
                                ts:(int64_t)ts
                           success:(RTVTAnswerSuccessCallBack)successCallback
                              fail:(RTVTAnswerFailCallBack)failCallback;
参数 类型 必需 说明
streamId int64_t 必需 语音流id
seq int64_t 必需 语音片段序号(尽量有序)
destLanguage string 必需 目标语言
voiceData byte 必需 语音数据,默认640字节
ts int64_t 必需 音频帧对应时间戳

注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用starStreamTranslateWithAsrResultmulti_starTranslateWithAsrResult方法重新获取streamId

停止翻译

-(void)endTranslateWithStreamId:(int)streamId
                        lastSeq:(int)lastSeq
                        success:(RTVTAnswerSuccessCallBack)successCallback
                           fail:(RTVTAnswerFailCallBack)failCallback;
参数 类型 必需 说明
streamId int 必需 翻译的语音流id
lastSeq int 必需 最后的语音片段

结束

- (BOOL)closeConnect;

注意,使用结束时调用。下次使用需要先登录。

错误码

错误码 说明
800000 未知错误
800001 未验证的链接
800002 登录失败
800003 token已过期
800004 无效的验证时间
800005 无效token
800006 音频流不存在

SDK下载

SDK下载和更多说明请前往Github