Запуск базовой программы распознавания речи с Windows 7 в C # VS 2010, он компилируется, но не запускается - PullRequest
0 голосов
/ 29 апреля 2011

Недавно я пытался написать базовое распознавание речи с использованием C # (WinFormsApp) в VS 2010 на компьютере Windows 7 Dell.Мне удалось заставить его работать, используя базовые примеры от Microsoft (http://msdn.microsoft.com/en-us/magazine/cc163663.aspx#S5) и с подобных форумов). Однако мне нужно было сменить компьютер, и теперь я пытаюсь повторить это на компьютере Lenovo с теми же характеристиками.фактически не работает, распознавание речи продолжает мешать работе программы, и когда я перешел на SpeechRecognitionEngine, она все равно не запускается. Я могу скомпилировать без ошибок, но не вижу результата, то есть, MessageBox показывает e.Result.Text.

Мой код ниже:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Speech.Recognition;
using System.Threading;

namespace SpeechRecogTest
{
    public partial class Form1 : Form
    {
        SpeechRecognitionEngine sr = new SpeechRecognitionEngine(); 

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //Create grammar
            Choices words = new Choices(); 
            words.Add("Hi");
            words.Add("No");
            words.Add("Yes");

            Grammar wordsList = new Grammar(new GrammarBuilder(words));

            wordsList.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(rec_SpeechRecognized);
            sr.LoadGrammar(wordsList);

        }

        void rec_SpeechRecognized(object sender, RecognitionEventArgs e)
        {
            MessageBox.Show(e.Result.Text);
        }
    }
}

Я был бы очень признателен за вашу помощь. Я почти уверен, что установил все SDK, включая SAPI5.1, Windows SDK v7.0 и v7.1, я также включил речевые библиотеки для COM и NET, и я создал синтезатор, который работает.

1 Ответ

2 голосов
/ 29 апреля 2011

Вы загрузили грамматику, но когда-либо вызывали sr.RecognizeAsync ();

Вы должны вызвать либо Recognize () для синхронного распознавания, либо RecognizeAsync () для выполнения распознавания. Вы не сделали ни того, ни другого.

Предполагая, что вы записываете аудио с звуковой карты, после загрузки грамматики попробуйте:

sr.SetInputToDefaultAudioDevice();
sr.RecognizeAsync();

Чтобы начать работу с речью .NET, есть очень хорошая статья, опубликованная несколько лет назад в http://msdn.microsoft.com/en-us/magazine/cc163663.aspx. Это, пожалуй, лучшая вступительная статья, которую я когда-либо нашел. Это немного устарело, но очень полезно. (Метод AppendResultKeyValue был удален после бета-тестирования.)

...