接入准备
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 交付 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() {//评测结果回调@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()
功能介绍:
释放资源接口。
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~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_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") | 取消评测 |