公司网站制作工作室,大气的门户网站,C2C电商网站,潍坊地区制作网站在前面文章中简单玩了玩GIS的基本操作、Mark相关、AR、测距、加载三维白模、可扩展浮动操作和录音效果;今天抽空再来分享一下最近摸索的基于讯飞的离线语音识别效果,其实就简单用了一下离线命令词识别,看效果:1、先去控制台创建应用:https://console.xfyun.cn/app/myapp2、去组… 在前面文章中简单玩了玩GIS的基本操作、Mark相关、AR、测距、加载三维白模、可扩展浮动操作和录音效果;今天抽空再来分享一下最近摸索的基于讯飞的离线语音识别效果,其实就简单用了一下离线命令词识别,看效果:1、先去控制台创建应用:https://console.xfyun.cn/app/myapp2、去组合下载SDK(根据自己需求搭配):https://www.xfyun.cn/sdk/dispatcher3、然后就是参考文档了https://www.xfyun.cn/doc/asr/commandWord/Android-SDK.html4、最关键的一步绑定第三方库(请大佬“大白”给处理的)Xamarin.Android.IFlyMSC.1.1140.0-pre.6.nupkg5、在MainActivity设置Appid:SpeechUtility.CreateUtility(this, Com.Iflytek.Cloud.SpeechConstant.Appid 自己的id);6、接下来就和前一篇录音异曲同工,共享代码定义接口://开始识别
void StartRecognize();
//停止识别
void StopRecognize();
//获取识别结果事件
event GetResultData GetResultDataEvent;7、实现开始识别:/// summary
/// 开始识别
/// /summary
public void StartRecognize()
{if(Android.Content.PM.Permission.Denied Context.CheckSelfPermission(Android.Manifest.Permission.RecordAudio)){MainActivity.Instance.RequestPermissions(new string[]{Android.Manifest.Permission.RecordAudio}, 100);Toast.MakeText(Context, 请开启录音权限, ToastLength.Long).Show();return;}//初始化监听器MyIInitListener myIInitListener new MyIInitListener();//初始化识别对象mAsr SpeechRecognizer.CreateRecognizer(MainActivity.Instance, myIInitListener);//构建语法词BuildGrammar();//设置参数bool result SetParam();if(!result){Console.WriteLine(请先构建语法.);return;}MyIRecognizerListener myIRecognizerListener new MyIRecognizerListener();//获取识别结果委托myIRecognizerListener.ResultAcion GetResultData;//开始监听int mRet mAsr.StartListening(myIRecognizerListener);if(mRet ! ErrorCode.Success){Console.WriteLine($ 识别失败,错误码:{mRet});}
}8、创建命令词:private void BuildGrammar()
{//简单几个命令词string mContent #BNFIAT 1.0 UTF-8;!grammar call;!slotsendCode;!startsendCode;callStart:[sendCode];sendCode:开机|关机|开灯|关灯|呼叫十年|呼叫AY|呼叫龙哥|呼叫大白;;//清空参数mAsr.SetParameter(SpeechConstant.Params, null);// 设置文本编码格式mAsr.SetParameter(SpeechConstant.TextEncoding, utf-8);// 设置引擎类型mAsr.SetParameter(SpeechConstant.EngineType, mEngineType);// 设置语法构建路径mAsr.SetParameter(ResourceUtil.GrmBuildPath, grmPath);// 设置资源路径mAsr.SetParameter(ResourceUtil.AsrResPath, getResourcePath());构建语法监听器MyGrammarListener myGrammarListener new MyGrammarListener();int mRet mAsr.BuildGrammar(GRAMMAR_TYPE_BNF, mContent, myGrammarListener);if(mRet ! ErrorCode.Success){Console.WriteLine(语法构建失败,错误码 mRet);}
}9、设置参数:public bool SetParam()
{bool result false;// 清空参数mAsr.SetParameter(SpeechConstant.Params, null);// 设置识别引擎类型mAsr.SetParameter(SpeechConstant.EngineType, mEngineType);//设置本地识别资源mAsr.SetParameter(ResourceUtil.AsrResPath, getResourcePath());//设置语法构建路径以在本地识别时使用mAsr.SetParameter(ResourceUtil.GrmBuildPath, grmPath);// 设置返回结果格式mAsr.SetParameter(SpeechConstant.ResultType, mResultType);// 设置本地识别使用语法idmAsr.SetParameter(SpeechConstant.LocalGrammar, call);// 设置识别的门限值mAsr.SetParameter(SpeechConstant.MixedThreshold, 30);mAsr.SetParameter(SpeechConstant.Domain, iat);mAsr.SetParameter(SpeechConstant.NlpVersion, 2.0);mAsr.SetParameter(asr_sch, 1);result true;// 设置音频保存路径保存音频格式支持pcm、wav设置路径为sd卡请注意WRITE_EXTERNAL_STORAGE权限mAsr.SetParameter(SpeechConstant.AudioFormat, wav);string asrAudioPath Android.App.Application.Context.GetExternalFilesDir().AbsolutePath /asr.wav;mAsr.SetParameter(SpeechConstant.AsrAudioPath, asrAudioPath);return result;}10、关于停止识别:public void StopRecognize(){mAsr.StopListening();Console.WriteLine(停止识别);}11、关于SDKAPI 错误码查询:https://www.xfyun.cn/document/error-code最终简单的效果先这样吧;以后有时间的话,可以再去摸索一下更复杂的效果;编程不息、Bug不止、无Bug、无生活;改bug的冷静、编码的激情、完成后的喜悦、挖坑的激动 、填坑的兴奋;这也许就是屌丝程序员的乐趣吧;今天就到这里吧;希望自己有动力一步一步坚持下去;生命不息,代码不止;大家抽空可以看看今天分享的效果,有好的意见和想法,可以在留言板随意留言;我看到后会第一时间回复大家,多谢大家的一直默默的关注和支持!如果觉得不错,那就伸出您的小手点个赞并关注一下,多谢您的支持