Blizzard
d6c1a787f4
fix(voice): 改用火山「新版控制台」API Key 鉴权(ASR 握手真机验通 ✅ )
...
一直误用旧版 5 头方案(X-Api-App-Key+Access-Key+App-ID),火山始终 401 grant not found。
用户提供官方文档「新版本控制台」证实:新版只需**单个 X-Api-Key** 头。改对后真机联调:
- frame.go setVolcAuthHeaders: X-Api-Key + X-Api-Resource-Id + X-Api-Request-Id + X-Api-Sequence:-1
(删旧 App-Key/Access-Key/App-ID/Connect-Id;去 appID 参数)
- asr/tts 调用点同步;config.go 删 Config.AppID;voicecheck/voiceconfig 删 VOLC_APP_ID
- 删临时诊断工具 voiceprobe
真机结果:ASR 握手✅ (volc.bigasr.sauc.duration 有效);TTS 用 seed-tts-2.0 会话正常建立
(不再 resource mismatch),但暂无音频返回→双向 TTS 事件/payload 待调(下一步)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-22 10:42:36 +08:00
Blizzard
c5397438d4
docs(voice): 记录联调结论——协议验通,剩服务开通(账号侧)
...
联调确认:鉴权/帧协议已被真火山完全接受。剩 grant not found=账号未开通对应服务。
- TTS 正确 Resource-Id 是 volc.service_type.10029(语音合成大模型),非 seed-tts-2.0(那是模型名)
- ASR 端点 sauc/bigmodel 认 volc.bigasr.sauc.duration(格式被识别)
- 两者均 grant not found → App 9604175735 需在语音控制台开通这两个大模型服务
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-22 10:07:48 +08:00
Blizzard
8283bc542f
fix(voice): 火山鉴权头精确大小写(X-Api-App-ID 免被 Go 规范化)
...
Go 的 Header.Set 会把 X-Api-App-ID 规范化成 X-Api-App-Id;改直接赋 map 保留精确
大小写,对齐官方 demo。鉴权方案已与参考实现(realtime_dialog demo)完全一致。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-22 09:59:58 +08:00
Blizzard
bb9c73a9b7
fix(voice): 修正火山 V3 流式端点鉴权头(真火山联调验通协议格式)
...
联调发现 Authorization: Bearer 不被 openspeech V3 二进制流端点接受。改用官方规范头:
- X-Api-App-Key: 固定常量 PlgvMymc7f3tQnJ6(所有客户端同值,缺它 400 "app key not found")
- X-Api-Access-Key: 新版 API Key(账号鉴权)
- X-Api-App-ID: 账号 App ID(解析资源授权,缺它 401 "grant not found")
- X-Api-Resource-Id / X-Api-Connect-Id
改动:Config 加 AppID 字段;frame.go setVolcAuthHeaders 统一挂头 + handshakeDetail
榨取握手失败的 HTTP 状态/logid/body(联调可诊断);asr/tts 共用;voicecheck 加握手探针
分别验 ASR/TTS 端点;voiceconfig/voicecheck 读 VOLC_APP_ID。
现状:协议格式已被真火山接受(过了 400 格式错,进到账号/资源授权查询)。剩 App ID +
资源开通确认(账号侧,联调补)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-22 09:53:26 +08:00
Blizzard
b526b21dee
feat(voice): 火山语音 WS 二进制帧编解码(ASR/TTS 共用核心)
...
从官方参考实现核实的 V3 协议帧格式,港到 Go:byte0=0x11、byte1=(msgType<<4)|flags、
byte2=序列化<<4|压缩、byte3=0x00、大端 uint32 payload 长度、payload;服务端响应含 4B
序列号故 payload 从第 12 字节起。encodeFrame/jsonFrame/audioFrame/parseServerFrame +
msgType(0x01 config/0x02 音频/0x09 结果/0x0F 错误)与 flags(0x02 最终)常量。
3 个单测钉死头布局/音频最终帧/响应解析(确定性,不依赖网络)。
ASR 初始配置 JSON、WS 连接与流式识别(接 onAudio)是下一步网络层实现。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-07-21 17:22:09 +08:00