我正在做声音延迟测试。我的设备将收到哔声信号或静音信号。我如何区分这些信号。请帮我。提前致谢..
3 回答
查看大约 10 ms 的样本(例如,44.1 kHz 的 441 个样本)并测量该缓冲区中的能量。如果它高于某个阈值,则它是一个信号,如果它低于阈值,则它是静音。
要测量能量,只需将缓冲区中每个样本的平方值相加,然后除以样本数。
这取决于。如果数字音频是合成生成的(例如通过另一个函数),那么您可以依赖这样一个事实,在一种情况下,您将获得真正的数字静音(归零样本),那么解决方案就是测试归零样本在测量窗口上。零以外的任何东西都不是沉默。
不过,我猜您正在处理从麦克风录制的真实音频。如果是这种情况,那么在时间窗口中测量能量并将其与阈值进行比较确实是有意义的。您必须确定的两个参数是:
- 阈值能级
- 时间窗口的长度
如果阈值太低,你的误报率就会太高;不是哔声的背景噪音可能会被解释为哔声。相反,如果您的阈值太高,您的系统可能会将哔声归类为噪音。幸运的是,如果您正在使用相当低的背景噪音进行音频,您的性能将不会对这个阈值非常敏感。
较长的窗口长度会降低这些误报/否定率,从而使您的系统更加健壮,但系统可用性可能会因窗口过长而受到影响。例如,自动电话系统对按键进行分类以帮助菜单导航。如果他们要求用户每次按住每个键三秒钟,准确性会提高,但会牺牲几乎所有的可用性。
我鼓励您不要像 Paul 建议的那样仅根据一个最大样本做出决定。这样做完全破坏了采样窗口长度提供的对误报的抵抗力。
如果他们使用环回方法,噪声是否考虑在内?例如,如果他们向第二个设备发送哔哔声,环回并将其发送回发送者,发送静音数据包并执行相同操作,他们不能在发送者级别测量延迟(前提是他们知道实际的网络延迟) .