在语音识别引擎处理流时写入流

时间:2013-01-23 00:56:49

标签: c# .net multithreading stream speech-recognition

我正在使用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();

0 个答案:

没有答案