打断能力太弱了,响应最快3秒,最慢更多,没法直接用在对语音有实时性很高追求的项目上

Author: zhengyiwei1987Created Aug 5, 2025Updated Jul 2, 2026
Labelsenhancement

还得继续爆改,

先说说打断, 在测试场景稍微复杂一点的环境,人多七嘴八舌,就需要极快速度的打断,然后保持静默继续asr持续识别,直到在合适的时候断开,然后再次把之前识别到的内容合并重新发给大模型,这样和大模型的对话才不显得突兀

关于这种语音识别的究极体验,比如豆包也没法做到100%不去胡乱识别,但起码周围在说话的时候能够快速打断,然后静默->持续偷听->持续转换,拾取之前的内容,再次统一发送这个流程做的最好

我不懂python,但观察了代码很久,作者思路挺好,把一切都通过流处理,但是数字人在说话对唇形的时候、你想要极速打断基本很困难,单纯的清空tts和说话的缓冲区,没用,还是有将近3秒延迟,因为webrtc也存在缓冲区,数字人的推理还在进行,想要极速打断只处理其中某个链条好像做不到,有高手知道感谢能提供个思路

目前改了语音使用webrtc的语音通道来发送到asr,我目前用的豆包的语音识别大模型,因为不懂python踩了不少坑,采样率和颗粒度很怪异,用ai去改代码改了很久很久才能正常快速识别,可能是app.py中语音通道是50fps的原因,再发送asr前的采样率都很奇怪,需要设置成为8000才行,不然豆包的流式语音识别大模型很不准确

另外我修改了,再数字人说话期间,将语音的能量减弱, 或者完全设置为0,让他数字热人说话的时候减少被干扰,或者完全不被干扰,(我也是webrtc没有在服务端关闭语音通道的方法 只能通过降低音量的方法)

另外数字人说话状态有抖动,尤其是tts慢了一点,说话->静音之间的切换就有抖动,我目前做了个延迟1秒,然后做个演示+阻塞方法,能够准确的通知前端数字人说话的状态,但延迟意味着,精准度再度降低!!!

另外,修改了动作编排里的json文件,多个audiotype:1的静音动作组合按顺序执行动作