我正在使用C#和.Net 4.5
我有一个MemoryStream,我给了Microsoft语音识别引擎,但如果无法识别该流。
问题是当语音识别访问它时,流由另一个线程写入,因为我将Stream.synchronized(流)对象传递给语音识别,访问本身不是问题,它是线程安全的。 我认为位置指针存在问题。当然,指针位于线程1写入流的新写入数据的末尾。因此,线程1总是写入并将指针推送到结尾,结果是指针始终指向流中的最后一个元素。 识别引擎,线程2,认为没有什么新东西可以读取,因为指针在最后。
图像唯一的解决方案是编写一个派生自流类的新类,该类具有两个独立的位置指针。一个用于写作,一个用于阅读。
还有其他解决方案吗?
此致
最高
编辑:某些代码:
(Sre Thread)
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();