1. 语音评测
语音评测(SpeechEvaluator)通过智能语音技术自动对发音水平进行评价、发音错误、缺陷进行定位和问题分析。目前评音评测提供汉语、英语两种语言的评测,支持单字(汉语专有)、词语 和句子朗读三种题型。
1.1.1. 评测的参数主要有:
- 语言(LANGUAGE)
- 题型(ISE_CATEGORY)
- 结果等级(RESULT_LEVEL)
- 试题内容
1. // 设置评测语种
2. mSpeechEvaluator.setParameter(SpeechConstant.LANGUAGE, language);
4. // 设置评测题型
5. mSpeechEvaluator.setParameter(SpeechConstant.ISE_CATEGORY, category);
7. // 设置结果等级,不同等级对应不同的详细程度
8. mSpeechEvaluator.setParameter(SpeechConstant.RESULT_LEVEL, resultLevel);
10. // evaText 为试题内容
11. mSpeechEvaluator.startEvaluating(evaText, null, mEvaluatorListener);
1.1.2. 可通过setParameter设置的评测相关参数说明如下:
| 参数 | 说明 | 是否必需 |
|---|---|---|
| language | 评测语种,可选值:en_us(英语)、zh_cn(汉语) | 是 |
| category | 评测题型,可选值:read_syllable(单字,汉语专有)、read_word(词语)、read_sentence(句子)、read_chapter(篇章) | 是 |
| text_encoding | 上传的试题编码格式,可选值:gb2312、utf-8。当进行汉语评测时,必须设置成utf-8,建议所有试题都使用utf-8编码 | 是 |
| vad_bos | 前端点超时,默认5000ms | 否 |
| vad_eos | 后端点超时,默认1800ms | 否 |
| speech_timeout | 录音超时,当录音达到时限将自动触发vad停止录音,默认-1(无超时) | 否 |
| result_level | 评测结果等级,可选值:plain、complete,默认为complete | 否 |
1.1.3. 与评测相关的错误码如下:
| 错误码 | 数值 | 含义 |
|---|---|---|
| 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 | 存在未登录词,即引擎中没有该词语的信息 |
1.1.4. 音频流评测
在上述参数的基础上添加参数设置:
1. //通过writeaudio方式直接写入音频时才需要此设置
2. mIse.setParameter(SpeechConstant.AUDIO_SOURCE,"-1");
以writeaudio的方式写入音频文件进行评测:
1. int ret = mIse.startEvaluating(evaText, null, mEvaluatorListener);
2. //在startEvaluating接口调用之后,加入以下方法,即可通过直接
3. //写入音频的方式进行评测业务
4. if (ret != ErrorCode.SUCCESS) {
5. showTip("识别失败,错误码:" + ret);
6. } else {
7. showTip(getString(R.string.text_begin_ise));
8. byte[] audioData = FucUtil.readAudioFile(IseDemo.this,"isetest.wav");
9. if(audioData != null) {
10. //防止写入音频过早导致失败
11. try{
12. new Thread().sleep(100);
13. }catch (InterruptedException e) {
14. Log.d(TAG,"InterruptedException :"+e);
15. }
16. mIse.writeAudio(audioData,0,audioData.length);
17. mIse.stopEvaluating();
18. }
19. }
评测试题和结果格式及字段含义详见 语音评测试题格式及结果说明 文档。
其它常见问题请参见 科大讯飞语音评测 FAQ 文档。
