1

我正在使用 C# 和 .Net 4.5

我有一个 MemoryStream,我将它提供给 Microsoft 语音识别引擎,但如果无法识别该流。

问题是流是由另一个线程编写的,而语音识别访问它,因为我将 Stream.synchronized(stream) 对象交给语音识别访问本身不是问题,它是线程安全的。我认为位置指针有问题。当然,指针位于线程 1 写入流的新写入数据的末尾。所以线程 1 总是写入指针并将指针推到末尾,结果是指针总是指向流中的最后一个元素。识别引擎线程 2 认为没有什么新内容要读取,因为指针位于末尾。

image 唯一的解决方案是编写一个从流类派生的新类,该类具有两个单独的位置指针。一个用于写作,一个用于阅读。

还有其他解决方案吗?

问候,

最大限度

编辑:一些代码:

(Sre 线程)

SpeechAudioFormatInfo info = new SpeechAudioFormatInfo(16000, AudioBitsPerSample.Sixteen, AudioChannel.Mono);
sre.SetInputToAudioStream(stream, info);
sre.RecognizeAsync(RecognizeMode.Multiple);

(UDP 线程)

test.Write(messagePart, 0, messagePart.Length);
        test.Flush();
4

0 回答 0