- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道 Google 的 WebRTC VAD 算法使用高斯混合模型 (GMM),但是我的数学知识很弱,所以我不太明白这意味着什么。说它是一种基于统计的机器学习模型是否正确,对于 VAD 来说,它是一种经过训练可以识别语音与噪声的模型吗?
我正在写一篇论文,我已经创建了一个脚本,该脚本利用 API 来区分语音和噪音。它有效,但我需要在我的论文中从一个非常基本的层面解释它用来做出决定的机制。
最紧迫的是,我需要在某种程度上知道“攻击性”设置对算法的作用。它实际上只是规定了一个置信度阈值吗?它有任何声学影响吗?
更新:
我的超基本理解是:谷歌可能在一堆预先标记的“噪音”和“语音”上训练他们的模型并存储每个的特征;然后它采用一个未知样本,看看它更像噪音还是语音数据。我不知道测量的特征是什么,但我认为至少测量了音高和幅度。
它使用 GMM 来计算它属于一个群体或另一个群体的概率。
侵略性可能会设置用于做出决定的阈值,但我不完全知道这部分是如何工作的。
相关代码在这里:https://chromium.googlesource.com/external/webrtc/+/refs/heads/master/common_audio/vad/vad_core.c
“aggressiveness”设置确定以下常数(我显示模式 0 和 3 以进行比较):
// Constants used in WebRtcVad_set_mode_core().
//
// Thresholds for different frame lengths (10 ms, 20 ms and 30 ms).
//
// Mode 0, Quality.
static const int16_t kOverHangMax1Q[3] = { 8, 4, 3 };
static const int16_t kOverHangMax2Q[3] = { 14, 7, 5 };
static const int16_t kLocalThresholdQ[3] = { 24, 21, 24 };
static const int16_t kGlobalThresholdQ[3] = { 57, 48, 57 };
// Mode 3, Very aggressive.
static const int16_t kOverHangMax1VAG[3] = { 6, 3, 2 };
static const int16_t kOverHangMax2VAG[3] = { 9, 5, 3 };
static const int16_t kLocalThresholdVAG[3] = { 94, 94, 94 };
static const int16_t kGlobalThresholdVAG[3] = { 1100, 1050, 1100 };
最佳答案
跟踪代码,您会看到上面列出的预设 4 个值,它们根据“攻击性”而变化:kOverHangMax{1,2}*, kLocalThreshold*, kGlobalThreshold*
这些映射到这 4 个内部数组(以侵略性为索引):
self->over_hang_max_1[], self->over_hang_max_2[], self->individual[], self->total[]
vad_core.c
中的第 158 行,我们看到根据帧长度使用不同的值。
frame_length
是正在分析的音频的“原子”或“块”:
// Set various thresholds based on frame lengths (80, 160 or 240 samples).
if (frame_length == 80) {
overhead1 = self->over_hang_max_1[0];
overhead2 = self->over_hang_max_2[0];
individualTest = self->individual[0];
totalTest = self->total[0];
} else if (frame_length == 160) {
overhead1 = self->over_hang_max_1[1];
overhead2 = self->over_hang_max_2[1];
individualTest = self->individual[1];
totalTest = self->total[1];
} else {
overhead1 = self->over_hang_max_1[2];
overhead2 = self->over_hang_max_2[2];
individualTest = self->individual[2];
totalTest = self->total[2];
}
vad_core
)为它提供
frames_length
音频块。因此,如果您使用 VAD 播放的音频文件时长为 10 分钟,则该音频上的滑动窗口将生成
frame_length
块并将其传递给此代码。
frame_length
小 (80),分辨率 (10ms) 是细粒度的,VAD 信号将非常精确。更改将被准确跟踪,VAD 估计将是“合理的”...当
frame_length
大 (240) 则分辨率更“粗”,并且 VAD 信号与信号语音事件的微小(<30 毫秒)变化不协调……因此“不那么谨慎”。
关于audio - Google 的 WebRTC VAD 算法(特别是 "aggressiveness"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55656626/
看起来 git gc --aggressive 确实清理了我的存储库,但是当我执行 git push 时,一切都已经是最新的了。有没有办法清理服务器? 最佳答案 我知道 Github 会定期运行 gi
安卓官方proguard documentation显示了两个主要优化: 设置 minifyEnabled至true 使用 proguard-android-optimize.txt而不是 progu
有很多关于“如何从 repo 中删除意外添加的大文件”的问题,其中许多建议使用 git gc 命令。但是,我发现它对我不起作用,而且我不知道出了什么问题。 这是我所做的: $ git init Ini
什么MethodImplOptions.AggressiveOptimization到底怎么办? Microsoft's documentation并没有告诉我太多。它在哪些情况下有用? 最佳答案 我
我正在寻找减小 git 大小的方法存储库。搜索将我带到 git gc --aggressive大多数时候。我还读到这不是首选方法。 为什么?如果我正在运行,我应该注意什么 gc --aggressiv
我正在一个非常大的 repo (apx 100 gb) 上运行 git gc --aggressive。它从两天前的晚上开始运行,到几个小时后,一直卡在:“压缩对象:99% (76496/76777)
我偶然发现了这个问题:Button in ContentView causes crash in MonoTouch runtime. Bug in Monotouch 4.0?并且询问者对 Mono
我正在尝试在我的系统中编译并安装 PostgreSQL。我的操作系统是 Debian 9 gcc-4.9 下面发布的是我的错误 The database cluster will be initial
我目前正在调试我的 PWA 二维码扫描器,它使用了很棒的库 Instascan .它在除 iOS 以外的任何地方都运行良好,我正在尝试找出原因。不幸的是,我的尝试被 Safari 的积极缓存停止了。
我知道 Google 的 WebRTC VAD 算法使用高斯混合模型 (GMM),但是我的数学知识很弱,所以我不太明白这意味着什么。说它是一种基于统计的机器学习模型是否正确,对于 VAD 来说,它是一
我正在尝试使用 R 的 gsub("regexp", "", string, perl=T) 删除两个给定子字符串之间的所有字符(包括换行符) (即用空字符串替换所有匹配项)。 到目前为止我所拥有的是
是否有任何 C 或 C++ 编译器可以为 volatile 变量实现“积极的”内存一致性模型?我所说的“激进”一致性模型是指在生成的代码中伴随着对 volatile 变量的所有写入和内存屏障。 据我所
我正在尝试使用 scikit learn 中的“被动攻击分类器”和 20 个新闻组数据集来实现在线分类器。我对此很陌生,因此我不确定我是否正确实现了这一点。话虽这么说,我开发了一个小代码,但当我执行它
我是一名优秀的程序员,十分优秀!