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()); On my notebook I installed CZECH OS Vista で、OS の言語と音声認識の言語が違うのかもしれません。

英語以外の 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 + "  ";
            }
        }
      }
    }
4

1 に答える 1

0

に関する MSDN ドキュメントによるとDictationGrammar、引数のないコンストラクター

Windows デスクトップ スピーチ テクノロジによって提供される既定の口述文法の DictationGrammar クラスの新しいインスタンスを初期化します。

お使いのマシンで利用できるチェコ語のDicationGrammarクラスはありますか? そうでない場合は、1 つを作成し、もう 1 つのコンストラクターを使用してDictationGrammar(String)、URI から 1 つを読み込む必要があります。GrammarBuilderを使用して独自のものを作成し、ロードすることもできますSpeechRecognizer.LoadGrammar()

このリンクも役に立つかもしれません。2008年からですが、あなたVistaについて尋ねました。:-)

于 2013-01-31T00:00:42.937 に答える