接入准备
SDK 获取
接入须知
开发者在调用前请先查看 智聆口语评测(新版)相关接口,了解接口的使用要求和使用步骤。
该SDK需要手机能够连接网络,且Android设备 API Level为 16及以上版本。
运行 Demo 必须设置 AppID、SecretID、SecretKey,可在 API 密钥管理 中获取。
如果需要使用临时密钥的方式接入,具体流程可以参考 临时密钥兑换流程。
SDK 集成说明
添加 SDK
将下载的 SDK 文件复制到项目的 libs 文件夹中,并在项目的 build.gradle 文件中添加以下代码。
dependencies {implementation fileTree(dir: "libs", include: ["*.jar"])// 口语评测SDKimplementation 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 包括两种评测模式:实时评测模式和录音评测模式(具体使用方法可参考 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, "你好");// 注:录音评测模式下,需要设置HttpParameterKey.REC_MODE的值为1,默认值为0,实时评测模式无需设置该字段// apiParams.put(HttpParameterKey.REC_MODE, 1);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表示评测过程中需要回调音频数据//.recordAudioData(audioData) //录音评测模式下的音频数据流.build();
启动评测
// 1. 通过配置项构造评测类TAIOralController taiOralController = new TAIOralController(taiConfig);// 2. 创建评测监听TAIListener taiListener = new TAIListener() {//评测结果回调@Overridepublic void onMessage(String msg) { }//静音检测回调@Overridepublic void onVad() { }//评测结束回调@Overridepublic void onFinish(String msg) { }//评测出错回调@Overridepublic void onError(OralEvaluationRequest request,ClientException clientException,ServerException serverException,String response) { }//音量回调@Overridepublic void onVolumeDb(float volumeDb) { }};// 3. 创建录音监听OralEvaluationStateListener oralEvaluationStateListener = new OralEvaluationStateListener() {//录音开始回调@Overridepublic void onStartRecord(OralEvaluationRequest request) { }//录音结束回调@Overridepublic void onStopRecord(OralEvaluationRequest request) { }//录音数据回调@Overridepublic 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()
功能介绍:
释放资源接口。
TAIConfig
口语评测配置类
类型 | 名称 | 含义 | 默认值 |
int | appID | appID | 0 |
String | secretID | secretID | "" |
String | secretKey | secretKey | "" |
String | token | 临时 Token | "" |
boolean | enableVAD | 是否开启静音检测,静音检测相关的功能仅在 VOICE_FORMAT=0 时生效,即 pcm 格式音频时生效 | false |
long | vadInterval | 静音检测的时间间隔,单位 ms(静音检测相关的功能仅在 VOICE_FORMAT=0 时生效,即 pcm 格式音频时生效) | 3000 |
int | vadDBThreshold | 静音检测的阈值,音量范围(0 - 120)(静音检测相关的功能仅在 VOICE_FORMAT=0 时生效,即 pcm 格式音频时生效) | 20 |
boolean | stopOnVadDetected | 是否检测到静音就停止评测,静音检测相关的功能仅在 VOICE_FORMAT=0 时生效,即 pcm 格式音频时生效 | true |
Map<String, Object> | apiParams | api 参数,详情参见 HttpParameterKey 类 | 空 |
TAIPcmDataSource | dataSource | 数据源 | 空 |
byte[] | recordAudioData | 录音数据(针对录音评测的模式,详情参见示例 Demo) | |
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~120void 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() {@Overridepublic 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_EVALUATION_THREAD_START_FAILED(-103, "Oral evaluation thread start failed") | 录音线程启动失败 |
AUDIO_SOURCE_DATA_NULL(-104, "Audio source data is null") | 数据源为空 |
AUDIO_EVALUATION_REQUEST_NULL(-105, "Oral evaluation 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") | 取消评测 |