gpt4 book ai didi

c# - 是否可以将实时数据发送到 Bing 语音识别?

转载 作者:太空狗 更新时间:2023-10-30 01:31:28 28 4
gpt4 key购买 nike

我正在编写一个应接收音频并将其发送到 Bing Recognition API 以获取文本的应用程序。我使用了服务库,它可以处理 wav 文件。因此,我编写了自己的流类来接收来自麦克风或网络 (RTP) 的音频,并将其发送到识别 API。当我在音频流前面添加 WAV header 时,它会工作几秒钟。

调试显示,识别 api 读取表单流的速度比填充音频源(16k 采样率、16 位、单声道)快。

所以我的问题是:有没有办法将 recognition api 与实时(连续)音频流一起使用?

我知道有一个麦克风客户端的例子,但它只适用于麦克风,我需要它用于不同的来源。

最佳答案

我找到了解决问题的方法。我写了一个继承自流的类 AudioStream,它缓冲输入并在调用 Read 方法且其缓冲区为空时等待。这可以防止识别器停止,因为读取方法总是返回一个 > 0 的值。这是该类的重要部分代码:

public class AudioStream : Stream {
private AutoResetEvent _waitEvent = new AutoResetEvent(false);

internal void AddData(byte[] buffer, int count) {
_buffer.Add(buffer, count);
// Enable Read
_waitEvent.Set();
}
public override int Read(byte[] buffer, int offset, int count) {
int readCount = 0;
if ((_buffer.Empty) {
// Wait for input
_waitEvent.WaitOne();
}
......
// Fill buffer from _buffer;

_waitEvent.Reset();
return length;
}
protected override void Dispose(bool disposing) {
// Make sure, that there is no waiting Read
// Clear buffer, dispose wait event etc.
}
......

因为连续接收音频数据,所以 Read 方法不会“挂起”超过几毫秒(例如,RTP 数据包全部接收 20 毫秒)。

关于c# - 是否可以将实时数据发送到 Bing 语音识别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41097087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com