You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Rodger-Wang
d1db3e5951
client(android): 通话翻译三处修复——同页第二场聋、call.stop 偶发丢失、译文积压追赶
全部在 Android 原生(azure_speech / bluetooth_manager 的 Kotlin),iOS 一行未动。
2026-09-22 ALN-AL80 + Echo-one 真机,配合协议栈 RFCOMM 日志逐条定位与复验。
同页第二次开始没反应(azure_speech)
- AST 就绪状态记在插件上(astSessionReady,与 iOS 同义),建桥与重新 enable 时都继承;
BesCallPcmBridge.disable() 不再把 ready 打回 false。
- 原因:markReady 只在 initialize 末尾发一次,同页面再开始只走 startContinuousTranslation,
disable() 清掉的 ready 再也没人置真,上行帧全扣在环形缓冲里。实测进页面第一场好、
之后每场 ready:false / downlinkFrames:0,退出重进又好一场。
结束指令偶发没到耳机(bluetooth_manager)
- 控制命令走单线程队列:距上一条命令 ≥30ms、距上一个实时音频包 ≥500ms 才写;
下行音频改走 writeRealtime 直发。
- 原因:BluetoothSocket 写入经本地管道,协议栈按信用一次把管道里攒着的字节合成一帧
(PORT_WriteData p_len=4 / 172 / 256),耳机一帧只解开头一条命令。8 次收尾丢 3 次,
耳机不回 BB D2、继续推音频,下一次 call.start 应答 BB D1 07 01(已在通话模式)。
修后 8 轮 0 丢,边播译文边点结束也在 0.5s 内收到 D2。
译文积压越说越慢(bluetooth_manager CallTranslationDownlink 重写)
- 积压 >1s 裁掉超过 150ms 的静音;>2s 起 WSOLA 变速不变调,4s 达 1.3x;不丢内容
(兜底丢弃常量默认关)。新增 getCallDownlinkStats 与收尾总账日志。
- 原因:译文音频突发产出、只能 1 倍速播,说话人不停顿时源时长≈原话时长,队列只涨不缩,
实测 A 路积压 6.2s。修后同量压测最大 3.2s,绝大部分时间 <1.5s,光裁静音就省了 10%,
变速最高只用到 1.11x。
其它
- translation_controller 收尾那几行日志提到 warn(release 包能看到 call.stop 有没有发)。
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
3 weeks ago |
| .. |
|
cpp
|
client: 设备内核抽象、Smartcar 车载香薰接入与语音纪要等一批改动
|
4 weeks ago |
|
kotlin/com/example/bluetooth_manager
|
client(android): 通话翻译三处修复——同页第二场聋、call.stop 偶发丢失、译文积压追赶
|
3 weeks ago |
|
AndroidManifest.xml
|
apps/client 首次入库(Flutter 移动端)
|
1 month ago |