C # Распознавание речи - PullRequest
6 голосов
/ 25 февраля 2009

Здесь есть пост об этом ... но он не работает для меня. Я добавил system.speech.dll, который нашел в Интернете, но не могу использовать System.speech, потому что он не отображается.

Ошибка 1 Не удалось найти тип или имя пространства имен SpeechRecognizer (отсутствует директива using или ссылка на сборку?)

Ошибка 2 Не удалось найти имя типа или пространства имен SpeechRecognizedEventArgs (отсутствует директива using или ссылка на сборку?)

Я использовал этот код. Я использую Windows Vista 64

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 SpeechLib;
using System.Threading;


namespace WindowsFormsApplication13
{
    public partial class Form1 : Form
    {

        SpeechRecognizer rec = new SpeechRecognizer();

        public Form1()
        {
            InitializeComponent();
            rec.SpeechRecognized += rec_SpeechRecognized;
        }

        void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            lblLetter.Text = e.Result.Text;
        }


        private void Form1_Load(object sender, EventArgs e)
        {
            var c = new Choices();

            // Doens't work must use English words to add to Choices and
            // populate grammar.
            //
            //for (var i = 0; i <= 100; i++)
            //  c.Add(i.ToString());

            c.Add("one");
            c.Add("two");
            c.Add("three");
            c.Add("four");
            c.Add("Five");
            c.Add("six");
            c.Add("seven");
            c.Add("eight");
            c.Add("nine");
            c.Add("ten");

            // etc...

            var gb = new GrammarBuilder(c);
            var g = new Grammar(gb);
            rec.LoadGrammar(g);
            rec.Enabled = true;
        }
    }
}

Ответы [ 5 ]

4 голосов
/ 25 февраля 2009

Я согласен с Джеймсом Огденом. Кроме того, вы должны добавить выражение "using":

using System.Speech.Recognition

Или полностью определите названия своих классов.

4 голосов
/ 25 февраля 2009

1) Вам необходимо добавить ссылку на System.Speech в вашем проекте

2) Вам не нужно было искать 'System.Speech.dll' в Интернете, он должен быть в .Net 3 (или 3.5, но в любом случае получить 3.5, если у вас нет веских причин не делать этого)

Edit:

Возможно, вы захотите посмотреть здесь:

http://dotnet.org.za/beta/archive/2008/01/06/system-speech-recognition.aspx

1 голос
/ 16 марта 2009

Убедитесь, что у вас есть языковой движок, соответствующий языку, который вы настроили в Vista. Смотри http://support.microsoft.com/kb/934377

0 голосов
/ 18 декабря 2010

У меня проблема с классом SpeechRecognizer в Windows XP. иногда это работает, но иногда это не работает, и необходимо перезагрузить компьютер. на windows 7 работает нормально. Я думаю, что это некоторая проблема в самом речевом движке, потому что, когда я запускаю свое приложение несколько раз, оно перестает работать.

Я использую этот код:

с использованием системы; using System.Collections.Generic; using System.ComponentModel; используя System.Data; использование System.Drawing; использование System.Linq; используя System.Text; использование System.Windows.Forms; используя SpeechLib; используя System.Threading;

пространство имен WindowsFormsApplication13 { открытый частичный класс Form1: Form {

    SpeechRecognizer rec = new SpeechRecognizer();

    public Form1()
    {
        InitializeComponent();
        rec.SpeechRecognized += rec_SpeechRecognized;
    }

    void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        lblLetter.Text = e.Result.Text;
    }


    private void Form1_Load(object sender, EventArgs e)
    {
        var c = new Choices();


        c.Add("one");
        c.Add("two");
        c.Add("three");
        c.Add("four");
        c.Add("Five");
        c.Add("six");
        c.Add("seven");
        c.Add("eight");
        c.Add("nine");
        c.Add("ten");

        // etc...

        var gb = new GrammarBuilder(c);
        var g = new Grammar(gb);
        rec.LoadGrammar(g);
        rec.Enabled = true;
    }
}

}

0 голосов
/ 26 февраля 2009

Хотя это не относится непосредственно к вышеупомянутому вопросу - стоит отметить, что Speech SDK не всегда будет доступен на каждом клиентском компьютере. В то время как Vista включает в себя распознаватель речи, XP не имеет. Возможный способ исправить это - заставить пользователей XP установить Speech SDK, в который входит один. Другой вариант - добавить Office 2003 (не 2007) в качестве зависимости.

...