Как сделать внешний файл dict для моей программы распознавания речи по ключевым словам C#.
Я хочу, чтобы программа распознавания речи по ключевым словам C# загружала ключевые слова из текстового файла.dict, а не вводила ключевые слова в массив программы. Приведенный ниже код является рабочей программой, но если я хочу добавить тысячи новых ключевых слов в массив, это сделает string[]{array} таким большим, и мне придется перестраивать проект каждый раз, когда я делаю модификацию списка ключевых слов. Если я могу позволить программе загрузить текстовый или строковый файл ключевых слов при запуске программы, то я могу изменить внешний файл словаря ключевых слов в любое время без компиляции кода.
использование системы;
использование системы.Коллекции.Общий;
использование системы.Нарезание резьбы.Задачи;
использование системы.Речь.Распознавание;
использование системы.Речь.Синтез;
использование системы.Коллекции.Общий;
используя системы.Сведения;
используя системы.Текст;
использование системы.Глобализация;
использование системы.ИО;
// Речь в текст
amespace CSharp_Speech_ConsoleApp
{
программа занятий
{
[DllImport("winmm.dll")]
public static extern int waveInGetNumDevs();
SpeechRecognitionEngine recognizer = новый
SpeechRecognitionEngine (новый
Система.Глобализация.CultureInfo ("en-US"));
static void Main (string[] args)
{
// Создайте массив ключевых слов
Выбор команды = новый выбор();
//Как сделать этот массив, импортировав строки из внешнего файла ключевых слов ?
команды.Add(new String [] {"Good morning.", " Hello Mike.",
"Доброе утро, Эдди", "Добрый день", "Добрый вечер", " привет",
"Как дела", "послушай меня, Майк", " перестань слушать, Майк!"
});
GrammarBuilder gBuilder = новый GrammarBuilder();
gBuilder.Добавить (команды);
Grammar grammar = новая грамматика(gBuilder);
recogEngine.LoadGrammar (грамматика);
// получить общее количество устройств ввода звука
int waveInDevicesCount = waveInGetNumDevs();
if (waveInDevicesCount == 0)
{
Приставка.WriteLine ("микрофон не обнаружен.!");
}
ещё
{
Приставка.WriteLine ("обнаружен микрофон. ");
recogEngine.SetInputToDefaultAudioDevice();
recogEngine.SpeechRecognized += recogEngine_SpeechRecognized;
recogEngine.RecognizeAsync(RecognizeMode.Множественный);
}
Приставка.Линия чтения();
}
/ Дисплей речи / консоль признал результате текст
recogEngine_SpeechRecognized статический недействительным(объект отправителя,
SpeechRecognizedEventArgs е)
{
строки managedString = е.Результат.Текст;
char[] st = managedString.ToCharArray();
Приставка.WriteLine(st);
}
}
}
Что я уже пробовал:
У меня есть испытанный способ , как сделать массив и переменную заменить команды массив строк.Add (new String [] {(arr1) }; :
string[] arr1 = new string[] { "Good morning.","Hello Mike.", "Good morning Eddy.","Good afternoon.","Good Evening","Hello", "How are you", "Listen to me Mike", "Stop listening Mike!" };
Я использую arr1 для замены содержимого { } следующим образом :
.. Выбор команды = новый выбор();
.. команды.Add (new String [] {(arr1) } ;
но я обнаружил, что этот массив не может быть заменен эквивалентной переменной arr1. Если этот массив можно заменить на arr1, то я могу создать массив arr1, импортировав текстовый файл, содержащий ключевые слова при запуске программы. Как заменить этот массив строк ключевых слов другой переменной массива?