[英]How to use System.Speech on non-English Win Vista Business
我想嘗試語音識別來控制程序。 我用C#編寫了測試程序,調試時每次都會發生錯誤-
System.Runtime.InteropServices.COMException (0x80004005): Calling part of COM return error HRESULT E_FAIL.*
in System.Speech.Recognition.RecognizerBase.Initialize(SapiRecognizer recognizer, Boolean inproc)
in System.Speech.Recognition.SpeechRecognitionEngine.get_RecoBase()
in System.Speech.Recognition.SpeechRecognitionEngine.LoadGrammar(Grammar grammar)
看來錯誤是由engine.LoadGrammar(new DictationGrammar());
引起的engine.LoadGrammar(new DictationGrammar());
在我的筆記本上,我安裝了CZECH OS Vista,這也許是語音識別語言與OS語言不同的問題。
有沒有一種方法可以在非英語操作系統中使用system.speech進行開發,還是我在某些步驟上錯了? 語言沒有問題,我想使用英語進行語音識別,但是我無法獲得英語Vista或MUI語言包。
完整代碼如下。
非常感謝!
using System;
using System.Windows;
using System.Speech.Recognition;
namespace rozpoznani_reci_WPF
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
SpeechRecognitionEngine engine = new SpeechRecognitionEngine();
try
{
engine.LoadGrammar(new DictationGrammar());
engine.SetInputToDefaultAudioDevice();
engine.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
}
catch(Exception e)
{
//MessageBox.Show(e.ToString());
textBox1.Text = e.ToString();
}
}
void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result != null)
{
textBox1.Text = e.Result.Text + " ";
}
}
}
}
根據DictationGrammar
的MSDN文檔,無參數構造函數
為Windows桌面語音技術提供的默認聽寫語法初始化DictationGrammar類的新實例。
您的機器上是否有捷克語DicationGrammar
類? 如果不是,則需要創建一個並使用其他構造函數DictationGrammar(String)
並從URI中加載一個。 您也可以使用GrammarBuilder
構造自己的文件並加載它,而不是使用SpeechRecognizer.LoadGrammar()
。
您可能還會發現此鏈接有用。 是從2008年開始的,但您確實詢問過Vista。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.