Android SDK 说明

最近更新时间:2024-06-27 09:18:31

我的收藏

接入准备

SDK 获取

口语评测 Android SDK 以及 Demo 的下载地址:接入 SDK 下载

接入须知

开发者在调用前请先查看 智聆口语评测(新版)相关接口,了解接口的使用要求使用步骤
该SDK需要手机能够连接网络,且Android设备 API Level为 16即以上版本
运行 Demo 必须设置 AppID、SecretID、SecretKey,可在 API 密钥管理 中获取。

SDK 集成说明

添加 SDK

将下载的 SDK 文件复制到项目的 libs 文件夹中,并在项目的 build.gradle 文件中添加以下代码。
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
// 口语评测SDK
implementation files("libs/qcloud-soe-release-VERSION.aar")
// 口语评测SDK内部依赖的okhttp库(必选)
implementation 'com.squareup.okhttp3:okhttp:4.2.2'
}

添加权限

在项目的 AndroidManifest.xml 文件中添加 SDK 需要的权限,例如:
<!-- 录音权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- 网络权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

SDK 接口使用说明

本章节主要介绍 SDK 接口调用详细步骤以及接口调用时机,也可参考 SDK 交付 Demo 内的示例代码。

构造配置项

Map<String, Object> apiParams = new TreeMap<>();
// 引擎模型类型电话场景:16k_zh:中文; 16k_en:英文;
apiParams.put(HttpParameterKey.SERVER_ENGINE_TYPE, "16k_zh");
// 评测模式
apiParams.put(HttpParameterKey.EVAL_MODE, 1);
//输入文本模式 0: 普通文本(默认)1:音素结构 文本
apiParams.put(HttpParameterKey.TEXT_MODE, 0);
//评价苛刻指数。取值为[1.0 - 4.0]范围内的浮点数
apiParams.put(HttpParameterKey.SCORE_COEFF, 1.0);
// 输出断句中间结果标识,0:不输出(默认) 1:输出
apiParams.put(HttpParameterKey.SENTENCE_INFO_ENABLED, 1);
//被评估语音对应的文本,仅支持中文和英文
apiParams.put(HttpParameterKey.REF_TEXT, "你好");

TAIConfig taiConfig = new TAIConfig.Builder()
.appID(yourAppId)//appID
.secretID(yourSecretId) //secretID
.secretKey(yourSecretKey) //secretKey
.token(yourToken) //临时token
.apiParams(apiParams) //api参数,可参考示例代码或HttpParameterKey类
.enableVAD(true) //是否开启静音检测
.vadInterval(3000) //静音检测的时间间隔,单位ms
.vadDBThreshold(20) //静音检测的阈值
.stopOnVadDetected(true) //是否检测到静音就停止评测
.dataSource(new TAIDataSource(true)) //数据源,TAIDataSource入参为true表示评测过程中需要回调音频数据
.build();

启动评测

// 1. 通过配置项构造评测类
TAIOralController taiOralController = new TAIOralController(taiConfig);

// 2. 创建评测监听
TAIListener taiListener = new TAIListener() {
//评测结果回调
@Override
public void onMessage(String msg) { }
//静音检测回调
@Override
public void onVad() { }
//评测结束回调
@Override
public void onFinish(String msg) { }
//评测出错回调
@Override
public void onError(OralEvaluationRequest request,
ClientException clientException,
ServerException serverException,
String response) { }
//音量回调
@Override
public void onVolumeDb(float volumeDb) { }
};

// 3. 创建录音监听
OralEvaluationStateListener oralEvaluationStateListener = new OralEvaluationStateListener() {
//录音开始回调
@Override
public void onStartRecord(OralEvaluationRequest request) { }
//录音结束回调
@Override
public void onStopRecord(OralEvaluationRequest request) { }
//录音数据回调
@Override
public void onAudioData(final short[] audioData, final int readBufferLen) { }
};

// 4. 启动评测,如果要监听录音开始
taiOralController.startOralEvaluation(taiListener, oralEvaluationStateListener);

停止评测

taiOralController.stopOralEvaluation();

取消评测

taiOralController.cancelOralEvaluation();

接口详情

TAIOralController

构造接口

public TAIOralController(TAIConfig config)
功能介绍:
口语评测 SDK 的核心类的构造接口。
传入参数:
参数类型
参数名称
参数含义
TAIConfig
config
启动配置项

启动评测接口

public void startOralEvaluation(TAIListener listener , OralEvaluationStateListener oralEvaluationStateListener)
功能介绍:
启动口语评测。
传入参数:
参数类型
参数名称
参数含义
TAIListener
listener
口语评测结果监听类
OralEvaluationStateListener
oralEvaluationStateListener
录音监听类

停止评测接口

public void stopOralEvaluation()
功能介绍:停止评测会向服务器发送结束评测信息,收到服务器成功的信息会回调任务结束

取消评测接口

public void stopOralEvaluation()
功能介绍:
取消口语评测

release 接口

public void release()
功能介绍:
释放资源接口。

TAIConfi

口语评测配置类
类型
名称
含义
默认值
int
appID
appID
0
String
secretID
secretID
""
String
secretKey
secretKey
""
String
token
临时 Token
""
boolean
enableVAD
是否开启静音检测,静音检测相关的功能仅在 VOICE_FORAMT=0 时生效,即 pcm 格式音频时生效
false
long
vadInterval
静音检测的时间间隔,单位 ms(静音检测相关的功能仅在 VOICE_FORAMT=0 时生效,即 pcm 格式音频时生效)
3000
int
vadDBThreshold
静音检测的阈值,音量范围(0 - 120)(静音检测相关的功能仅在 VOICE_FORAMT=0 时生效,即 pcm 格式音频时生效)
20
boolean
stopOnVadDetected
是否检测到静音就停止评测,静音检测相关的功能仅在 VOICE_FORAMT=0 时生效,即 pcm 格式音频时生效
true
Map<String, Object>
apiParams
api 参数,详情参见 HttpParameterKey 类
TAIPcmDataSource
dataSource
数据源
int
connectTimeout
网络连接超时,单位 ms
3000

TAIListener

口语评测结果监听类。
public interface TAIListener {
//评测结果回调
void onMessage(String msg);
//静音检测回调,静音检测相关的功能仅在VOICE_FORAMT=0时生效,即pcm格式音频时生效
void onVad();
//评测结束回调
void onFinish(String msg);
//评测出错回调
void onError(OralEvaluationRequest request, ClientException clientException, ServerException serverException, String response);
//音量回调, 音量范围: 0~120
void onVolumeDb(float volumeDb);
}

OralEvaluationStateListener

录音监听类
public interface OralEvaluationStateListener {
/**
* 开始录音时回调
* @param request
*/
void onStartRecord(OralEvaluationRequest request);

/**
* 结束录音时回调
* @param request
*/
void onStopRecord(OralEvaluationRequest request);

/**
* 返回音频流,
* 用于返回宿主层做录音缓存业务。
* 由于方法跑在sdk线程上,这里多用于文件操作,宿主需要新开一条线程专门用于实现业务逻辑
* @param audioData
* @param readBufferLength
*/
void onAudioData(short[] audioData,int readBufferLength);
}

AAILogger

SDK 内部日志监听,按需选择监听。
AAILogger.setLoggerListener(new LoggerListener() {
@Override
public void onLogInfo(String s) {

}
});

错误码

错误码
错误码值
UNKNOWN_ERROR(-1, "Unknown exception")
未知错误
AUDIO_RECORD_INIT_FAILED(-100, "AudioRecord init failed")
AudioRecord 初始化失败
AUDIO_RECORD_START_FAILED(-101, "AudioRecord start failed")
AudioRecord 启动失败
AUDIO_RECORD_MULTIPLE_START(-102, "AudioRecord multi start")
重复启动口语评测
AUDIO_EVALUTION_THREAD_START_FAILED(-103, "Oral evalution thread start failed")
录音线程启动失败
AUDIO_SOURCE_DATA_NULL(-104, "Audio source data is null")
数据源为空
AUDIO_EVALUTION_REQUEST_NULL(-105, "Oral evalution request is null")
口语评测请求为空
AUDIO_RECORD_INIT_FAILED(-100, "AudioRecord init failed")
AudioRecord 初始化失败
WEBSOCKET_NETWORK_FAILED(-106, "Websocket network exception")
Websocket网络异常
ORAL_EVALUATION_CANCEL(-107, "Oral evaluation is cancelled")
取消评测