Android
更新时间:
概述
通过本文,您可以使用Android版本的云上曲率实时语音翻译SDK,来实现实时语音场景下的翻译业务。
SDK集成
服务开通
云上曲率实时语音翻译SDK的使用,需要在云上曲率官网(https://www.ilivedata.com/) 注册账号并创建实时语音翻译服务项目。完成后,获取到项目对应的参数,更新到SDK中,再进行集成使用。
版本支持
支持 Android 5.0 (api21)版本及以上。
使用要求
- 实时音频格式支持:只支持PCM格式音频
- 采样率:16KHz
- 编码:16bit位深
- 声道:单声道
初始化
public static RTVTClient CreateClient(String endpoint, long pid, String uid, RTVTPushProcessor pushProcessor, Context applicationContext)
参数
类型
必需
说明
endpoint
string
必需
控制台提供的SDK接入地址
pid
long
必需
项目id
pushProcessor
必需
重载的回调类,具体参考代码说明
Context
-
必需
应用的applicationContext
注意: pushProcessor 中,带有断线自动重连内容。
登录
public void login( String token, long ts, UserInterface.IRTVTEmptyCallback callback)
参数
类型
必需
说明
token
string
必需
参考控制台基本信息中密钥内容生成token
ts
long
必需
生成token的时间戳
开始实时语音翻译
public void startTranslate(String srcLanguage, String destLanguage, String[] srcAltLanguage, boolean asrResult, boolean tempResult, boolean transResult, String userId, final RTVTUserInterface.IRTVTCallback<VoiceStream> callback)
参数
类型
必需
说明
srcLanguage
string
必需
源语言
destLanguage
string
必需
目标语言,如果只需转写功能,目标语言可以可传空字符串
srcAltLanguage
List<String>
可选
源语言的备选语言范围,最多支持3个语种传入
asrResult
boolean
必需
设置是否需要语音识别的最终结果 识别结果通过recognizedResult回调
transResult
boolean
必需
设置是否需要翻译的结果,翻译结果通过translatedResult 回调
tempResult
boolean
必需
设置是否需要临时结果
userId
string
可选
用户id,业务侧可自行按需传入
ttsResult
bool
可选
语音输出,true为输出语音,false为不输出语音。
callback
-
-
成功后,服务端生成streamId并回调给SDK
开始多语种实时语音翻译
public void multi_startTranslate(String srcLanguage, String[] srcAltLanguage, boolean asrResult, boolean tempResult, boolean transResult, String userId, final RTVTUserInterface.IRTVTCallback<VoiceStream> callback)
参数
类型
必需
说明
srcLanguage
string
必需
源语言
srcAltLanguage
List<String>
可选
源语言的备选语言范围,最多支持3个语种传入
asrResult
boolean
必需
设置是否需要语音识别的最终结果 识别结果通过recognizedResult回调
tempResult
boolean
必需
设置是否需要临时结果
userId
string
可选
用户id,业务侧可自行按需传入
callback
-
-
成功后,服务端生成streamId并回调给SDK
注意:
1.需要回调识别结果的场景,需要将 “asrResult” 设置为 true ,"srcLanguage" 必传,"srcAltLanguage" 可选;
2.需要翻译结果的场景,需要将 “transResult” 设置为 true,"destLanguage" 必传,且不能传空字符串;
3.如果需要使用中间识别和翻译结果,那么需要手动将 “tempResult” 设置为 true;
4.如果传入语种到 “srcAltLanguage” ,那么会默认先进行语种识别流程,开始的部分音频(3s左右)会用于语种识别流程,之后的识别/翻译结果会正常返回;
5.如果传入的语种不在支持的语种范围内,会提示“语种不支持”;如果传入的语种在项目中未被启用,则会提示“项目不支持”。
6. 当出现断线重连情况时,需要重新调用此方法获取新的streamId。
发送语音片段
public void sendVoice(long streamId, long seq, byte[] voicedata, long voiceDataTs, UserInterface.IRTVTEmptyCallback callback)
参数
类型
必需
说明
streamId
long
必需
语音流id
seq
long
必需
语音片段序号(尽量有序)
voicedata
byte[]
必需
语音数据,默认640字节
voiceDataTs
long
必需
音频帧对应时间戳
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用sendVoice方法重新获取streamId。
发送语音片段(多语种翻译)
public void sendVoice(long streamId, long seq, byte[] voicedata, long voiceDataTs, List<String> dstLanguageList, UserInterface.IRTVTEmptyCallback callback)
参数
类型
必需
说明
streamId
long
必需
语音流id
seq
long
必需
语音片段序号(尽量有序)
voicedata
byte[]
必需
语音数据,默认640字节
voiceDataTs
long
必需
音频帧对应时间戳
dstLanguageList
List<String>
必需
需要翻译的语言列表
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用sendVoice方法重新获取streamId。
停止翻译
public void stopTranslate(long streamId)
参数
类型
必需
说明
streamId
long
必需
翻译的语音流id
释放对象
public void closeRTVT()
注意: 网络广播监听会持有 RTVTClient 对象 如果不调用此接口,RTVTClient 对象会一直持有不释放。如果释放后再次使用 需要重新调用 RTVTCenter.CreateClient
错误码
错误码
说明
800000
未知错误
800001
未验证的链接
800002
登录失败
800003
token已过期
800004
无效的验证时间
800005
无效token
800006
音频流不存在
SDK下载
SDK下载和更多说明请前往Github。
概述
通过本文,您可以使用Android版本的云上曲率实时语音翻译SDK,来实现实时语音场景下的翻译业务。
SDK集成
服务开通
云上曲率实时语音翻译SDK的使用,需要在云上曲率官网(https://www.ilivedata.com/) 注册账号并创建实时语音翻译服务项目。完成后,获取到项目对应的参数,更新到SDK中,再进行集成使用。
版本支持
支持 Android 5.0 (api21)版本及以上。
使用要求
- 实时音频格式支持:只支持PCM格式音频
- 采样率:16KHz
- 编码:16bit位深
- 声道:单声道
初始化
public static RTVTClient CreateClient(String endpoint, long pid, String uid, RTVTPushProcessor pushProcessor, Context applicationContext)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
endpoint | string | 必需 | 控制台提供的SDK接入地址 |
pid | long | 必需 | 项目id |
pushProcessor | 必需 | 重载的回调类,具体参考代码说明 | |
Context | - | 必需 | 应用的applicationContext |
注意: pushProcessor 中,带有断线自动重连内容。
登录
public void login( String token, long ts, UserInterface.IRTVTEmptyCallback callback)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
token | string | 必需 | 参考控制台基本信息中密钥内容生成token |
ts | long | 必需 | 生成token的时间戳 |
开始实时语音翻译
public void startTranslate(String srcLanguage, String destLanguage, String[] srcAltLanguage, boolean asrResult, boolean tempResult, boolean transResult, String userId, final RTVTUserInterface.IRTVTCallback<VoiceStream> callback)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
srcLanguage | string | 必需 | 源语言 |
destLanguage | string | 必需 | 目标语言,如果只需转写功能,目标语言可以可传空字符串 |
srcAltLanguage | List<String> | 可选 | 源语言的备选语言范围,最多支持3个语种传入 |
asrResult | boolean | 必需 | 设置是否需要语音识别的最终结果 识别结果通过recognizedResult回调 |
transResult | boolean | 必需 | 设置是否需要翻译的结果,翻译结果通过translatedResult 回调 |
tempResult | boolean | 必需 | 设置是否需要临时结果 |
userId | string | 可选 | 用户id,业务侧可自行按需传入 |
ttsResult | bool | 可选 | 语音输出,true为输出语音,false为不输出语音。 |
callback | - | - | 成功后,服务端生成streamId并回调给SDK |
开始多语种实时语音翻译
public void multi_startTranslate(String srcLanguage, String[] srcAltLanguage, boolean asrResult, boolean tempResult, boolean transResult, String userId, final RTVTUserInterface.IRTVTCallback<VoiceStream> callback)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
srcLanguage | string | 必需 | 源语言 |
srcAltLanguage | List<String> | 可选 | 源语言的备选语言范围,最多支持3个语种传入 |
asrResult | boolean | 必需 | 设置是否需要语音识别的最终结果 识别结果通过recognizedResult回调 |
tempResult | boolean | 必需 | 设置是否需要临时结果 |
userId | string | 可选 | 用户id,业务侧可自行按需传入 |
callback | - | - | 成功后,服务端生成streamId并回调给SDK |
注意:
1.需要回调识别结果的场景,需要将 “asrResult” 设置为 true ,"srcLanguage" 必传,"srcAltLanguage" 可选;
2.需要翻译结果的场景,需要将 “transResult” 设置为 true,"destLanguage" 必传,且不能传空字符串;
3.如果需要使用中间识别和翻译结果,那么需要手动将 “tempResult” 设置为 true;
4.如果传入语种到 “srcAltLanguage” ,那么会默认先进行语种识别流程,开始的部分音频(3s左右)会用于语种识别流程,之后的识别/翻译结果会正常返回;
5.如果传入的语种不在支持的语种范围内,会提示“语种不支持”;如果传入的语种在项目中未被启用,则会提示“项目不支持”。
6. 当出现断线重连情况时,需要重新调用此方法获取新的streamId。
发送语音片段
public void sendVoice(long streamId, long seq, byte[] voicedata, long voiceDataTs, UserInterface.IRTVTEmptyCallback callback)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
streamId | long | 必需 | 语音流id |
seq | long | 必需 | 语音片段序号(尽量有序) |
voicedata | byte[] | 必需 | 语音数据,默认640字节 |
voiceDataTs | long | 必需 | 音频帧对应时间戳 |
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用sendVoice方法重新获取streamId。
发送语音片段(多语种翻译)
public void sendVoice(long streamId, long seq, byte[] voicedata, long voiceDataTs, List<String> dstLanguageList, UserInterface.IRTVTEmptyCallback callback)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
streamId | long | 必需 | 语音流id |
seq | long | 必需 | 语音片段序号(尽量有序) |
voicedata | byte[] | 必需 | 语音数据,默认640字节 |
voiceDataTs | long | 必需 | 音频帧对应时间戳 |
dstLanguageList | List<String> | 必需 | 需要翻译的语言列表 |
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用sendVoice方法重新获取streamId。
停止翻译
public void stopTranslate(long streamId)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
streamId | long | 必需 | 翻译的语音流id |
释放对象
public void closeRTVT()
注意: 网络广播监听会持有 RTVTClient 对象 如果不调用此接口,RTVTClient 对象会一直持有不释放。如果释放后再次使用 需要重新调用 RTVTCenter.CreateClient
错误码
错误码 | 说明 |
---|---|
800000 | 未知错误 |
800001 | 未验证的链接 |
800002 | 登录失败 |
800003 | token已过期 |
800004 | 无效的验证时间 |
800005 | 无效token |
800006 | 音频流不存在 |
SDK下载
SDK下载和更多说明请前往Github。