Flutter
更新时间:
概述
通过本文,您可以使用Flutter版本的云上曲率实时语音翻译SDK,来实现实时语音场景下的翻译业务。
SDK集成
服务开通
云上曲率实时语音翻译SDK的使用,需要在云上曲率官网(https://www.ilivedata.com/) 注册账号并创建实时语音翻译服务项目。完成后,获取到项目对应的参数,更新到SDK中,再进行集成使用。
版本支持
- Flutter 2.10.5 或更高版本
- Dart 2.14.0 或更高版本
- 根据你的目标平台,准备对应的开发和运行环境:
目标平台
环境要求
Android
支持Android版本 5.0 及以上
iOS
支持iOS版本 10 及以上
使用要求
- 实时音频格式支持:只支持PCM格式音频
- 采样率:16K Hz
- 编码:16bit位深
- 声道:单声道
集成依赖
在iOS平台中,需要在XCode中添加以下内容:
- 在 TARGETS->Build Settings->Other Linker Flags (选中 “ALL” 视图)中添加 “-ObjC",字母 “O” 和 “C” 大写,符号 “-” 请勿忽略。
- 静态库中采用 Objective-C++ 实现,因此需要您保证您工程中至少有一个 .mm 后缀的源文件(您可以将任意一个**.m后缀的文件改名为.mm**)。
- 添加库 libresolv.9.tbd。
登录
void rtvtLogin(String token, String endpoint, int pid, RtvtDelegate delegate,
void Function() success,
void Function(int errorCode, String errorEx) fail)
参数
类型
必需
说明
token
string
必需
控制台提供
endpoint
string
必需
控制台提供的SDK接入地址
pid
int
必需
项目id
delgate
-
-
引入的回调对象
success
-
-
登录成功回调
fail
-
-
登录失败回调
回调对象
mixin RtvtDelegate {
void rtvtRecognizeResult(
int streamId, String result, int startTs, int endTs, int recTs);
void rtvtTranslatedResult(
int streamId, String result, int startTs, int endTs, int recTs);
void rtvtTmpRecognizeResult(
int streamId, String result, int startTs, int endTs, int recTs);
void rtvtReloginResult(int code, String ex);
}
参数
说明
streamId
音频流ID
result
回调结果
startTs
开始时间戳
endTs
结束时间戳
recTs
识别的服务器时间戳
code
重连结果的提示码,0代表重连成功
注意,如果发生了重连,需要在重连成功后,重新调用startTranslate。
开始实时语音翻译
void startTranslate(bool asrResult, bool asrTempResult, bool transResult, String srcLanguage, String destLanguage, List[String] srcAltLanguage, String userId,
void Function(int streamId) success,
void Function(int errorCode, String errorEx) fail)
参数
类型
必需
说明
asrResult
bool
必需
设置是否需要语音识别的最终结果,默认为 true
transResult
bool
必需
设置是否需要翻译的结果,默认为 true
asrTempResult
bool
必需
设置是否需要语音识别的临时结果,默认为 false
srcLanguage
string
必需
源语言
destLanguage
string
必需
目标语言,如果只需转写功能,目标语言可以可传空字符串
srcAltLanguage
array
可选
源语言的备选语言范围,最多支持3个语种传入
userId
string
可选
用户id,业务侧可自行按需传入
success
-
-
获取streamId成功回调
fail
-
-
失败回调
注意:
1.需要回调识别结果的场景,需要将 “asrResult” 设置为 true ,"srcLanguage" 必传,"srcAltLanguage" 可选;
2.需要翻译结果的场景,需要将 “transResult” 设置为 true,"destLanguage" 必传,且不能传空字符串;
3.如果需要使用中间识别结果,那么需要手动将 “asrTempResult” 设置为 true;
4.如果传入语种到 “srcAltLanguage” ,那么会默认先进行语种识别流程,开始的部分音频(3s左右)会用于语种识别流程,之后的识别/翻译结果会正常返回;
5.如果传入的语种不在支持的语种范围内,会提示“语种不支持”;如果传入的语种在项目中未被启用,则会提示“项目不支持”。
6. 当出现断线重连情况时,需要重新调用此方法获取新的streamId。
发送语音片段
void sendPcmData(int streamId, Uint8List pcmData, int seq, int ts,
void Function() success,
void Function(int errorCode, String errorEx) fail)
参数
类型
必需
说明
streamId
int
必需
音频流id
seq
int
必需
语音片段序号(尽量有序)
pcmData
Uint8List
必需
语音数据,默认每次固定640字节
ts
int
必需
音频帧对应时间戳
success
-
-
成功回调
fail
-
-
失败回调
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用startTranslate方法重新获取streamId。
停止翻译
void stopTranslate(int streamId, int lastSeq,
void Function() success,
void Function(int errorCode, String errorEx) fail)
参数
类型
必需
说明
streamId
int
必需
音频流id
lastSeq
int
必需
最后的语音片段
success
-
-
成功回调
fail
-
-
失败回调
结束
void close()
注意,使用结束时调用。下次使用需要先登录。
错误码
错误码
说明
800000
未知错误
800001
未验证的链接
800002
登录失败
800003
token已过期
800004
无效的验证时间
800005
无效token
800006
音频流不存在
800107
超过限制
SDK下载
SDK下载和更多说明请前往Github。
概述
通过本文,您可以使用Flutter版本的云上曲率实时语音翻译SDK,来实现实时语音场景下的翻译业务。
SDK集成
服务开通
云上曲率实时语音翻译SDK的使用,需要在云上曲率官网(https://www.ilivedata.com/) 注册账号并创建实时语音翻译服务项目。完成后,获取到项目对应的参数,更新到SDK中,再进行集成使用。
版本支持
- Flutter 2.10.5 或更高版本
- Dart 2.14.0 或更高版本
- 根据你的目标平台,准备对应的开发和运行环境:
目标平台 | 环境要求 |
---|---|
Android | 支持Android版本 5.0 及以上 |
iOS | 支持iOS版本 10 及以上 |
使用要求
- 实时音频格式支持:只支持PCM格式音频
- 采样率:16K Hz
- 编码:16bit位深
- 声道:单声道
集成依赖
在iOS平台中,需要在XCode中添加以下内容:
- 在 TARGETS->Build Settings->Other Linker Flags (选中 “ALL” 视图)中添加 “-ObjC",字母 “O” 和 “C” 大写,符号 “-” 请勿忽略。
- 静态库中采用 Objective-C++ 实现,因此需要您保证您工程中至少有一个 .mm 后缀的源文件(您可以将任意一个**.m后缀的文件改名为.mm**)。
- 添加库 libresolv.9.tbd。
登录
void rtvtLogin(String token, String endpoint, int pid, RtvtDelegate delegate,
void Function() success,
void Function(int errorCode, String errorEx) fail)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
token | string | 必需 | 控制台提供 |
endpoint | string | 必需 | 控制台提供的SDK接入地址 |
pid | int | 必需 | 项目id |
delgate | - | - | 引入的回调对象 |
success | - | - | 登录成功回调 |
fail | - | - | 登录失败回调 |
回调对象
mixin RtvtDelegate {
void rtvtRecognizeResult(
int streamId, String result, int startTs, int endTs, int recTs);
void rtvtTranslatedResult(
int streamId, String result, int startTs, int endTs, int recTs);
void rtvtTmpRecognizeResult(
int streamId, String result, int startTs, int endTs, int recTs);
void rtvtReloginResult(int code, String ex);
}
参数 | 说明 |
---|---|
streamId | 音频流ID |
result | 回调结果 |
startTs | 开始时间戳 |
endTs | 结束时间戳 |
recTs | 识别的服务器时间戳 |
code | 重连结果的提示码,0代表重连成功 |
注意,如果发生了重连,需要在重连成功后,重新调用startTranslate。
开始实时语音翻译
void startTranslate(bool asrResult, bool asrTempResult, bool transResult, String srcLanguage, String destLanguage, List[String] srcAltLanguage, String userId,
void Function(int streamId) success,
void Function(int errorCode, String errorEx) fail)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
asrResult | bool | 必需 | 设置是否需要语音识别的最终结果,默认为 true |
transResult | bool | 必需 | 设置是否需要翻译的结果,默认为 true |
asrTempResult | bool | 必需 | 设置是否需要语音识别的临时结果,默认为 false |
srcLanguage | string | 必需 | 源语言 |
destLanguage | string | 必需 | 目标语言,如果只需转写功能,目标语言可以可传空字符串 |
srcAltLanguage | array | 可选 | 源语言的备选语言范围,最多支持3个语种传入 |
userId | string | 可选 | 用户id,业务侧可自行按需传入 |
success | - | - | 获取streamId成功回调 |
fail | - | - | 失败回调 |
注意:
1.需要回调识别结果的场景,需要将 “asrResult” 设置为 true ,"srcLanguage" 必传,"srcAltLanguage" 可选;
2.需要翻译结果的场景,需要将 “transResult” 设置为 true,"destLanguage" 必传,且不能传空字符串;
3.如果需要使用中间识别结果,那么需要手动将 “asrTempResult” 设置为 true;
4.如果传入语种到 “srcAltLanguage” ,那么会默认先进行语种识别流程,开始的部分音频(3s左右)会用于语种识别流程,之后的识别/翻译结果会正常返回;
5.如果传入的语种不在支持的语种范围内,会提示“语种不支持”;如果传入的语种在项目中未被启用,则会提示“项目不支持”。
6. 当出现断线重连情况时,需要重新调用此方法获取新的streamId。
发送语音片段
void sendPcmData(int streamId, Uint8List pcmData, int seq, int ts,
void Function() success,
void Function(int errorCode, String errorEx) fail)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
streamId | int | 必需 | 音频流id |
seq | int | 必需 | 语音片段序号(尽量有序) |
pcmData | Uint8List | 必需 | 语音数据,默认每次固定640字节 |
ts | int | 必需 | 音频帧对应时间戳 |
success | - | - | 成功回调 |
fail | - | - | 失败回调 |
注意: 如果超过一段时间未发送数据,服务端会做超时处理,此时需要重新调用startTranslate方法重新获取streamId。
停止翻译
void stopTranslate(int streamId, int lastSeq,
void Function() success,
void Function(int errorCode, String errorEx) fail)
参数 | 类型 | 必需 | 说明 |
---|---|---|---|
streamId | int | 必需 | 音频流id |
lastSeq | int | 必需 | 最后的语音片段 |
success | - | - | 成功回调 |
fail | - | - | 失败回调 |
结束
void close()
注意,使用结束时调用。下次使用需要先登录。
错误码
错误码 | 说明 |
---|---|
800000 | 未知错误 |
800001 | 未验证的链接 |
800002 | 登录失败 |
800003 | token已过期 |
800004 | 无效的验证时间 |
800005 | 无效token |
800006 | 音频流不存在 |
800107 | 超过限制 |
SDK下载
SDK下载和更多说明请前往Github。