音频数据评测说明

最近更新时间:2024-07-25 11:17:31

我的收藏
本文以 新建项目 视角进行说明,完整示例可以参考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 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, 设置评测文本、客户 ID、密码等信息。
注意:
实例化一个认证对象,入参需要传入腾讯云账户 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";

设置超时重试(可选)

通过设置 serviceTimeoutTryTimes和serviceTimeoutWaitInterval,在评测超时的情况下进行重试。
// 出现评测超时后,每隔3000ms会进行查询重试,一共重试5次。 param.serviceTimeoutTryTimes = 5; param.serviceTimeoutWaitInterval = 3000;

设置音频数据

本地音频数据

根据音频数据,创建 TAIOralEvaluationData 对象 data 进行评测。音频数据需要符合格式要求。参考使用限制
try { // 读取音频文件,音频文件存放在app/assets目录下 InputStream is = getAssets().open("hello_guagua.mp3"); byte[] buffer = new byte[is.available()]; is.read(buffer); is.close(); // 设置音频数据等参数 TAIOralEvaluationData data = new TAIOralEvaluationData(); data.seqId = 1; //分片序号从1开始 data.bEnd = true; data.audio = buffer; this.oral.oralEvaluation(param, data); } catch (Exception e) { }
如果 app下缺少 assets 目录,可以单击 app > New > Folder > Assets Folder 进行创建。




本地音频文件路径(可选)

根据本地音频文件路径,获取评测结果,默认采用流式分片评测。
try { String fileName = "hello.mp3"; File file = new File(this.getFilesDir(), fileName); if (file.exists()) { this.oral.oralEvaluation(param, file.getAbsolutePath()); } InputStream inputStream = this.getAssets().open(fileName); FileOutputStream outputStream = new FileOutputStream(file); byte[] buffer = new byte[10240]; int length; while ((length = inputStream.read(buffer)) > 0) { outputStream.write(buffer, 0, length); } outputStream.close(); inputStream.close(); this.oral.oralEvaluation(param, file.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); }

请求参数说明

TAIOralEvaluationParam 参数说明

参数
类型
必填
说明
context
Context
上下文
AppID
String
账号应用 ID,参考账号信息
timeout
Int
超时时间,默认30秒
secretId
String
您在控制台获取的密钥 ID,临时授权凭证的 TmpSecretId
secretKey
String
您在控制台获取的密钥 Key,临时授权凭证的 TmpSecretKey
token
String
临时授权凭证的 Token,仅在使用授权凭证时需要设置此参数
fileType
TAIOralEvaluationFileType
语音文件类型。
TAIOralEvaluationFileType.RAW: raw
TAIOralEvaluationFileType.WAV: wav
TAIOralEvaluationFileType.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
用于设置是否开启单词映射
isQuery
boolean
查询标识。true:查询请求
isAsync
boolean
异步模式标识。false:同步模式;true:异步模式
serviceTimeoutTryTimes
int
重试次数。使用查询标识的查询次数
serviceTimeoutWaitInterval
int
重试时间间隔。使用查询标识的重试时间间隔
cosBucketUrl
String
音频存储路径,将音频存储到 COS 桶中(1.2.3.117及以上版本支持)。使用参考音频存储路径

TAIOralEvaluationData 参数说明

参数
类型
必填
说明
seqId
Int
流式数据包的序号。取值范围[1,3000]。
bEnd
Boolean
是否传输完毕标志
audio
byte[]
音频数据
length
Long
音频数据长度

返回结果参数

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 参数
desc
String
详细错误描述
requestId
String
请求 ID,用于订单唯一标识