有奖捉虫:办公协同&微信生态&物联网文档专题 HOT
本文以 新建项目 视角进行说明,完整示例可以参考Demo

声明并定义对象

导入类 TAIOralEvaluation
import com.tencent.taisdk.TAIOralEvaluation;
在类中声明对象
private TAIOralEvaluation oral;
onCreate 中定义对象
this.oral = new TAIOralEvaluation();

设置数据回调

使用 setListener 方法,调用 TAIOralEvaluationListener 接口,设置数据回调。
this.oral.setListener(new TAIOralEvaluationListener() {
@Override
public void onEvaluationData(final TAIOralEvaluationData data, final TAIOralEvaluationRet result) {
//数据和结果回调
Log.v("onEvaluationData", String.valueOf(result));
}

@Override
public void onFinalEvaluationData(final TAIOralEvaluationData data, final TAIOralEvaluationRet result) {
//最终评测结果回调
Log.v("onFinalEvaluationData", String.valueOf(result));
}

@Override
public void onEndOfSpeech(boolean isSpeak) {
// 检测到静音回调
Log.v("onEndOfSpeech", String.valueOf(isSpeak));
}

@Override
public void onVolumeChanged(int volume) {
// 音频发生变化回调
Log.v("onVolumeChanged", String.valueOf(volume));
}

@Override
public void onEvaluationError(TAIOralEvaluationData data, TAIError error) {
// 评测失败回调
Log.e("onEvaluationError", String.valueOf(error));
}
});

线程切换(可选)

如需在页面渲染 UI,需要使用 runOnUiThread 方法从子线程切换到主线程。
@Override public void onEvaluationData(final TAIOralEvaluationData data, final TAIOralEvaluationRet result) { MainActivity.this.runOnUiThread(new Runnable() { @Override public void run() { //数据和结果回调 } }); }

销毁对象(可选)

将对象设置为 null,从而销毁对象。
this.oral = null;
onEvaluationError 的时候销毁对象,避免持续性错误回调。
@Override public void onEvaluationError(TAIOralEvaluationData data, TAIError error) { // 评测失败回调 Log.e("onEvaluationError", String.valueOf(error)); this.oral = null; }

设置初始化参数

使用 TAIOralEvaluationParam 创建对象 param, 设置初始化参数。
注意:
实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密。
代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。以下代码示例仅供参考,建议采用更安全的方式来使用密钥,请参见 云 API 密钥安全方案推荐
密钥可前往 官网控制台 进行获取。
//三、初始化参数
TAIOralEvaluationParam param = new TAIOralEvaluationParam();
param.context = this;
param.appId = "";
param.secretId = "";
param.secretKey = "";
param.token = "";
param.sessionId = UUID.randomUUID().toString();
param.workMode = TAIOralEvaluationWorkMode.STREAM;
param.evalMode = TAIOralEvaluationEvalMode.SENTENCE;
param.serverType = TAIOralEvaluationServerType.ENGLISH;
param.fileType = TAIOralEvaluationFileType.MP3;
param.scoreCoeff = 1.0;
param.refText = "hello";

音频存储方案(可选)

通过设置 audioPath 参数,根据设置路径获取音频文件。
param.audioPath = this.getFilesDir() + "/" + param.sessionId + ".mp3";

设置超时重试(可选)

通过设置 timeout 和 retryTimes,将在未出结果的情况下进行重试。
// 每隔5s没有回调结果就会重试,一共重试3次。 param.timeout = 5; param.retryTimes = 3;
通过设置 serviceTimeoutTryTimes 和 serviceTimeoutWaitInterval,在评测超时的情况下进行重试。
// 出现评测超时后,每隔3000ms会进行查询重试,一共重试5次。 param.serviceTimeoutTryTimes = 5; param.serviceTimeoutWaitInterval = 3000;

设置分片和静音检测(可选)

设置 TAIRecorderParam 参数,静音检测您可以通过 vadEnable 参数打开,并通过 vadInterval 参数设置静音检测时间间隔。
//在开始调用`startRecordAndEvaluation`前设置录制参数
recordParam = new TAIRecorderParam();
recordParam.fragSize =1024;
recordParam.fragEnable =true;
recordParam.vadEnable =true;
recordParam.vadInterval =5000;
recordParam.db = 20;
this.oral.setRecorderParam(recordParam);
当检测到静音或者录音分贝变化时,通过 TAIOralEvaluationListener 通知上层。
@Override
public void onEndOfSpeech(boolean isSpeak) {
// 检测到静音回调
Log.v("onEndOfSpeech", String.valueOf(isSpeak));
}
@Override
public void onVolumeChanged(int volume) {
// 音频发生变化回调
Log.v("onVolumeChanged", String.valueOf(volume));
}

开始录制和评测

调用 startRecordAndEvaluation() 方法传入 TAIOralEvaluationParam 的 param 参数,并设置回调函数,即可开始录制。SDK 内部会根据评测参数进行评测。
this.oral.startRecordAndEvaluation(param);

停止录制和评测

调用 stopRecordAndEvaluation() 方法停止录制。推荐调用 startRecordAndEvaluation() 方法2s后才停止录制,否则可能正常获取到评测结果。
this.oral.stopRecordAndEvaluation();

是否正在录制(可选)

可以通过 isRecording 判断录制状态,根据录制状态选择是否停止录音。
if (oral.isRecording()) { this.oral.stopRecordAndEvaluation(); } else { ...... this.oral.startRecordAndEvaluation(param); }

请求参数说明

TAIOralEvaluationParam 参数说明

参数
类型
必填
说明
context
Context
上下文
AppID
String
账号应用 ID,参考账号信息
timeout
Int
超时时间,默认30秒
retryTimes
int
超时重试次数
secretId
String
您在 控制台 获取的密钥 ID,临时授权凭证的 TmpSecretId
secretKey
String
您在 控制台 获取的密钥 Key,临时授权凭证的 TmpSecretKey
token
String
临时授权凭证的 Token,仅在使用临时授权凭证时需要设置此参数
fileType
TAIOralEvaluationFileType
语音文件类型。
TAIOralEvaluationFileType.MP3:mp3(录音评测采用 MP3 格式)
sessionId
String
语音段唯一标识
refText
String
被评估语音对应的文本。参考评估文本介绍
workMode
TAIOralEvaluationWorkMode
语音输入模式
TAIOralEvaluationWorkMode.STREAM:流式分片
TAIOralEvaluationWorkMode.ONCE:非流式一次性评估
evalMode
TAIOralEvaluationEvalMode
评测模式。
TAIOralEvaluationEvalMode.WORD :单词模式
TAIOralEvaluationEvalMode.SENTENCE:句子模式
TAIOralEvaluationEvalMode.PARAGRAPH:段落模式
TAIOralEvaluationEvalMode.FREE:自由说模式
TAIOralEvaluationEvalMode.WORD_FIX:单词音素纠错模式
TAIOralEvaluationEvalMode.SCENE:情景评测模式
TAIOralEvaluationEvalMode.MULTI_BRANCH:句子多分支评测模式
TAIOralEvaluationEvalMode.WORD_REALTIME:单词实时评测模式
TAIOralEvaluationEvalMode.SPELLING:拼音评测模式
scoreCoeff
Double
评价苛刻指数,取值为[1.0 - 4.0]范围内的浮点数,用于平滑不同年龄段的分数。参考苛刻指数介绍
soeAppId
String
业务应用 ID,与账号应用 AppID 无关,是用来方便客户管理服务的参数。具体参考业务应用 ID 介绍
serverType
TAIOralEvaluationServerType
评估语言
TAIOralEvaluationServerType.ENGLISH:英文(默认)
TAIOralEvaluationServerType.CHINESE:中文
sentenceInfoEnable
Boolean
输出断句中间结果标识。
Keyword
String
textMode
Int
输入文本模式。
TAIOralEvaluationTextMode.NORMAL: 普通文本,
TAIOralEvaluationTextMode.PHONEME:音素结构文本,参考音素标注
isFixOn
Boolean
用于设置是否开启单词映射
audioPath
String
Android 本地音频保存路径
isQuery
boolean
查询标识。true:查询请求
isAsync
boolean
异步模式标识。false:同步模式;true:异步模式
serviceTimeoutTryTimes
int
重试次数。使用查询标识的查询次数
serviceTimeoutWaitInterval
int
重试时间间隔。使用查询标识的重试时间间隔
cosBucketUrl
String
音频存储模式,此参数已废弃,无需设置;
注意:
有存储需求的用户建议自行存储至腾讯云 COS 对象存储使用。

TAIRecorderParam 参数说明

参数
类型
必填
说明
fragEnable
Boolean
是否开启分片,默认 YES
fragSize
Int
语音分片大小,默认1024,建议为1024的整数倍,范围[1k,10k]
vadEnable
Boolean
是否开启静音检测,默认 NO
vadInterval
Int
静音检测时间间隔,单位为ms
db
Int
静音检测分贝阈值,默认为20dB

返回结果参数

TAIOralEvaluationListener 参数说明

参数
类型
说明
data
TAIOralEvaluationData
音频数据。参考TAIOralEvaluationData 
result
TAIOralEvaluationRet
返回结果。参考TAIOralEvaluationRet
error
TAIError
错误信息。参考TAIError
isSpeak
boolean
是否检测到声音 (从开始录音到检测时) 必须在 setRecorderParam 中开启 vad 。检测到静音内部不会停止录制,业务层可以根据此回调主动停止录制或提示用户
volume
boolean
分贝大小 必须在 setRecorderParam 中开启 vad。volume 范围[0-120]

TAIOralEvaluationRet 参数说明

参数
类型
说明
sessionId
String
语音段唯一标识
requestId
String
唯一请求 ID,每次请求都会返回
pronAccuracy
Double
发音精准度,取值范围[-1, 100],当取-1时指完全不匹配
pronFluency
Double
发音流利度,取值范围[0, 1],当为词模式时,取值无意义
pronCompletion
Double
发音完整度,取值范围[0, 1],当为词模式时,取值无意义
words
List
单词详细发音评估结果
SuggestedScore
Double
建议评分,取值范围[0,100]
sentenceInfoSet
List
断句中间结果,待用户发音完全结束后,系统会给出一个综合所有句子的整体结果
refTextId
Int
匹配候选文本的序号,在句子多分支、情景对 话、段落模式下表示匹配到的文本序号
注意:
此字段可能返回 null,表示取不到有效值。
KeyWordHits
List<Int>
主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。
UnKeyWordHits
List<Int>
负向主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。

TAIOralEvaluationWord 参数说明

参数
类型
说明
beginTime
Int
当前单词语音起始时间点,单位为ms
endTime
Int
当前单词语音终止时间点,单位为ms
pronAccuracy
Double
单词发音准确度,取值范围[-1, 100],当取-1时指完全不匹配
pronFluency
Double
单词发音流利度,取值范围[0, 1]
word
String
当前词
matchTag
Int
当前词与输入语句的匹配情况,0:匹配单词、1:新增单词、2:缺少单词、3:错读的词、4:未录入单词。
phoneInfos
List
音素评估详情
注意:
在 EvalMode 为2、3、5时,此参数为空。
referenceWord
String
读音评估对应的单词
KeywordTag
Int
主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。

SentenceInfoSet 参数说明

参数
类型
说明
sentenceId
Int
句子序号
words
List
单词粒度详细发音评估结果
pronAccuracy
Double
音素发音准确度,取值范围[-1, 100],当取-1时指完全不匹配
pronFluency
Double
单词发音流利度,取值范围[0, 1]
pronCompletion
Boolean
发音完整度,取值范围[0, 1],当为词模式时,取值无意义
suggestScore
Double
建议评分,取值范围[0,100]
refTextId
Int
匹配候选文本的序号,在句子多分支、情景对 话、段落模式下表示匹配到的文本序号
注意:
此字段可能返回 null,表示取不到有效值。
KeyWordHits
List<Int>
主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。
UnKeyWordHits
List<Int>
负向主题词命中标志,0表示没命中,1表示命中
注意:
此字段可能返回 null,表示取不到有效值。

TAIOralEvaluationPhoneInfo 参数说明

参数
类型
说明
beginTime
Int
当前音素语音起始时间点,单位为ms
endTime
Int
当前音素语音终止时间点,单位为ms
pronAccuracy
Double
音素发音准确度,取值范围[-1, 100],当取-1时指完全不匹配
detectedStress
Boolean
当前音素是否检测为重音
phone
String
用户实际发音音素
stress
Boolean
用户实际发音音素是否应为重音
rLetter
String
音素对应的字母
referencePhone
String
参考音素,在单词诊断模式下,代表标准音素

TAIError 参数说明

参数
类型
说明
Code
Int
返回错误码
0:成功
1:参数错误
2:json 解析错误
3:http 请求错误
4:服务器错误详细错误信息请查看 desc 参数
5:音频录制错误
desc
String
详细错误描述
requestId
String
请求 ID,用于订单唯一标识