ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
提供汉语、英语两种语言的评测,支持单字(汉语专有)、词语和句子朗读三种题型,通过简单地接口调用就可以集成到您的应用中。语音评测的使用主要有三个步骤: ![](https://box.kancloud.cn/fb732641c2fe81fef04e289286f53a37_605x69.png) ~~~ // 获取评测对象单例 _iFlySpeechEvaluator = [IFlySpeechEvaluator sharedInstance]; _iFlySpeechEvaluator.delegate = self; // 设置训练参数 // 清空参数 [_iFlySpeechEvaluator setParameter:@"" forKey:[IFlySpeechConstant PARAMS]]; // 设置评测采样率 [self.iFlySpeechEvaluator setParameter:@"16000" forKey:[IFlySpeechConstant SAMPLE_RATE]]; // 设置评测题目编码,如果是utf-8格式,请添加bom头,添加方式可参考demo。 [self.iFlySpeechEvaluator setParameter:@"utf-8" forKey:[IFlySpeechConstant TEXT_ENCODING]]; // 设置评测题目结果格式,目前仅支持xml [self.iFlySpeechEvaluator setParameter:@"xml" forKey:[IFlySpeechConstant ISE_RESULT_TYPE]]; // 设置评测前端点超时 [self.iFlySpeechEvaluator setParameter:self.iseParams.bos forKey:[IFlySpeechConstant VAD_BOS]]; // 设置评测后端点超时 [self.iFlySpeechEvaluator setParameter:self.iseParams.eos forKey:[IFlySpeechConstant VAD_EOS]]; // 设置评测题型 [self.iFlySpeechEvaluator setParameter:self.iseParams.category forKey:[IFlySpeechConstant ISE_CATEGORY]]; // 设置评测语言 [self.iFlySpeechEvaluator setParameter:self.iseParams.language forKey:[IFlySpeechConstant LANGUAGE]]; // 设置评测结果级别 [self.iFlySpeechEvaluator setParameter:self.iseParams.rstLevel forKey:[IFlySpeechConstant ISE_RESULT_LEVEL]]; // 设置评测超时 [self.iFlySpeechEvaluator setParameter:self.iseParams.timeout forKey:[IFlySpeechConstant SPEECH_TIMEOUT]]; ~~~ 可通过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|否| 实现协议: ~~~ //语音评测实现Delegate // 音量和数据回调 - (void)onVolumeChanged:(int)volume buffer:(NSData *)buffer{} // 开始录音回调 - (void)onBeginOfSpeech{} // 停止录音回调 - (void)onEndOfSpeech{} // 会话取消回调 - (void)onCancel{} // 评测错误回调 - (void)onError:(IFlySpeechError *)errorCode{} // 评测结果回调 - (void)onResults:(NSData *)results isLast:(BOOL)isLast{} ~~~ 调用startListening即开始评测录音,读完试题内容后可以调用 stopListening停止录音,也可以在一段时间后由SDK自动检测VAD并停止录音。当评测出错时,SDK会回调onError方法抛出IFlySpeechError 错误,通过IFlySpeechError的getErrorCode()方法可获得错误码,常见的错误码详见 [附录](附录.md) 错误码列表和下表: |错误码|数值|含义| | :---: | :---: | :---: | |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|存在未登录词,即引擎中没有该词语的信息| **解析评测结果**: SDK通过onResult回调抛出XML格式的评测结果,**结果格式及字段含义详见 [语音评测试题格式及结果说明](http://www.kancloud.cn/iflytek_sdk/ise_protocol/325501) 文档**,具体解析过程可参考Demo工程IFlyMscDemo中ISE 目录下Result目录中的源代码。 ![](https://box.kancloud.cn/17885dc836b90805b24a2ead0bd50b8b_336x268.jpg) **其它常见问题请参见 [科大讯飞语音评测 FAQ](http://www.kancloud.cn/iflytek_sdk/faq_ise/326200) 文档。** ## 音频流评测 音频流评测功能可以让开发者将已录制好的音频数据写入评测控件,最后得到评测结果。 ~~~ //设置音频源为音频流(-1) [self.iFlySpeechEvaluatorr setParameter:@"-1" forKey:@"audio_source"]; //启动评测服务 [self.iFlySpeechEvaluator startListening:buffer params:nil]; //写入音频数据 NSData *data = [NSData dataWithContentsOfFile:_pcmFilePath]; //从文件中读取音频 [self.iFlySpeechEvaluator writeAudio:data];//写入音频,让SDK评测。建议将音频数据分段写入。 //音频写入结束或出错时,必须调用结束评测接口 [self.iFlySpeechEvaluator stopListening];//音频数据写入完成,进入等待状态 ~~~