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

Watson Speech to Text原始音频通过WebSocket识别失败但HTTP接口正常

问题修复方案

报错unable to transcode data stream application/octet-stream -> audio/l16的本质是Watson服务端未接收到你声明的音频格式,默认把传入的音频识别为无格式二进制流,无法完成转码。可按以下步骤排查修复:

  • 修复SDK参数传递bug:IBM Go SDK v2的NewRecognizeUsingWebsocketOptions构造函数传入的content-type参数存在不生效的已知问题,HTTP接口会把格式放在请求头中正常识别,而WebSocket接口需要将格式声明放在初始JSON控制消息中,旧版本SDK不会把构造函数的content-type写入该消息,需要在构造配置项后显式调用SetContentType重新赋值:
recognizeUsingWebsocketOptions := service.
    NewRecognizeUsingWebsocketOptions(audio, "audio/mulaw;rate=8000;channels=1")

// 新增此行强制设置音频格式
recognizeUsingWebsocketOptions.SetContentType("audio/mulaw;rate=8000;channels=1")

recognizeUsingWebsocketOptions.
    SetModel("en-US_NarrowbandModel").
    SetWordConfidence(true).
    SetSpeakerLabels(true).
    SetTimestamps(true)
  • 重置音频文件指针:确认传递给接口的音频文件指针处于文件起始位置,避免读取到空内容:
import "io" // 需提前导入io包

audio, audioErr := os.Open("/opt/audioRaw.raw")
if audioErr != nil {
    panic(audioErr)
}
// 新增重置指针逻辑
_, seekErr := audio.Seek(0, io.SeekStart)
if seekErr != nil {
    panic(seekErr)
}
  • 升级依赖版本:更新相关SDK到最新版,规避旧版本的参数序列化bug:
go get -u github.com/IBM/go-sdk-core/v5@latest
go get -u github.com/watson-developer-cloud/go-sdk/v2@latest
  • 简化参数测试:如果修改后仍报错,可以先注释掉SetSpeakerLabels、SetWordConfidence等额外配置,仅保留格式和模型参数测试基础转码功能,排除参数冲突问题。

内容的提问来源于stack exchange,提问作者ryan embgrets

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 00:45:02