使用 .NET 语音识别时出现 PlatformNotSupportedException

Sta*_*tan 6 c# voice platform speech-recognition

所以我正在尝试 C# 的语音识别,我正在使用 System.Speech.Recognition,并且,我在互联网上搜索,尝试了一些基本语音识别的几段代码,我能找到的最好的就是这个:

using System;
using System.Text;
using System.Windows.Forms;
using System.Speech.Recognition;

namespace SpeechRecognition
{
    public partial class MainForm : Form
    {

        SpeechRecognitionEngine recognitionEngine; 


        public MainForm()
        {
            InitializeComponent();

            Initialize();
        }

        private void Initialize()
        {
            recognitionEngine = new SpeechRecognitionEngine();
            recognitionEngine.SetInputToDefaultAudioDevice();
            recognitionEngine.SpeechRecognized += (s, args) =>
            {
                foreach (RecognizedWordUnit word in args.Result.Words)
                {
                    // You can change the minimun confidence level here
                    if (word.Confidence > 0.8f)
                        freeTextBox.Text += word.Text + " ";
                }
                freeTextBox.Text += Environment.NewLine;
            };
        }

        private void startButton_Click(object sender, EventArgs e)
        {
            try
            {
                recognitionEngine.UnloadAllGrammars();
                recognitionEngine.LoadGrammar(new DictationGrammar());
                RecognitionResult result = recognitionEngine.Recognize(new TimeSpan(0, 0, 20));

                if (result != null)
                {
                    foreach (RecognizedWordUnit word in result.Words)
                    {

                        freeTextBox.Text += word.Text + " ";
                    }
                }

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

        private void startAsyncButton_Click(object sender, EventArgs e)
        {
            recognitionEngine.UnloadAllGrammars();
            recognitionEngine.LoadGrammar(new DictationGrammar());
            recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
        }



        private void stopButton_Click(object sender, EventArgs e)
        {
            recognitionEngine.RecognizeAsyncStop();
        }


        private void startAsyncGrammarButton_Click(object sender, EventArgs e)
        {         
            try
            {
                recognitionEngine.UnloadAllGrammars();

                Grammar cg = CreateSampleGrammar();
                recognitionEngine.LoadGrammar(cg);
                recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }


        private Grammar CreateSampleGrammar()
        {
            Choices commandChoices = new Choices("Calculator", "Notepad", "Internet Explorer", "Paint");
            GrammarBuilder grammarBuilder = new GrammarBuilder("Start");
            grammarBuilder.Append(commandChoices);
            Grammar g = new Grammar(grammarBuilder);
            g.Name = "Available programs";
            return g;
        }

    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我尝试了这个以及其他一些,它们都导致了相同的错误,即 PlatformNotSupportedException,错误中显示:“没有安装识别器”。

有没有办法解决?我运行的是 Windows 7 64 位。

Mat*_*son 2

语音平台运行时 11 和语音平台 SDK 11 不包括用于语音识别或语音合成(TTS 或文本转语音)的运行时语言。您必须单独安装它们。运行时语言包括语言模型、声学模型以及提供语音引擎以执行特定语言的语音识别或 TTS 所需的其他数据。有单独的运行时语言用于语音识别或语音合成。您下载的运行时语言版本(例如版本 11.0)必须与您已安装的语音平台运行时版本匹配。您可以使用此链接下载运行时语言。

来自http://msdn.microsoft.com/en-us/library/hh362873.aspx

我认为您使用的是 .NET 附带的版本,但从那时起已经发布了几个版本。Microsoft 语音服务 v11 是今天的最新版本。如果安装 SDK、添加引用并将命名空间更改为 Microsoft.Speech(而不是 System.Speech),则应该进行更新。