0

我想尝试语音识别来控制程序。我用 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()); 我的笔记本上我安装了 CZECH OS Vista 引起的,这可能是语音识别语言与操作系统语言不同的问题。

有没有办法在非英语操作系统中使用 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 + "  ";
            }
        }
      }
    }
4

1 回答 1

0

根据 MSDN 文档DictationGrammar,无参数构造函数

为 Windows 桌面语音技术提供的默认听写语法初始化 DictationGrammar 类的新实例。

DicationGrammar您的机器上有捷克语课程吗?如果没有,您需要创建一个并使用另一个构造函数DictationGrammar(String)并从 URI 加载一个。您也可以使用GrammarBuilder来构建自己的并使用SpeechRecognizer.LoadGrammar().

您可能还会发现此链接很有用;它是从 2008 年开始的,但您确实询问过 Vista。:-)

于 2013-01-31T00:00:42.937 回答