发布时间:2026/8/23 11:17:48
Transcribro如何知道你何时停止说话?Silero VAD状态机源码分析 Transcribro如何知道你何时停止说话Silero VAD状态机源码分析【免费下载链接】TranscribroPrivate and on-device speech recognition keyboard and service for Android.项目地址: https://gitcode.com/gh_mirrors/tr/TranscribroTranscribro 是一款运行在 Android 上的私有端侧语音识别键盘与识别服务所有语音都在本机处理不上传云端。它用 Silero VADVoice Activity Detection语音活动检测回答一个关键问题——我什么时候停止说话的。本文带你逐段看懂 Silero VAD 状态机源码搞懂它如何用三个变量和一对阈值自动判断语音的起止。为什么语音识别需要 VAD你按下键盘上的麦克风开始说话说完后并不需要再按一次停止。Transcribro 会在你停下来后自动结束录音把这句话交给 Whisper 转成文字然后继续监听下一句。️这个自动判停能力由 Silero VAD 提供它是一个极轻量的小型神经网络ONNX 格式对每一小段音频输出一个 0~1 的语音概率。但光有概率还不够——真正让判定稳定不抖动的是外面包着的一层状态机。Transcribro 的 VAD 默认配置参数在 MainRecognitionService.kt 中Transcribro 给状态机设定了这组参数⚙️参数值含义SAMPLE_RATE16000 Hz音频采样率START_THRESHOLD0.6语音开始概率阈值END_THRESHOLD0.45语音结束概率阈值MIN_SILENCE_DURATION_MS3000 ms确认真正停止所需的最小静音时长SPEECH_PAD_MS0 ms语音前后边界填充未启用注意开始阈值0.6高于结束阈值0.45中间形成滞回区间概率落在 0.45~0.6 之间时状态保持不变避免在边界附近来回抖动。Silero VAD 状态机拆解三个变量与四种状态整个状态机在 SileroVadDetector.kt 里只靠三个变量驱动triggered是否已检测到语音核心开关tempEnd静音开始的样本位置0 表示没有待定的结束currentSample当前已处理到的样本序号状态转移规则如下表当前状态触发条件状态机动作未触发概率 ≥ 0.6置 triggeredtrue返回start说话开始已触发概率 0.45若 tempEnd0 则记录当前位置开始静音计时静音计时中概率 ≥ 0.6清空 tempEnd——你还在说话取消结束判定静音计时中静音 ≥ 3000 ms返回end真的说完了重置全部状态静音计时中静音未达 3000 ms返回空继续等待对应源码分别是 开始判定逻辑 和 结束判定逻辑。apply() 每一步在做什么每次 apply() 接收一小段音频流程是累加currentSample把这段音频的样本数计入总长度调用 ONNX 模型得到语音概率speechProb若概率 ≥ 0.6 且存在待定的tempEnd先清空它——这是取消误判的关键一步你刚停顿了一下又开口结束计时立即作废若概率 ≥ 0.6 且尚未触发进入触发态并返回start若概率 0.45 且已触发开始并延续静音计时只有累计静音达到minSilenceSamples16000 × 3 48000 个样本即整整 3 秒才返回end。返回值里的start/end是样本序号不是秒数主服务直接用它们去切片音频。音频数据流从麦克风到状态机音频经过三层调用才进入状态机MainRecognitionService.kt麦克风以 16kHz、16bit 单声道持续读入缓冲逐块送入检测SileroVadRepository.kt把 16bit 整型样本除以 32767归一化到 -1~1 的浮点数组再交给检测器SileroVadOnnxModel.kt封装 ONNX Runtime 会话维护模型内部的 LSTM 隐状态两组 64 维的 h/c 张量让模型能记住上一小段音频。模型文件 silero_vad.with_runtime_opt.ort 以 ONNX 格式直接打包在应用的 assets 资源里随应用安装这也是端侧检测如此轻快的原因。reset() 重置流程为什么每句话说完都要清零每检测到一次end主服务都会调用 reset()把 LSTM 隐状态 h/c 归零见 resetStates()防止上一句话的声学特征泄漏到下一句triggered回到 false、tempEnd归 0、currentSample归 0开启全新的一轮检测。识别被取消或服务销毁时同样会触发重置保证状态机不会带着脏状态残留到下一次录音。状态机结果如何驱动整个识别流程在 MainRecognitionService.kt 中状态机的返回值被这样消费收到start→ 通知系统开始说话记录本句起点收到end→ 通知系统结束说话在后台线程用 Whisper 转写这一句、发出部分识别结果然后重置 VAD、开始监听下一句若开启了自动停止第一句结束后直接停止录音并返回最终结果。也就是说Silero VAD 是 Transcribro 的节奏指挥它决定何时开始、何时交棒给 Whisper、何时继续下一句而 Whisper 只负责把划定的音频片段转成文字。相关模块路径速查模块职责文件路径VAD 状态机核心SileroVadDetector.kt音频归一化与检测入口SileroVadRepository.ktONNX 模型封装SileroVadOnnxModel.kt检测器懒加载SileroVadLocalDataSource.kt阈值配置与流程调度MainRecognitionService.kt小结Transcribro 判断你何时停止说话的答案浓缩成一句话就是一个 0~1 的语音概率、一对 0.6/0.45 的滞回阈值、一个 3 秒的静音确认窗口再加上triggered、tempEnd、currentSample三个变量组成的状态机。轻量、确定、可解释——这正是端侧语音助手最需要的可靠性。【免费下载链接】TranscribroPrivate and on-device speech recognition keyboard and service for Android.项目地址: https://gitcode.com/gh_mirrors/tr/Transcribro创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/8/23 11:17:48

Pytest大厂测试实战:核心技巧与面试指南

1. 为什么Pytest成为大厂测试标配 在头部互联网企业的测试技术栈中,Pytest已经取代了传统的unittest和nose成为Python测试框架的首选。根据2023年最新的测试工具调研报告显示,超过78%的Python测试岗位要求候选人具备Pytest实战经验。这背后有几个关键原因…

2026/8/23 12:27:53

基于Argoverse 2的城市场景减速行为模式早期识别与分类

1. 项目概述:从轨迹数据中预见城市交通的“慢动作”在自动驾驶和智能交通系统的研发一线待了十几年,我处理过的轨迹数据少说也有几百个TB了。一个深刻的体会是:让机器理解车辆“为什么”减速,远比识别出“它正在减速”要困难得多。…

2026/8/23 12:27:53

具身智能核心架构:从ROS2桥接层到实时调度的C++实践

如果你最近关注机器人或人工智能领域,一定被“具身智能”这个词刷屏了。从年初的CES到近期的各大科技展会,它几乎成了最热门的标签,没有之一。然而,一个有趣的现象是:当你在展台前驻足,看到的机器人演示似乎…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/23 0:02:04

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/23 0:02:04

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/23 0:02:04

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/21 15:40:01

实测才敢推 AI论文网站 2026最新测评与推荐

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。一、综…

2026/8/23 6:14:43

2026必备!AI论文网站测评:最新推荐与深度对比

2026年真正好用的AI论文网站,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

2026/8/23 4:22:01

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…