1.1. 语音听写
语音听写能力,目前msc sdk支持在线和离线模式,其相关调用说明如下:
1.1.1. 1.在线听写
sdk提供了两种识别方式,分别为带UI识别和无UI方式:
一.无UI识别
1. //初始化识别无UI识别对象
2. //使用SpeechRecognizer对象,可根据回调消息自定义界面;
3. mIat = SpeechRecognizer.createRecognizer(IatDemo.this, mInitListener);
5. //设置语法ID和 SUBJECT 为空,以免因之前有语法调用而设置了此参数;或直接清空所有参数,具体可参考 DEMO 的示例。
6. mIat.setParameter( SpeechConstant.CLOUD_GRAMMAR, null );
7. mIat.setParameter( SpeechConstant.SUBJECT, null );
8. //设置返回结果格式,目前支持json,xml以及plain 三种格式,其中plain为纯听写文本内容
9. mIat.setParameter(SpeechConstant.RESULT_TYPE, "json");
10. //此处engineType为“cloud”
11. mIat.setParameter( SpeechConstant.ENGINE_TYPE, engineType );
12. //设置语音输入语言,zh_cn为简体中文
13. mIat.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
14. //设置结果返回语言
15. mIat.setParameter(SpeechConstant.ACCENT, "mandarin");
16. // 设置语音前端点:静音超时时间,单位ms,即用户多长时间不说话则当做超时处理
17. //取值范围{1000~10000}
18. mIat.setParameter(SpeechConstant.VAD_BOS, "4000");
19. //设置语音后端点:后端点静音检测时间,单位ms,即用户停止说话多长时间内即认为不再输入,
20. //自动停止录音,范围{0~10000}
21. mIat.setParameter(SpeechConstant.VAD_EOS, "1000");
22. //设置标点符号,设置为"0"返回结果无标点,设置为"1"返回结果有标点
23. mIat.setParameter(SpeechConstant.ASR_PTT,"1");
25. //开始识别,并设置监听器
26. mIat.startListening(mRecogListener);
二.带UI识别
1. // 初始化听写Dialog,如果只使用有UI听写功能,无需创建SpeechRecognizer
2. // 使用UI听写功能,请根据sdk文件目录下的notice.txt,放置布局文件和图片资源
3. mIatDialog = new RecognizerDialog(IatDemo.this, mInitListener);
5. //以下为dialog设置听写参数
6. mIatDialog.setParams("xxx","xxx");
7. ....
9. //开始识别并设置监听器
10. mIatDialog.setListener(mRecognizerDialogListener);
11. //显示听写对话框
12. mIatDialog.show();
具体配置信息,请参考后面识别对话框的内容
1.1.2. 2.离线听写
离线听写与在线听写主要差别在于引擎类型和听写资源:
1. //此处engineType为“local”
2. mIat.setParameter( SpeechConstant.ENGINE_TYPE, engineType );
3. if (mEngineType.equals(SpeechConstant.TYPE_LOCAL)) {
4. // 设置本地识别资源
5. mIat.setParameter(ResourceUtil.ASR_RES_PATH, getResourcePath());
6. }
resourcce设置种包含两个资源,common.jet 和 sms_16k.jet,从资源配置中可以看出,目前离线听写仅支持16k音频
1. private String getResourcePath(){
2. StringBuffer tempBuffer = new StringBuffer();
3. //识别通用资源
4. tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, "iat/common.jet"));
5. tempBuffer.append(";");
6. tempBuffer.append(ResourceUtil.generateResourcePath(this, ResourceUtil.RESOURCE_TYPE.assets, "iat/sms_16k.jet"));
7. //识别8k资源-使用8k的时候请解开注释
8. return tempBuffer.toString();
9. }
在线听写应用可以通过上传词典(又称个性化用户热词),提高听写的匹配率,参考后面更新词典的章节。
