Я работаю с аудиофайлами (wav) и SpeechRecognitionEngine. Цель состоит в том, чтобы расшифровать мои wav-файлы, и я реализовал как
var dictationGrammar = new DictationGrammar();
var speechRecognitionEngine = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
speechRecognitionEngine.LoadGrammar(dictationGrammar);
speechRecognitionEngine.BabbleTimeout = TimeSpan.FromSeconds(999.0);
speechRecognitionEngine.EndSilenceTimeout = TimeSpan.FromSeconds(10.0);
speechRecognitionEngine.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(10.0);
speechRecognitionEngine.SpeechRecognized += (s, e) => SpeechRecognized(s, e, audioPath.Replace("wav", "txt"));
speechRecognitionEngine.SetInputToWaveFile(audioPath);
speechRecognitionEngine.Recognize();
private static void SpeechRecognized(object sender, SpeechRecognizedEventArgs e, string fileName)
{
string transcription = e.Result.Text;
File.WriteAllText(fileName, transcription);
}
SpeechRecognized fires один раз.
Я использую высокие / максимальные значения для разных таймаутов, но это не дает мнетранскрипция всего файла. Аудиофайл длится 1 минута 12 секунд, но я, кажется, получаю только первые 30 секунд.