语音到文本抛出错误音频超时错误:长时间没有音频。音频应接近实时发送

Dom*_*ali 5 google-cloud-speech

一段时间后,语音到文本会引发错误:

Grpc.Core.RpcException: Status(StatusCode=OutOfRange, Detail="音频超时错误:长时间没有音频。音频应该接近实时发送。")

另一个错误是:

Grpc.Core.RpcException: Status(StatusCode=Cancelled, Detail="操作被取消。")

如何避免这些错误?两个错误都在功能上:

if (firstMessage == false) {
    // var buffer = new byte[32 * 1024];
    var buffer = new byte[4096];
    int bytesRead;
    while ((bytesRead = await outputStream.ReadAsync(
            buffer, 0, buffer.Length)) > 0) {

        await streamingCall.WriteAsync(
            new StreamingRecognizeRequest() {
                AudioContent = Google.Protobuf.ByteString
                    .CopyFrom(buffer, 0, bytesRead),
            });
        // await Task.Delay(100);
    };

}
Run Code Online (Sandbox Code Playgroud)

小智 3

您必须从流输入中进行一些语音识别。当您的流输入中有一段静默时间(例如 10 秒或更长时间)时,通常会发生此错误,因此,它表示识别结束并取消操作。为了避免这种情况,请确保接近实时地发送输入。

  • 你好,谢谢你的回复。我正在尝试转录实时视频,我使用 ffmpeg 提取音频,然后将其发送到 api。api 返回前 9-10 行,然后抛出此错误操作已取消。当从 API 收到 isfinal true 时,我正在创建新请求。在这种情况下,它会继续发送转录,但随后它会忽略之间的音频字节。你能告诉我如何解决这个问题吗?如何管理发送新请求,该请求不会忽略任何字节,而是从抛出错误的地方继续? (2认同)
  • 嘿@Dombivali,你解决这个问题了吗?我遇到了与您在问题中描述的相同的错误。 (2认同)