2010-09-04 2 views
1

Эта программа генерирует исключение, как я могу это решить?C# program exception

Исключение: «Распознавание речи недоступно в этой системе. Двигатели SAPI и распознавания речи не могут быть найдены».

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(); 
     for (var i = 0; i <= 100; i++) 
      c.Add(i.ToString()); 
     var gb = new GrammarBuilder(c); 
     var g = new Grammar(gb); 
     rec.LoadGrammar(g); 
     rec.Enabled = true; 

    } 
+8

Что-нибудь неясно о сообщении об ошибке, которое вы получаете? Для меня это довольно просто. Установите механизмы SAPI и распознавания речи в своей системе, поскольку мы не можем, потому что у нас нет доступа к вашей системе. –

+0

Они не установлены по умолчанию в серверных версиях Windows. –

ответ

1

Ну это звучит, как вы не имеете необходимые компоненты, установленные в вашей системе, или, возможно, вы не работают в полном доверенных приложений:

Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Дополнительные сведения см. В разделе Использование библиотек из частично доверенного кода.

Source

Хотя я бы думал, что вы получите другую ошибку от этого. Эта проблема возникает на всех машинах или только на одном или двух? Если это последний, это указывает на то, что они не являются необходимыми компонентами.

Попробуйте переместить инициализацию объекта SpeechRecognizer в конструктор формы и обернуть его в блок try ... catch. Это будет: а) рассказать вам, действительно ли это то, что вызывает проблему, и b) позволяет вам изящно восстанавливаться.

1

В какой операционной системе вы пытаетесь запустить это? Я успешно выполнил ваш код в Windows 7 Professional.

Мое подозрение заключается в том, что в рамках рамки предусмотрены System.Speech, двигатели SAPI/Speech Recognition не установлены вместе с ним, хотя по умолчанию они поставляются с Windows 7. Загляните в свою папку windows\system32 и посмотрите, есть ли подкатегория с именем Speech, чтобы определить это.

Я только что быстрый взгляд через System.Speech.dll с помощью отражателя и конструктор System.Speech.Recognition.SpeechRecognizer в конечном итоге вызывает вниз в и инициализирует класс под названием System.Speech.Internal.SapiInterop.SapiRecognizer, что делает его совершенно ясно, что вам нужно иметь неуправляемые компоненты установлены.

Попробуйте загрузить и установить Speech SDK 5.1.