日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Xamarin效果第二十三篇之离线语音识别

發布時間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Xamarin效果第二十三篇之离线语音识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前面文章中簡單玩了玩GIS的基本操作、Mark相關、AR、測距、加載三維白模、可擴展浮動操作和錄音效果;今天抽空再來分享一下最近摸索的基于訊飛的離線語音識別效果,其實就簡單用了一下離線命令詞識別,看效果:

1、先去控制臺創建應用:

https://console.xfyun.cn/app/myapp

2、去組合下載SDK(根據自己需求搭配):

https://www.xfyun.cn/sdk/dispatcher

3、然后就是參考文檔了:

https://www.xfyun.cn/doc/asr/commandWord/Android-SDK.html

4、最關鍵的一步綁定第三方庫(請大佬“大白”給處理的):

Xamarin.Android.IFlyMSC.1.1140.0-pre.6.nupkg

5、在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 = @"#BNF+IAT 1.0 UTF-8;!grammar call;!slot<sendCode>;!start<sendCode>;<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、關于SDK&API 錯誤碼查詢:

https://www.xfyun.cn/document/error-code

最終簡單的效果先這樣吧;以后有時間的話,可以再去摸索一下更復雜的效果;編程不息、Bug不止、無Bug、無生活;改bug的冷靜、編碼的激情、完成后的喜悅、挖坑的激動 、填坑的興奮;這也許就是屌絲程序員的樂趣吧;今天就到這里吧;希望自己有動力一步一步堅持下去;生命不息,代碼不止;大家抽空可以看看今天分享的效果,有好的意見和想法,可以在留言板隨意留言;我看到后會第一時間回復大家,多謝大家的一直默默的關注和支持!如果覺得不錯,那就伸出您的小手點個贊并關注一下,多謝您的支持!

總結

以上是生活随笔為你收集整理的Xamarin效果第二十三篇之离线语音识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。