【发布时间】:2018-07-01 05:42:57
【问题描述】:
首先,为了明确我的目标:我正在使用 CSCore 库并使用 WasapiLoopbackCapture 类捕获背景音频,我打算将其用作 @ 的实时输入987654325@识别引擎。该类将数据输出到 .WAV 文件或流。然后我尝试这样做:
private void startButton_Click(object sender, EventArgs e)
{
_recognitionEngine.UnloadAllGrammars();
_recognitionEngine.LoadGrammar(new DictationGrammar());
LoadTargetDevice();
StartStreamCapture(); // Here I am starting the capture to _stream (MemoryStream type)
_stream.Position = 0; // Without setting this, I get a stream format exception.
_recognitionEngine.SetInputToWaveStream(_stream);
_recognitionEngine.RecognizeAsync(RecognizeMode.Multiple);
}
结果是我没有得到异常,但我也没有得到SpeechRecognized 或SpeechDetected 事件触发。我怀疑这是因为System.Speech.Recognition 程序集不支持实时流。我在网上搜索,有人报告说将自定义Stream 类型作为一种解决方法,但我无法按照帖子上不清楚的说明进行操作(see Dexter Morgan's reply here)。
我知道这个问题最好通过使用不同的库或替代方法来解决,但我想知道如何专门做这个临时实现,主要是为了知识目的。
谢谢!
【问题讨论】:
-
@justcarty ,你有没有尝试过?
-
@Webruster 从与 OP 的通信来看,他们使用的格式似乎不受支持。见this image 和this one
-
@JustCarty 那么你期待什么?你的问题是什么而不是 OP 问题
-
@Webruster OP 创建了一个程序,可以收听实时音频并转换为文本。该程序没有崩溃,但不会检索音频或触发后续事件。 OP 想知道为什么会这样。
-
@JustCarty 检查我的解决方案
标签: c# windows audio speech-recognition cscore