Начал работать с Microsoft.Speech. Есть код
static System.Windows.Controls.TextBox l;
public void InitializeSpeechGrammar()
{
l = UserMessage;
System.Globalization.CultureInfo ci = new System.Globalization.CultureInfo("ru-ru");
SpeechRecognitionEngine sre = new SpeechRecognitionEngine(ci);
sre.SetInputToDefaultAudioDevice();
sre.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized);
Choices CommToRecognize = new Choices();
CommToRecognize.Add(new string[] { "один", "два", "три", "четыре", "пять" });
GrammarBuilder grammarBuilder = new GrammarBuilder();
grammarBuilder.Culture = ci;
grammarBuilder.Append(CommToRecognize);
Grammar g = new Grammar(grammarBuilder);
sre.LoadGrammar(g);
sre.RecognizeAsync(RecognizeMode.Multiple);
}
static void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
if (e.Result.Confidence > 0.7) l.Text = e.Result.Text;
}
Сам по себе код рабочий. Т.е в режиме реального времени он может отследить говорите ли вы те слова которые вы описали. Но он может вообще не сработать, не "слышать" вас. Может работать 40 секунд и выгрузиться(перестать слушать). Может и до окончания работы программы работать.
Запускаю при старте программы.
public MainWindow()
{
InitializeComponent();
InitializeSpeechGrammar();
}
Вторая проблема - не дает заполнить
Choices CommToRecognize = new Choices();
Из словаря
foreach (KeyValuePair<string, Action> keyValue in main.commands)
{
CommToRecognize.Add(keyValue.Key.ToString());
}
Вызвано исключение: "System.FormatException" в Microsoft.Speech.dll Вызвано исключение: "System.Reflection.TargetInvocationException" в mscorlib.dll Вызвано исключение: "System.Reflection.TargetInvocationException" в mscorlib.dll Вызвано исключение: "System.Xaml.XamlObjectWriterException" в System.Xaml.dll Вызвано исключение: "System.Xaml.XamlObjectWriterException" в System.Xaml.dll
и 3. Возможно ли Начать слушать то что говорит пользователь после определенного слова?
var engine = new SpeechRecognitionEngine();
//задает интервал ожидания имеющий фоновый шум
engine.BabbleTimeout = TimeSpan.FromSeconds(3);
//задает интервал ожидания полной тишины (без шума)
engine.InitialSilenceTimeout = TimeSpan.FromSeconds(3);
Есть еще свойства EndSilenceTimeout
и EndSilenceTimeoutAmbiguous
поэкспериментируйте с ними.
//задает пропуск перед распознаванием,т.е можно говорить, что хочешь
//до появления первого словарного слова распознаватель будет пропускать
builder.AppendWildcard();
//задает количество появлений слова минимум=0, максимум=1
builder.Append(“Привет”, 0, 1);
Про заполнение из словаря, извините не знаю, что подсказать. Может кто другой...
Решил попробовать написать десктопное приложение, до этого с ними дела не имел
Необходимо в ListView в WPF: 1привязать свойство Dict объекта Error к колонке 2
Не получается у меня сделать фильтра таблицы с помощью ajax запросаУ меня выходит ошибка постоянно когда я на любом месте нажимаю на сайте,...