winform程式實現中文語音識別
最近需要給自己開發的軟體新增語音導航功能,百度+摸索終於實現了,不過比較簡陋,分享出來供大家娛樂批評!
現在市場上的語音引擎不多,有微軟SAPI、googgle、訊飛,經過多番比較最終決定使用微軟SAPI 5.1,原因是免費,便於我整合到winform程式裡。
首先,要實現微軟的這個語音識別需要幾個東西:
1.安裝微軟SAPI 5.1 SDK
2.安裝中文語言包
這兩個東西網上都可以下載到,自己找吧!
然後,開始實現吧。
由於微軟的語音引擎是微軟的,也就是人家外國人做的,中文識別方面當然沒有國內的訊飛好了,所以就在語音連續識別和命令詞識別之間取捨,為了識別率高點所以採用命令詞識別的方法實現。
核心程式碼:
private static SpRecofnition _Instance = null;
private ISpeechRecoGrammar isrg;
private SpShareRecoContext ssrContext = null;
private void Function()
{
ssrContext = new SpShareRecoContext();
isrg = ssrContext.CreateGrammar(1);
isrg.CmdLoadFromFile(Application.StartuoPath + "\\1.xml",SpeechLoadOption.SLODynamic);
ssrContext.recognition += new _ISpeechRecoContextEvents_RecofnitionEventHandler(ContextRecognition);
isrg.CmdSetRuleState(isrg.Rules.Item(0).Name,SpeechRuleState.SGDSActive);
}
1.xml是語法檔案
<?xml version="1.0" encoding="gb2312">
<GRAMMAR LANGID="804">
<RULE NAME="命令" TOPLEVEL="ACTIVE">
<L>
<p>你好</p>
<p>我好</p>
<p>他好</p>
</L>
</RULE>
</GRAMMAR>
注:記得要在控制面板裡把語音切換到中文上,否則會報錯的!
如果你對微軟SAPI沒有一點了解的話,可能會看不懂我寫的東西,此處給個連結先了解一下微軟SAPI。微軟語音SAPI介紹以其及語音識別過程