/*** * * 离线、云端语音识别类 * */ public class AsrDemo extends Activity implements OnClickListener{ private static String TAG = AsrDemo.class.getSimpleName(); // 语音识别对象 private SpeechRecognizer mAsr; private Toast mToast; // 缓存 private SharedPreferences mSharedPreferences; // 本地语法文件 private String mLocalGrammar = null; // 本地词典 private String mLocalLexicon = null; // 云端语法文件 private String mCloudGrammar = null; // 本地语法构建路径 private String grmPath = Environment.getExternalStorageDirectory() .getAbsolutePath() + "/msc/test"; // 返回结果格式,支持:xml,json private String mResultType = "json"; private final String KEY_GRAMMAR_ABNF_ID = "grammar_abnf_id"; private final String GRAMMAR_TYPE_ABNF = "abnf"; private final String GRAMMAR_TYPE_BNF = "bnf"; private String mEngineType = "cloud"; private TtsUtils ttsUtils; private TtsOffUtil ttsOffUtil; @SuppressLint("ShowToast") public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.isrdemo); initLayout(); ttsUtils = new TtsUtils(); ttsOffUtil = new TtsOffUtil(this); // 初始化识别对象 mAsr = SpeechRecognizer.createRecognizer(this, mInitListener); // 初始化语法、命令词 mLocalLexicon = "张海羊\n刘婧\n王锋\n"; mLocalGrammar = FucUtil.readFile(this,"call.bnf", "utf-8"); mCloudGrammar = FucUtil.readFile(this,"grammar_sample.abnf","utf-8"); // 获取联系人,本地更新词典时使用 ContactManager mgr = ContactManager.createManager(AsrDemo.this, mContactListener); mgr.asyncQueryAllContactsName(); mSharedPreferences = getSharedPreferences(getPackageName(), MODE_PRIVATE); mToast = Toast.makeText(this,"",Toast.LENGTH_SHORT); } /** * 初始化Layout。 */ private void initLayout(){ findViewById(R.id.isr_recognize).setOnClickListener(this); findViewById(R.id.isr_grammar).setOnClickListener(this); findViewById(R.id.isr_lexcion).setOnClickListener(this); findViewById(R.id.isr_stop).setOnClickListener(this); findViewById(R.id.isr_cancel).setOnClickListener(this); //选择云端or本地 RadioGroup group = (RadioGroup)this.findViewById(R.id.radioGroup); group.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId == R.id.radioCloud) { ((EditText)findViewById(R.id.isr_text)).setText(mCloudGrammar); findViewById(R.id.isr_lexcion).setEnabled(false); mEngineType = SpeechConstant.TYPE_CLOUD; }else if(checkedId == R.id.radioLocal) { ((EditText)findViewById(R.id.isr_text)).setText(mLocalGrammar); findViewById(R.id.isr_lexcion).setEnabled(true); mEngineType = SpeechConstant.TYPE_LOCAL; } } }); } String mContent;// 语法、词典临时变量 int ret = 0;// 函数调用返回值 @Override public void onClick(View view) { if( null == mAsr ){ // 创建单例失败,与 21001 错误为同样原因,参考 http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=9688 this.showTip( "创建对象失败,请确认 libmsc.so 放置正确,\n 且有调用 createUtility 进行初始化" ); return; } if(null == mEngineType) { showTip("请先选择识别引擎类型"); return; } switch(view.getId()) { case R.id.isr_grammar: showTip("上传预设关键词/语法文件"); // 本地-构建语法文件,生成语法id if (mEngineType.equals(SpeechConstant.TYPE_LOCAL)) { ((EditText)findViewById(R.id.isr_text)).setText(mLocalGrammar); mContent = new String(mLocalGrammar); mAsr.setParameter(SpeechConstant.PARAMS, null); // 设置文本编码格式 mAsr.setParameter(SpeechConstant.TEXT_ENCODING,"utf-8"); // 设置引擎类型 mAsr.setParameter(SpeechConstant.ENGINE_TYPE, mEngineType); // 设置语法构建路径 mAsr.setParameter(ResourceUtil.GRM_BUILD_PATH, grmPath); //使用8k音频的时候请解开注释 // mAsr.setParameter(SpeechConstant.SAMPLE_RATE, "8000"); // 设置资源路径 mAsr.setParameter(ResourceUtil.ASR_RES_PATH, getResourcePath()); ret
科大讯飞 离线语音
发布时间:2024-11-24 20:12
如何使用语音助手查询科技资讯 #生活技巧# #科技数码#
科大讯飞 离线语音
最新推荐文章于 2024-10-22 11:14:35 发布
Super--Cat 于 2018-08-21 14:05:18 发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
网址:科大讯飞 离线语音 https://www.yuejiaxmz.com/news/view/242218
下一篇: 离线语音控制系统
相关内容
讯飞ai语音助手比亚迪和科大讯飞合作,将语音助手带上车
讯飞语音助手解决方案
轻生活科技|离线语音控制技术的研发与应用
两巨头官宣深度合作!科大讯飞携手比亚迪,将智能语音助手载上车
语音模块让窗帘更智能——离线语音控制技术的优势,语音控制,离线语音模块,轻生活科技
语音控制更便捷 科大讯飞AI电视助手带你体验不一样的智慧生活
免费离线语音识别sdk
离线语音控制
科大讯飞:深耕“AI+家庭”,夯实自主创新能力