1. 程式人生 > >winform程式實現中文語音識別

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介紹以其及語音識別過程