[AIGC] 腾讯ASR:ClientAbortException:java.io.EOFException: Unexpected EOF read on the socket

一、问题

腾讯asr识别回调出现以下错误
在这里插入图片描述

接口信息

在这里插入图片描述

错误信息

2024-11-06 14:35:14.504 DEBUG 77352 --- [nio-8080-exec-9] o.s.web.servlet.DispatcherServlet        : Completed 200 OK
2024-11-06 14:35:14.517 ERROR 77352 --- [nio-8080-exec-9] c.y.b.r.t.h.HttpRequestTraceServerFilter : 读取请求body数据异常

org.apache.catalina.connector.ClientAbortException: java.io.EOFException: Unexpected EOF read on the socket
	at org.apache.catalina.connector.InputBuffer.realReadBytes(InputBuffer.java:322) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
	at org.apache.catalina.connector.InputBuffer.checkByteBufferEof(InputBuffer.java:600) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
	at org.apache.catalina.connector.InputBuffer.readByte(InputBuffer.java:330) ~[tomcat-embed-core-9.0.45.jar:9.0.45]
	at org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:84) ~[tomcat-embed-core-9.0.45.jar:9.0.45]

解决

我发现我每次短语音,能顺利接到参数,但是长语音文本就会报这个错误信息:
- 1.我以为是文本太长导致,实际上不是
- 2.我看了一下,回调的时间对比,发现我是每10s,自动获取识别接口。导致长语音,10s获取不到,之后执行完,自动回调时,就会报这个错误,我就把时间,手动查询时间延长,回调callback完成之后,就正常了。

代码

  Long taskId = createRecTaskRequest(req);
        Long taskId = xxx;
        // 30秒后查询
        try {
            Thread.sleep(30000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        // 查询
        DescribeTaskStatusRequest(taskId);

二、腾讯ASR API

1. 回调说明

录音识别请求中,如果用户设置了 CallbackUrl 参数,则通过回调的方式来返回识别结果,用户需要自行搭建可公网访问的 HTTP 或者 HTTPS 服务,并在创建录音识别任务时,将回调 Url 填写到 CallbackUrl 中。回调时,会使用 HTTP 的 POST 方法,将所有内容会放入 Body 中,Content-Type 为 application/x-www-form-urlencoded

2. 回调 Body 说明

2.1 回调 Body 示例

    复制
    复制成功
    code=0&requestId=4000048858&appid=12516&projectid=0&text=%5B0%3A1.640%2C0%3A4.600%5D++%E6%88%91%E5%9C%A8%E9%A9%AC%E4%B8%8A%E4%B8%8A%E5%A4%9C%E7%8F%AD%E3%80%82%0A%5B0%3A5.420%2C0%3A7.820%5D++%E6%98%8E%E5%A4%A9%E6%97%A9%E4%B8%8A%E8%AF%B4%E5%93%88%E3%80%82%0A&audioTime=8.420000&message=&resultDetail=

    2.2 回调参数说明

    字段类型描述
    codeint64任务状态码,0为成功,其他:失败;详见 状态码说明
    messagestring失败原因文字描述,成功时此值为空
    requestIduint64任务唯一标识,与录音识别请求中返回的 TaskId 一致。数据格式必须设置为 Uint64
    appiduint64腾讯云应用 ID
    projectidint64腾讯云项目 ID
    audioUrlstring语音 url,如创建任务时为上传数据的方式,则不包含该字段
    textstring识别出的结果文本
    resultDetailstring包含 详细识别结果,如创建任务时 ResTextFormat 为0,则不包含该字段
    audioTimedouble语音总时长

    3. 回调 Response 说明

    用户侧收到回调请求后,需要以 JSON 格式返回响应。

    3.1 回调 Response 示例

      复制
      复制成功
      { "code" : 0, "message" : "success" }

      3.2 回调 Response 参数说明

      参数名称类型描述
      codeint64错误码,0为成功,其他值代表失败
      messagestring失败原因说明

      ## 4. 回调状态码
      数值说明
      10000转码失败,请确认音频格式是否符合标准
      10001识别失败
      10002语音时长太短
      10003语音时长太长
      10004无效的语音文件
      10005其他失败
      10006音轨个数不匹配
      10007音频下载失败
      评论
      添加红包

      请填写红包祝福语或标题

      红包个数最小为10个

      红包金额最低5元

      当前余额3.43前往充值 >
      需支付:10.00
      成就一亿技术人!
      领取后你会自动成为博主和红包主的粉丝 规则
      hope_wisdom
      发出的红包
      实付
      使用余额支付
      点击重新获取
      扫码支付
      钱包余额 0

      抵扣说明:

      1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
      2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

      余额充值