首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

Show HN:RealtimeVAD – 将误报提前 110 毫秒结束语音

摘要

Know that the speaker stopped, about 100 ms before Silero does. RealtimeSTT · RealtimeTTS · Live demo · Spec · LiveKit plugin A voice assistant can't do anything until it knows the user has stopped ta...

the Silero and audio before voice The event median that
2026-11-13 1 阅读 约8分钟阅读 koljab
分享:
字号:
知道扬声器停止了,比 Silero 早大约 100 毫秒。 RealtimeSTT · RealtimeTTS · 现场演示 · Spec · LiveKit 插件 语音助手在知道用户已停止说话之前无法执行任何操作。语音识别、LLM 通话和语音输出都在等待这一决定,而正常的语音活动检测器需要几百毫秒才能做出决定。 RealtimeVAD 让它更快。它让 Silero VAD 来决定什么是语音,并添加第二次更快的检查:每 10 毫秒将音频电平与房间的噪音以及说话者自身的电平进行比较。当音频安静下来的那一刻,你就会收到一个事件,早在 Silero 的概率下降之前。输入:任意大小块(float32、int16 或 int16 字节)的 16 kHz 单声道音频。输出:开始、暂停和结束事件,以及任意时刻正在运行的片段的音频。领先:在 Silero 的概率下降之前 100 毫秒,在 Silero 的 VADIterator 报告结束之前 206 毫秒,在 3,279 个真实回合中,语音关闭。终点本身在 82% 的回合中先于 Silero,中位数为 70 毫秒。价格:它也会在单词之间的短暂间隙中触发,频率大约是 Silero 的十倍。安静输入:安静说话者的柔和词尾不是沉默;在嘈杂安静的线路上,引线消失了(详细信息)。运行于:一个 CPU 线程,远快于实时。仅需要 numpy 和 onnxruntime; Silero 型号是捆绑的,没有手电筒。状态:阿尔法(0.0.5)。 API 可能仍会发生变化。 demo.mp4 该视频使用合成语音,显示中位领先时间为 92 毫秒。上面的 100 毫秒是真实语音助手转弯的中值。 demo/ 在您自己的麦克风上运行此页面。它依次显示,在同一音频中,RealtimeVAD 比单独使用 Silero 早了多少时间。 from RealtimeVAD import VAD vad = VAD () for chunk in Michael_chunks (): for event in vad 。 feed(块):如果事件。 kind == "start" :stream_to_asr(vad.audio()) # 包括语音开始之前的音频 elif event . kind == "pause" : spulate ( vad .audio ()) # 扬声器可能已完成; elif 活动还没有结束。 kind == "end" : Finalize ( event .egment .audio ) 事件含义 When start 语音已开始 经过大约 64 毫秒的自信语音后,因此点击不会触发它。 Silero 从来不自信的语音(短的“mm-hmm”,安静的电话声音)在大约 0.13 秒后以半置信度开始,如果它明显比房间暂停声音大 扬声器可能已停止(语音关闭) 在音频安静结束后的约 10 毫秒内 语音关闭后该段超过 0.24 秒,除非语音恢复。绝不会晚于 Silero 单独开始 语音可能已经开始 在第一个自信帧处,在开始确认之前。默认关闭:VAD(onset_events=True) vad.audio() 随时返回正在运行的片段,从演讲前约 0.3 秒开始。 end 携带已完成的片段及其音频、开始时间、结束时间和语音停止时间。如果您的助手在麦克风打开时讲话,请为这些块传递 vad.feed(chunk,playback=True) ,以便将其自己的声音处理为可能的回声。每个阈值和持续时间都可以配置; SPEC.md 列出了保证的内容。故意过早地暂停,而且常常是错误的。它会在每次呼吸、单词之间的每一个短暂间隙和每一个停止辅音时触发,因此大多数停顿事件之后都会有更多的言语。用它开始你可以取消的工作:完成笔录、致电法学硕士、准备语音输出。当讲话继续时取消。错误的暂停几乎不会造成任何损失,而正确的暂停则可以节省数百毫秒。切勿将其视为回合结束。只有 end 才封闭一个段。不能快速取消吗?忽略暂停并等待结束。额外的误报会让你付出的代价比他们节省的还要多。更改导入: from silero_vad import load_silero_vad from RealtimeVAD import VADIterator # was: from silero_vad import VADIterator vad_iterator = VADIterator ( load_silero_vad (), Samples_rate = 16000 )peech_dict = vad_iterator ( chunk , return_seconds = True ) # {'start': ...} / {'end': ...} / None构造函数和结果保持不变,但一旦音频安静下来,结束就会到来。如果没有模型参数,它使用捆绑的 Silero 模型并且不需要 torch。 livekit-plugins-realtimevad/ 是一个 VAD 插件: realtimevad.VAD.load() 代替 silero.VAD.load() 。它的自述文件显示了事件如何映射以及它在同一音频上针对 Silero 插件测量的内容。简而言之:与 Silero 插件的默认设置相比,语音结束时间提前了约 380 毫秒,但其中大部分是较短的静音设置(0.25 秒而不是 0.55 秒),Silero 也可以提供该设置。在相同的设置下,RealtimeVAD 的结束提前 65 到 110 毫秒,LiveKit 的转弯检测器提前 95 到 180 毫秒开始。在 LiveKit 会话中,转弯的提交时间比 Silero 的默认值早了约 150 毫秒,比 Silero 的默认值早了约 70 毫秒(0.25 秒)。在默认设置下,对实时语音助手进行 3,279 次转弯测量,每次都有尾声静音。西尔
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱