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
必需
音频帧对应时间戳
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用starStreamTranslateWithAsrResult或multi_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。
概述
通过本文,您可以使用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 | 必需 | 音频帧对应时间戳 |
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用starStreamTranslateWithAsrResult或multi_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。