3

我用來創建一個使用Windows語音識別引擎或SAPI的應用程序。它就像一個遊戲的發音,它給你正確的發音時得分。但是當我開始使用SAPI進行實驗時,除非您加載語法(XML),否則它的識別效果不佳,因此無法識別。可以在單詞發音遊戲中使用WIndows語音識別引擎嗎?

但現在的問題是距輸入文本最近的發音將被識別。 例如:

數據庫 - > dedebase - >正確。

即使您錯誤地發現它。它給你正確的答案。

不使用XML語法

時,你說它的數據庫給你「在基礎/基/數據庫/等等......」

請發表你的答案,建議,澄清。爲最佳答案投票。

is it possible or not? 

由我使用的項目Delphi編譯的方式....

回答

2

你想要的東西,它可能是最好不要使用的語法。但它要求用戶進行語音識別引擎的「最小」基本培訓。這不是很長,相對愉快。它確實對識別的準確性有所影響(相信我,我的英語口音強烈)。
它甚至可以作爲遊戲本身的初步練習。
您可能會發現有趣的,看看這個CodeRage 4 session"Speech Enabling Delphi Applications (zip)"

+0

謝謝!弗朗索瓦。鏈接在我的項目中很有用.... – XBasic3000 2010-05-19 05:01:13

4

我會做兩件事情:

  1. 使用ISpEnginePronunciation::GetPronunciations轉換原文音素。
  2. 使用聽寫語法和發音語言模型來強制SAPI給你一組音素 - 通過調用ISpRecoGrammar::LoadDictation(L「發音」,SPLO_STATIC)來完成此操作。
  3. 將識別的音素與目標音素進行比較。

注意ISpEnginePronunciation上不可SAPI 5.1,所以這僅限於Vista和Windows 7

+0

你有一點。我會盡力檢查。 – XBasic3000 2010-05-28 01:08:42

+1

使用'LoadDictation'與「發音」主題與使用默認主題並通過'ISpRecoResult'從'pszPronunciation'獲取手機之間有什麼區別? – 2010-11-19 19:00:03

+0

嗨,如何比較這兩個? – 2013-05-25 14:44:57

2

如果遊戲的一點是要鼓勵用戶使用發音最接近發言對於給定語言(例如EN-US)的「標準發音」,然後讓用戶訓練識別器以適應用戶的特定(未修改的)語音模式可能會適得其反。你會部分地訓練識別器,以便更加寬容用戶的發音失誤。無論你最終使用基於語法的識別還是基於聽寫的識別(Eric Brown的帖子看起來非常有前途),你可能還想看看「自信」分數。這些分數在識別完成後可用,並且它們給出了一個數字值,以表示識別器對用戶實際說的內容與識別器認爲用戶所說的內容相匹配的自信程度。根據識別器配置和使用情況,置信度分數可能有意義,也可能沒有意義。

如果您根據電話/音素/發音的文本表示來確定準確度分數,那麼使用Levenshtein距離來獲得準確性分數的一種快速而簡單的方法是一種自由執行許多實現的算法可在網上獲得。一個更好的評分算法可能是一個重新同步的差異,比較的原子單位是單個手機。

下面是MSDN文檔狩獵一些關鍵字:
ISpRecoResult - > GetPhrase - > SPPHRASE - >規則 - > SPPHRASERULE - > SREngineConfidence。

http://msdn.microsoft.com/en-us/library/ee413319%28v=vs.85%29.aspx
http://msdn.microsoft.com/en-us/library/ms720460%28v=VS.85%29.aspx

+0

嗨,如何獲得數值?輸出是SP_LOW_CONFIDENCE,SP_NORMAL_CONFIDENCE或SP_HIGH_CONFIDENCE – 2013-05-25 14:58:13

+0

@Knight SPPHRASEPROPERTY結構的SREngineConfidence字段有一個數字值。請參閱http://msdn.microsoft.com/en-us/library/ms720456(v=vs.85).aspx – 2013-05-25 18:00:10

+0

非常感謝您的回覆。我真的很感謝你的幫助 – 2013-05-26 18:04:10