# 語音評測
語音評測(**SpeechEvaluator**)通過智能語音技術自動對發音水平進行評價、發音錯誤、缺陷進行定位和問題分析。目前評音評測提供漢語、英語兩種語言的評測,支持單字(漢語專有)、詞語 和句子朗讀三種題型。
評測的參數主要有
* 語言(LANGUAGE)
* 題型(ISE_CATEGORY)
* 結果等級(RESULT_LEVEL)
* 試題內容
~~~
// 設置評測語種
mSpeechEvaluator.setParameter(SpeechConstant.LANGUAGE, language);
// 設置評測題型
mSpeechEvaluator.setParameter(SpeechConstant.ISE_CATEGORY, category);
// 設置結果等級,不同等級對應不同的詳細程度
mSpeechEvaluator.setParameter(SpeechConstant.RESULT_LEVEL, resultLevel);
// evaText 為試題內容
mSpeechEvaluator.startEvaluating(evaText, null, mEvaluatorListener);
~~~
可通過setParameter設置的評測相關參數說明如下:
|參數|說明|是否必需|
| :---: | :---|:---:|
|language|評測語種,可選值:<br>en_us(英語)、zh_cn(漢語)|是|
|category|評測題型,可選值:<br>read_syllable(單字,漢語專有)、read_word(詞語)、<br>read_sentence(句子)、read_chapter(篇章)|是|
|text_encoding|上傳的試題編碼格式,可選值:<br>gb2312、utf-8。<br>當進行漢語評測時,必須設置成utf-8,<br>建議所有試題都使用utf-8編碼|是|
|vad_bos|前端點超時,默認5000ms|否|
|vad_eos|后端點超時,默認1800ms|否|
|speech_timeout|錄音超時,當錄音達到時限將自動觸發<br>vad停止錄音,默認-1(無超時)|否|
|result_level|評測結果等級,可選值:<br>plain、complete,默認為complete|否|
與評測相關的錯誤碼如下:
|錯誤碼|數值|含義|
| :---: | :---: | :---: |
|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|存在未登錄詞,即引擎中沒有該詞語的信息|
音頻流評測
在上述參數的基礎上添加參數設置:
~~~
//通過writeaudio方式直接寫入音頻時才需要此設置
mIse.setParameter(SpeechConstant.AUDIO_SOURCE,"-1");
~~~
以writeaudio的方式寫入音頻文件進行評測:
~~~
int ret = mIse.startEvaluating(evaText, null, mEvaluatorListener);
//在startEvaluating接口調用之后,加入以下方法,即可通過直接
//寫入音頻的方式進行評測業務
if (ret != ErrorCode.SUCCESS) {
showTip("識別失敗,錯誤碼:" + ret);
} else {
showTip(getString(R.string.text_begin_ise));
byte[] audioData = FucUtil.readAudioFile(IseDemo.this,"isetest.wav");
if(audioData != null) {
//防止寫入音頻過早導致失敗
try{
new Thread().sleep(100);
}catch (InterruptedException e) {
Log.d(TAG,"InterruptedException :"+e);
}
mIse.writeAudio(audioData,0,audioData.length);
mIse.stopEvaluating();
}
}
~~~
**評測試題和結果格式及字段含義詳見 [語音評測試題格式及結果說明](http://www.hmoore.net/iflytek_sdk/ise_protocol/325501) 文檔。**
**其它常見問題請參見 [科大訊飛語音評測 FAQ](http://www.hmoore.net/iflytek_sdk/faq_ise/326200) 文檔。**