以下是最近使用到的一个SDK语音评测方面的开发指南,仅供大家参考。
这个SDK目前具备的语音评测功能,包括汉语、英语两种语言的评测,支持单字(汉语专有)、词语和句子朗读三种题型,通过简单地接口调用就可以集成到您的应用中。语音评测的使用主要有三个步骤:【SDK使用的是中国移动灵犀云智能语音平台的】
a.创建对象和设置参数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
// 创建评测对象
SpeechEvaluator mSpeechEvaluator = SpeechEvaluator.createEvaluator(
IseDemoActivity. this , null );
// 设置评测语种
mSpeechEvaluator.setParameter(SpeechConstant.LANGUAGE, "en_us" );
// 设置评测题型
mSpeechEvaluator.setParameter(SpeechConstant.ISE_CATEGORY, "read_word" );
// 设置试题编码类型
mSpeechEvaluator.setParameter(SpeechConstant.TEXT_ENCODING, "utf-8" );
// 设置前、后端点超时
mSpeechEvaluator.setParameter(SpeechConstant.VAD_BOS, vad_bos);
mSpeechEvaluator.setParameter(SpeechConstant.VAD_EOS, vad_eos);
// 设置录音超时,设置成-1则无超时限制
mSpeechEvaluator.setParameter(SpeechConstant.KEY_SPEECH_TIMEOUT, "-1" );
// 设置结果等级,不同等级对应不同的详细程度
mSpeechEvaluator.setParameter(SpeechConstant.RESULT_LEVEL, "complete" );
|
可通过setParameter设置的评测相关参数说明如下:
参数 | 说明 | 是否必需 |
language | 评测语种,可选值:en_us(英语)、zh_cn(汉语) | 是 |
category | 评测题型,可选值:read_syllable(单字,汉语专有)、read_word(词语)、read_sentence(句子) | 是 |
text_encoding | 上传的试题编码格式,可选值:gb2312、utf-8。当进行汉语评测时,必须设置成utf-8,建议所有试题都使用utf-8编码 | 是 |
vad_bos | 前端点超时,默认5000ms | 否 |
vad_eos | 后端点超时,默认1800ms | 否 |
speech_timeout | 录音超时,当录音达到时限将自动触发vad停止录音,默认-1(无超时) | 否 |
result_level | 评测结果等级,可选值:plain、complete,默认为complete | 否 |
b.上传评测试题和录音
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
// 首先创建一个评测监听接口
private EvaluatorListener mEvaluatorListener = new EvaluatorListener() {
// 结果回调,评测过程中可能会多次调用该方法,isLast为true则为最后结果
public void onResult(EvaluatorResult result, boolean isLast) {}
// 出错回调
public void onError(SpeechError error) {}
// 开始说话回调
public void onBeginOfSpeech() {}
// 说话结束回调
public void onEndOfSpeech() {}
// 音量回调
public void onVolumeChanged( int volume) {}
// 扩展接口,暂时没有回调
public void onEvent( int eventType, int arg1, int arg2, Bundle obj) {}
};
// 然后设置评测试题、传入监听器,开始评测录音。evaText为试题内容,试题格式详见《语音
// 评测参数、结果说明文档》,第二个参数为扩展参数,请设置为null
mSpeechEvaluator.startEvaluating(evaText, null , mEvaluatorListener);
|
错误码 | 错误值 | 含义 |
MSP_ERROR_ASE_EXCEP_SILENCE | 11401 | 无语音或音量太小 |
MSP_ERROR_ASE_EXCEP_SNRATIO | 11402 | 信噪比低或有效语音过短 |
MSP_ERROR_ASE_EXCEP_PAPERDATA | 11403 | 非试卷数据 |
MSP_ERROR_ASE_EXCEP_PAPERCONTENTS | 11404 | 试卷内容有误 |
MSP_ERROR_ASE_EXCEP_NOTMONO | 11405 | 录音格式有误 |
MSP_ERROR_ASE_EXCEP_OTHERS | 11406 | 其他评测数据异常,包括错读、漏读、恶意录入、试卷内容等错误 |
MSP_ERROR_ASE_EXCEP_PAPERFMT | 11407 | 试卷格式有误 |
MSP_ERROR_ASE_EXCEP_ULISTWORD | 11408 | 存在未登录词,即引擎中没有该词语的信息 |
c.解析测评结果
SDK通过onResult回调抛出xml格式的评测结果,结果格式及字段含义详见《Speech Evaluation API Documents》文档(含于所下载的SDK包内),具体的解析过程可参考demo工程com.iflytek.ise.result包中的源代码。