将语音识别结果与话语相关联的保证方式?

Guaranteed way to associate speech recognition result with an utterance?

我将 Microsoft 的 C# API 用于认知服务(牛津项目)Bing 语音识别服务。具体来说,我使用的是 Microsoft.ProjectOxford.SpeechRecognition-x64 版本 0.4.10.2.

我将音频发送到传递给 OnResponseReceived 处理程序的 DataRecognitionClient using the SendAudio and EndAudio methods, and wait for the final set of recognition hypotheses via the OnResponseReceived event. The issue I'm running into is that it's easily possible to have more than one oustanding recognition request, and the SpeechResponseEventArgs 对象不包含任何信息告诉我它是对哪个请求的响应。

这是我实际发生过很多次的例子:

  1. 某人说了些什么,称之为话语 A,我通过 SendAudio 发送,然后在他们说完后呼叫 EndAudio
  2. 在等待获取话语 A 的 OnResponseReceived 事件时,此人说了其他话,称之为话语 B。我再次通过 SendAudio 发送它,然后调用 EndAudio当他们说完。我还没有收到 OnResponseReceived 活动。
  3. 我终于得到了我的第一个 OnResponseReceived 活动。
  4. 我收到第二个 OnResponseReceived 事件。

如何正确地将响应与话语关联起来?

是否有顺序保证,如果我发送话语 A,然后发送话语 B,我总是会先得到话语 A 的响应?我没有在文档中看到该保证。

由于所有请求都是异步请求,因此无法保证 A 总是在 B 之后。我推荐的最佳方法是创建一个识别客户端池,并为每个识别使用一个客户端并管理依赖关系,