Android SDK接入(旧)
该技术服务已迁移至思必驰开放平台,本文档于2020年8月25日停止更新。最新版请查看:https://cloud.aispeech.com/docs/lasr_rt_Android
一 功能介绍
实时语音转写通过与服务端建立websocket长连接,对连续的音频流进行实时识别,获取返回的文字流识别结果,达到“边说边出文字”的效果,内置智能断句,可用于大会演讲投屏、实时直播字幕、实时法庭庭审记录等场景。整个识别过程是实时的,支持:
- 支持wav, ogg, opus以及mp3格式的音频文件转写
- 支持中文普通话
- 后续会开放热词配置、自训练语言模型功能,如需提前体验,请联系商务。
二 调用限制
集成实时长语音转写SDK时,需要注意以下内容:
内容
|
说明
|
---|---|
字符编码 | UTF-8 |
语言种类 | 中文普通话 |
服务鉴权 | 长语音服务使用需要进行授权 |
开发语言 | java |
响应格式 |
接口回调 |
音频属性 | 采样率16k、位长16bits、单声道 |
数据发送 | sdk通过 WebSocket 每隔100ms发送一次音频数据 |
音频时长/大小 | 5小时以内 |
音频格式 |
OGG,WAV,MP3,OPUS |
并发路数 | 默认50路并发。 |
转写结果保存时长 | 服务器实时返回结果,不保存在服务器上 |
服务开通 | 调用长语音服务需要先购买时长, 您可以领取免费时长资源或购买付费资源包 |
三 集成流程
3.1 产品创建与授权
产品创建
3.2 SDK集成准备
下载SDK
可以共用 在线语音识别 的sdk,请前往:基础技术SDK 下载最新版本的SDK。
SDK准备
集成SDK前,需要有:
jar:DUI-lite-SDK-for-Android-xxx.jar
so:libvad.so libduiutils.so libopusogg.so
资源:具体使用到的资源请参考 demo,可以放在assets目录中,也可以自己手动放在磁盘中,比如/sdcard/
3.3 集成SDK
SDK集成和授权
授权操作请参照文档 https://www.duiopen.com/docs/ct_overview_Android
长语音运行流程
流程如下图:
四 SDK参数说明
4.1 请求参数
详细参数说明请参见文档,部分参数如下:
mAICloudLASRRealtimeIntent.setUseTxtSmooth(false); // 口语顺滑,去掉 嗯、啊 这些词
mAICloudLASRRealtimeIntent.setUseTProcess(true); // 逆文本,识别出的数字转成阿拉伯数字
mAICloudLASRRealtimeIntent.setUseAlignment(false); // 是否输出词级别时间对齐信息
mAICloudLASRRealtimeIntent.setUseSensitiveWdsNorm(false); // 是否使用内置敏感词
mAICloudLASRRealtimeIntent.setUseStreamPunc(false); // 是否启用流式标点
mAICloudLASRRealtimeIntent.setRes(null); // res=lasr-cn-en使用中英文混合,不设置res字段使用中文在线
mAICloudLASRRealtimeIntent.setForwardAddresses(null); // 当参数不为空时,启动转发模式。 当有转写结果时,会往注册的WebSocket地址实时推送转写结果。
mAICloudLASRRealtimeIntent.setAudioType(AICloudLASRRealtimeIntent.PCM_ENCODE_TYPE.OGG);
mAICloudLASRRealtimeIntent.setUseCustomFeed(false); // 设置是否自行feed数据, default is false
4.2 回调结果
errno = 0,表示本次返回为识别中间rec。
{
"errno": 0,
"error": "",
"data": {
"sessionId": "94aadbaa39f046c1b2889dac9ccb1cff",
"bg": 160,
"end": 8380,
"onebest": "这个工业化时代,人越来越像机器。现在很多人研究技术是为了让机器越来越像人,而机器做人。",
"speaker": 0
}
}
字段说明:
sessionId: 从start,到stop,为一次Session,sessionId在一次会话中唯一。
begin:开始时间(ms)
end:结束时间(ms)
onebest:识别文本
speaker:说话人序号(暂不支持)
五 SDK集成示例
注意:长语音实时识别整体流程和 在线ASR 一致。
详细的示例demo见:https://gitee.com/szaispeech/dui-lite-android-sdk-samples
// 回调方法
private class AILASRRealtimeListenerImpl implements AILASRRealtimeListener {
public void onError(AIError error) {
textResult.setText(error.toString());
}
public void onResults(AIResult results) {
if (results.getResultType() == AIConstant.AIENGINE_MESSAGE_TYPE_JSON) {
String resultJson = (String) results.getResultObject();
Log.i(TAG, resultJson);
try {
JSONObject jsonObject = new JSONObject(resultJson);
int errno = jsonObject.getInt("errno");
if (errno == 0)
textResult.append(resultJson);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void onInit(int status) {
if (status == AIConstant.OPT_SUCCESS) {
textResult.setText("初始化成功!");
btnStart.setEnabled(true);
btnStop.setEnabled(true);
} else {
textResult.setText("初始化失败!code:" + status);
}
}
@Override
public void onReadyForSpeech() {
showTip("请说话");
textResult.setText("请说话");
}
@Override
public void onResultDataReceived(byte[] buffer, int size) {
// 单路音频回调,单麦的话音频直接回调,多麦的话经过 beamforming 之后的单路音频
}
@Override
public void onRawDataReceived(byte[] buffer, int size) {
// 多麦的原始音频
}
}
5.1 初始化
AICloudLASRRealtimeEngine mEngine;
mEngine = AICloudLASRRealtimeEngine.createInstance();
mEngine.init(new AILASRRealtimeListenerImpl());
5.2 开始识别
AICloudLASRRealtimeIntent mAICloudLASRRealtimeIntent = new AICloudLASRRealtimeIntent();
mAICloudLASRRealtimeIntent.setUseTxtSmooth(false); // 口语顺滑,去掉
mAICloudLASRRealtimeIntent.setUseTProcess(true); // 逆文本,识别出的数字转成阿拉伯数字
mAICloudLASRRealtimeIntent.setUseAlignment(false); // 是否输出词级别时间对齐信息
mAICloudLASRRealtimeIntent.setUseSensitiveWdsNorm(false); // 是否使用内置敏感词
mAICloudLASRRealtimeIntent.setUseStreamPunc(false); // 是否启用流式标点
mAICloudLASRRealtimeIntent.setRes(null); // res=lasr-cn-en使用中英文混合,不设置res字段使用中文在线
mAICloudLASRRealtimeIntent.setForwardAddresses(null); // 当参数不为空时,启动转发模式。 当有转写结果时,会往注册的WebSocket地址实时推送转写结果。
mAICloudLASRRealtimeIntent.setAudioType(AICloudLASRRealtimeIntent.PCM_ENCODE_TYPE.OGG);
mAICloudLASRRealtimeIntent.setUseCustomFeed(false); // 设置是否自行feed数据, default is false
mEngine.start(mAICloudLASRRealtimeIntent);
5.3 停止识别
mEngine.stop();
5.4 取消识别
mEngine.cancel(); //关闭录音机,取消本次识别
5.5 销毁引擎
mEngine.destroy();
六 错误码
请看 通用错误码 和 长语音错误码
https://www.duiopen.com/docs/ct_errorcode_Android
七 接口文档
接口文档见:https://www.duiopen.com/duilite-doc/android/
八 常见问题
1、 并发支持多少
目前实时转写默认支持50 个并发路数, 如需进行并发扩容,您可以线下联系商务或项目经理。
2、 如何试用服务和购买服务
您需要直接在DUI控制台上进行服务的试用和购买。
3、 对硬件的要求有什么
Android 4.0 及以上系统的设备
4、 支持的音频格式和语言
- 中文普通话
- OGG,WAV,MP3,OPUS
- 16k 16bit 单声道