You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google Speech-To-Text流式识别返回无效JSON及音频超时问题求助

C#中Google流式语音识别对接Twilio通话时的JSON解析异常问题

我在C#中使用Google Speech Recognition的流式/实时识别功能(非预录制音频文件),流式音频来自Twilio电话通话。90%的情况下功能运行正常,但偶尔会出现Google返回的Payload无法解析JSON的错误。

错误1:不完整的JSON Payload

捕获到的错误JSON内容如下:

{"event":"media","sequenceNumber":"12","media":{"track":"inbound","chunk":"11","timestamp":"309",
"payload":"////////////////////////////////////////
////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////

该JSON未正确终止,payload值仅为大量斜杠。

错误2:Google WebSocket超时异常

大约10秒后,在Google WebSocket的“start”事件期间会触发另一个异常:

Grpc.Core.RpcException: Status(StatusCode="OutOfRange", 
Detail="Audio Timeout Error: Long duration elapsed without 
audio. Audio should be sent close to real time."

实际电话通话中并无明显间隙,且每个Google语音识别WebSocket会话仅持续数秒(Twilio发起请求、建立WebSocket连接、Google监听用户的“YES”或“NO”并转录,重复该流程若干次)。

相关C#代码片段

private async Task ProcessAudioStream_English(AspNetWebSocketContext context)
{
    string jsonData = ""; //NEW - for debugging/exception catching

    try
    {
        WebSocket webSocket = context.WebSocket;

        string streamSid = null;
        var buffer = new byte[1024 * 4];

        var receiveResult = await webSocket.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);

        var _speechRecognitionService = new GoogleSpeechRecognition();

        string lang = "en-US";
        Debug.WriteLine($"Language: {lang}");


        while (!receiveResult.CloseStatus.HasValue)
        {
            jsonData = Encoding.UTF8.GetString(buffer, 0, receiveResult.Count);
            var jsonDocument = JsonDocument.Parse(jsonData); //<--sometime has invalid JSON

我最初怀疑缓冲区大小(1024*4)过小,但上述出错的JSON长度仅为265,显然并非此原因。请问为何Google Speech Recognition(流式)偶尔会返回此类包含大量斜杠的不完整JSON?

内容的提问来源于stack exchange,提问作者Ted Krapf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:14:58