Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.07.2015, 01:10   #1
stormwar
Новичок
Джуниор
 
Регистрация: 16.07.2015
Сообщений: 2
По умолчанию Работа с речью в C#

Здравствуйте, при работе с распознаванием речи возникает ошибка. Код программы:

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Speech;
using System.Speech.Recognition;
using System.Speech.Synthesis;
using System.Diagnostics;

namespace VoiceRecognizationDemoApp
{
    public partial class Form1 : Form
    {
        SpeechSynthesizer ss = new SpeechSynthesizer();
        PromptBuilder pb = new PromptBuilder();
        SpeechRecognitionEngine sre = new SpeechRecognitionEngine();
        Choices clist;

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        clist = new Choices();
    }

    private void textBox1_TextChanged(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        button1.Enabled = false;
        button2.Enabled = true;
        clist.Add(new string[] { "hello", "how are you", "what is the current time", "open chrome", "thank you", "close"});
        Grammar gr = new Grammar(new GrammarBuilder(clist));
        try
        {
            sre.RequestRecognizerUpdate();
            sre.LoadGrammar(gr);
            sre.SpeechRecognized += sre_SpeechRecognized;
            sre.SetInputToDefaultAudioDevice();
            sre.RecognizeAsync(RecognizeMode.Multiple); 
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error");
        }
    }

    private void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        switch (e.Result.Text.ToString())
        {
            case "hello":   
                ss.SpeakAsync("Hello Mihail");
                break;
            case "how are you":
                ss.SpeakAsync("i am doing great Mihail. How about you?");
                break;
            case "what is the current time":
                ss.SpeakAsync("current time is" + DateTime.Now.ToLongTimeString());
                break;
            case "thank you":
                ss.SpeakAsync("not at all");
                break;
            case "open chrome":
                Process.Start("chrome", "http://www.google.com/");
                break;
            case "close":
                Application.Exit();
                break;
        }
        textBox1.Text += e.Result.Text.ToString() + Environment.NewLine;
    }

    private void button2_Click(object sender, EventArgs e)
        {
            sre.RecognizeAsyncStop();
            button1.Enabled = true;
            button2.Enabled = false;
        }
    }
}
Для работы с речью скачивал Microsoft Speech SDK 5.1 и Microsoft Speech API 5.1. Думаю что проблема находится именно в них. Делал все по примеру на Youtube. Прошу помочь.
Привожу stack trace:

Код HTML:
Поток 'vshost.LoadReference' (0x1f34) завершился с кодом 0 (0x0).
"VoiceRecognizationDemoApp.vshost.exe" (Управляемый (v4.0.30319)): Загружен 
"C:\Users\Михаил\documents\visual studio 
2012\Projects\VoiceRecognizationDemoApp\VoiceRecognizationDemoApp\bin\Debug\VoiceRecognizationDemoApp.exe",

Символы загружены.
Поток '<Без имени>' (0x39c) завершился с кодом 0 (0x0).
Первый этап обработки исключения типа 
"System.Runtime.InteropServices.COMException" в System.Speech.dll 
Первый этап обработки исключения типа "System.NullReferenceException" в System.Speech.dll 
Поток 'vshost.RunParkingWindow' (0x9a0) завершился с кодом 0 (0x0).
Поток '<Без имени>' (0x1a68) завершился с кодом 0 (0x0).
Программа "[8644] VoiceRecognizationDemoApp.vshost.exe: Трассировка программы" завершилась с кодом 0 (0x0). 
Программа "[8644] VoiceRecognizationDemoApp.vshost.exe: Управляемый (v4.0.30319)" завершилась с кодом 0 (0x0).
Изображения
Тип файла: jpg Error.jpg (76.2 Кб, 127 просмотров)
Тип файла: jpg VoiceError.jpg (29.3 Кб, 120 просмотров)
stormwar вне форума Ответить с цитированием
Старый 16.07.2015, 07:42   #2
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Проблема находится в вашем коде. Вы не обрабатываете System.NullReferenceException (см. картинку "код HTML"), т.е. API было не готово принять ваш запрос.
Используйте MSDN для самопроверки
https://msdn.microsoft.com/ru-ru/lib...or=-2147217396
Akeloya вне форума Ответить с цитированием
Старый 16.07.2015, 13:01   #3
stormwar
Новичок
Джуниор
 
Регистрация: 16.07.2015
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Akeloya Посмотреть сообщение
Проблема находится в вашем коде. Вы не обрабатываете System.NullReferenceException (см. картинку "код HTML"), т.е. API было не готово принять ваш запрос.
Используйте MSDN для самопроверки
https://msdn.microsoft.com/ru-ru/lib...or=-2147217396
Разве не здесь я использую проверку?
Код:
sre.RequestRecognizerUpdate();
stormwar вне форума Ответить с цитированием
Старый 17.07.2015, 07:57   #4
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Распознаватель речи не был готов или установлен.
Попробовал несколько вариантов на своем компьютере - получил похожую ошибку именно из-за неготовности распознавателя.

Поэтому первоочередная задача разобраться по какой причине не был инициализирован распознаватель речи.
Akeloya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с ems api: корректная работа только при явном указании города mrdemkin JavaScript, Ajax 3 02.03.2015 18:23
Работа с псевдослучайными последовательностями (ПСП). Работа с цветом.(Pascal) Shick Помощь студентам 7 11.12.2013 19:25
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00