C# Bing语音识别服务-SpeechClient问题“;无法分析音频格式。”;

C# Bing语音识别服务-SpeechClient问题“;无法分析音频格式。”;,c#,audio,speech-recognition,bing,pcm,C#,Audio,Speech Recognition,Bing,Pcm,我们目前正在评估Bing语音识别服务的流媒体直播场景。我们正在获取PCM编码音频(16k采样、16位、1通道(又名单声道))的实时流,并试图将其发送到Bing语音识别服务 我们已成功地将来自的DataRecognitionClient用于我们的场景,方法是在流式传输音频之前发送音频格式,如下所示: \u dataRecognitionClient.SendAudioFormat(SpeechAudioFormat.create16BitPCMFormat(16000)) 然后,我们以如下方式循环

我们目前正在评估Bing语音识别服务的流媒体直播场景。我们正在获取PCM编码音频(16k采样、16位、1通道(又名单声道))的实时流,并试图将其发送到Bing语音识别服务

我们已成功地将来自的DataRecognitionClient用于我们的场景,方法是在流式传输音频之前发送音频格式,如下所示:
\u dataRecognitionClient.SendAudioFormat(SpeechAudioFormat.create16BitPCMFormat(16000))

然后,我们以如下方式循环播放音频流:

_dataRecognitionClient.SendAudio(buffer, bytesRead);
这个很好用。但是,我们假设ProjectOxford库可能会被弃用,因为官方Bing语音识别网站()指向不同的Nuget包,请参见:

当我们使用此软件包中的SpeechClient时,在SpeechClient上执行RecognizeAsync时,我们看到提到的“音频格式无法解析”错误

var speechInput = new SpeechInput(producerConsumerStream,
new RequestMetadata(Guid.NewGuid(), new DeviceMetadata(DeviceType.Near,
DeviceFamily.Desktop, NetworkType.Ethernet, OsName.Windows, "Azure",
"Microsoft", "Current"), new ApplicationMetadata("App", "1.0"), "Speech"));
await _speechClient.RecognizeAsync(speechInput, new CancellationToken());
最后一行抛出错误。我们假设这是因为我们的PCM流没有WAVE/RIFF头,因为它是流式的。对于流式场景,DataRecognitionClient具有“SendAudioFormat”方法


SpeechClient不支持流媒体场景吗?

回答我自己的问题。我们已经解决了这个问题,在流中预先添加了一个带有假样本总数(aka length)的WAVE头,请参见:

非常感谢。我想补充一点,您需要将流的位置设置回0。当您将头写入流时,流的位置是44,因此识别客户端仍将抛出相同的异常。