Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
Warstar
47 / 47 / 1
Регистрация: 29.11.2012
Сообщений: 254
Записей в блоге: 2
1

Система голосового управления

26.07.2013, 22:11. Просмотров 5732. Ответов 7
Метки нет (Все метки)

Здравствуйте. Начну с источника и кратко: посмотрел я Железного человека, и захотелось мне сделать что-то на подобии Джарвиса... Ясное дело, столь крутую систему я никогда не заимею, учитывая хотя-бы то, что Джарвис - вымышленный, но все же, почему бы и нет. Тема столь банальная, что я долго думал, создавать ее или нет, но я зашел в тупик в данном проекте, и теперь вынужден просить вашей помощи. Работать с С# я начал недавно, поэтому не ругайте и не смейтесь, если что-либо покажется смешным и наивным, лучше укажите, как сделать лучше и вернее.

Значит, на данном этапе программа работает, и выполняет елементарные функции, т.е. здоровается, отвечает на некоторые вопросы, парсит погодный сайт. Реализацию кода я выложил ниже.

Главной задачей следующего этапа, я определил этакий "протокольный" режим работы программы. Т.е., определенной голосовой фразой я активирую переход системы в режим, при котором, по моему собственному тех.заданию, программа выполняет, так сказать только те действия, которые входят в данный протокол. Поясняю, если кто не понял: Я говорю - "Установить сигнализацию в доме" - Программа: активирует датчики движения, замыкает контуры, и ждут фразу "Отключить сигнализацию". При этом, никакие другие команды она не должна воспринимать, то есть, это похоже на цикл. Да, это похоже на умный дом, но для меня это не умный дом, поэтому прошу Вас, упустите данный комментарий...

Для распознавания и синтеза речи я использую либы Microsoft.Speech, и все команды впиханы в тело обработчика
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
static void Main(string[] args)
 
        // Initialize a SpeechRecognitionEngine object.
        {
            
            using (SpeechRecognitionEngine recognizer =
               new SpeechRecognitionEngine(new System.Globalization.CultureInfo("ru-RU")))
            {
                
                // Create and load a grammar.
                GrammarBuilder test = new GrammarBuilder(new Choices(File.ReadAllLines(@"C:\comm.txt")));
                Grammar testGrammar = new Grammar(test);
                testGrammar.Name = "Test";
                recognizer.LoadGrammarAsync(testGrammar);
 
                // Configure recognizer input.
                recognizer.SetInputToDefaultAudioDevice();
 
                // Attach an event handler for the LoadGrammarCompleted event.
                recognizer.LoadGrammarCompleted += new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
 
                // Attach an event handler for the SpeechRecognized event.
                recognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
                recognizer.RecognizeCompleted += new EventHandler<RecognizeCompletedEventArgs>(recognizer_RecognizeCompleted);
 
                // Start recognition.
                recognizer.RecognizeAsync(RecognizeMode.Multiple);
                Console.WriteLine("Запущено асинхронное распознавание");
 
                // Keep the console window open 
                Console.ReadLine();
            }
        }
 
        static void recognizer_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
        {
            Console.WriteLine(".");
        }
static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            SpeechSynthesizer ss = new SpeechSynthesizer();
            ss.SetOutputToDefaultAudioDevice();
            string speech = e.Result.Text;
            switch (speech)
            {               
                case "привет":
                case "здравствуйте":
                    ss.Speak("Здравствуйте");
                break;
            }
        }
}
Обобщаю вопрос: Как, по Вашему мнению, организовать "протокольный" режим работы программы?
Снова прошу - только без помидоров и яиц
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.07.2013, 22:11
Ответы с готовыми решениями:

Система управления файлами
Здравствуйте! Попросили разработать небольшую систему документооборота. А именно, вот с чем ко мне...

Система управления версиями
Вопрос в следующем. Хочу много коммитов и возможность отката к предыдущим версиям в sln проекте....

Как написать чат с поддержкой голосового общения
Всем привет. Нужно написать текстовый чат + возможность голосового общения. У меня вопрос: можно ли...

Система управления сайтом
Интересует как можно реализовать. Из чего состоит, как строится. Для одного и для нескольких...

Система управления боем
&quot;Цель программы – помочь командиру взвода или отделения руководить бойцами в условиях, когда...

7
Warstar
47 / 47 / 1
Регистрация: 29.11.2012
Сообщений: 254
Записей в блоге: 2
05.08.2013, 16:13  [ТС] 2
Ребят, ну помогите, хоть кто-то. Натолкните на правильные мысли. Как сделать цикл в этой программе, в котором будут отрабатываться только инструкции этого цикла до команды, завершающей цикл.
0
-X-
6 / 6 / 0
Регистрация: 10.06.2013
Сообщений: 32
05.08.2013, 17:15 3
Как вариант, если я правильно понял вопрос, то что вы описали сильно напоминает конечный автомат - в каждом конкретном состоянии существует только определенный набор переходов(команд) в разрешенные на данном этапе состояния, а все что кроме по дефолту идет лесом...

Не по теме:
Поделитесь впечатлениями если не секрет. Вы на каком языке команды отдавали, и как качество распознавания изменяется с раcстоянием от микрофона?
0
Anklav
446 / 304 / 47
Регистрация: 23.01.2013
Сообщений: 657
Завершенные тесты: 2
05.08.2013, 17:17 4
Попробуйте разобратся в паттернах состояние или стратегия.
1
05.08.2013, 17:17
Warstar
47 / 47 / 1
Регистрация: 29.11.2012
Сообщений: 254
Записей в блоге: 2
05.08.2013, 17:57  [ТС] 5
Цитата Сообщение от -X- Посмотреть сообщение
Как вариант, если я правильно понял вопрос, то что вы описали сильно напоминает конечный автомат - в каждом конкретном состоянии существует только определенный набор переходов(команд) в разрешенные на данном этапе состояния, а все что кроме по дефолту идет лесом...
Да, все верно. И теперь ломаю голову, как описать это на С#.
Цитата Сообщение от -X- Посмотреть сообщение
Не по теме:
Команды отдавал на русском, с увеличением расстояния - верность распознавания команд изменяется примерно до 95%. Я сам был удивлен.

Anklav, спасибо, на первый взгляд - то что мне нужно. Попробую разобраться.
0
MS
0 / 0 / 0
Регистрация: 22.05.2015
Сообщений: 1
23.05.2015, 11:45 6
Warstar, Добрый день, хотел бы узнать, получилось ли у вас реализовать распознавание русской речи в Microsoft.Speech
0
MakcPletnev
35 / 31 / 9
Регистрация: 01.02.2014
Сообщений: 712
Завершенные тесты: 1
23.05.2015, 12:23 7
Раз уж подняли, то тоже хочу узнать. Получилось ли распознать русскую речь?
0
Someone007
3011 / 2241 / 1006
Регистрация: 09.05.2015
Сообщений: 5,563
Завершенные тесты: 1
23.05.2015, 22:53 8
Цитата Сообщение от MS Посмотреть сообщение
Warstar, Добрый день, хотел бы узнать, получилось ли у вас реализовать распознавание русской речи в Microsoft.Speech
Цитата Сообщение от MakcPletnev Посмотреть сообщение
Раз уж подняли, то тоже хочу узнать. Получилось ли распознать русскую речь?
Почему нет? Ставите пакет для распознавания русского языка и все распознается, конечно не 100% надежно, и только заранее заданные команды.
0
23.05.2015, 22:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2015, 22:53

Система управления версиями
Здравствуйте! Подскажите, пожалуйста, какую нибудь хорошую систему управления версиями. Желательно...

Приложение для голосового общения
Добрый день. я пишу программу для голосового общения, мне нужно реализовать систему логина, чтобы...

Упрощение исходника голосового чата
Всем доброго времени суток! Имеется исходник голосового чата, необходимо упростить код на составные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru