【问题标题】:How to differentiate between silence pattern and a beep pattern in sound signals in iPhone OS如何区分 iPhone OS 中声音信号中的静音模式和哔声模式
【发布时间】:2010-02-10 13:52:19
【问题描述】:

我正在做声音延迟测试。我的设备将收到哔声信号或静音信号。我如何区分这些信号。请帮我。提前谢谢..

【问题讨论】:

    标签: iphone audio voip signal-processing


    【解决方案1】:

    查看大约 10 毫秒的样本(例如,44.1 kHz 的 441 个样本)并测量该缓冲区中的能量。如果高于某个阈值,则为信号,如果低于阈值,则为静音。

    要测量能量,只需将缓冲区中每个样本的平方值相加,然后除以样本数。

    【讨论】:

    • +1,但是对于这样一个简单的场景,我认为只计算最大绝对值就足够了,而且会更快。
    • @Steve -- 这取决于你是否有任何噪音——如果你只是看着纯音和完全静音,那么是的,你可能可以使用更粗略的解决方案。
    【解决方案2】:

    这取决于。如果数字音频是合成生成的(比如通过另一个函数),那么您可以依赖这样一个事实,在一种情况下,您将获得真正的数字静音(归零样本),那么解决方案就是测试归零样本在测量窗口上。零以外的任何东西都不是沉默。

    不过,我猜您正在处理从麦克风录制的真实音频。如果是这种情况,那么在时间窗口中测量能量并将其与阈值进行比较确实是有意义的。您必须确定的两个参数是:

    1. 阈值能量水平
    2. 时间窗口的长度

    如果阈值太低,你的误报率就会太高;不是哔声的背景噪音可能会被解释为哔声。相反,如果您的阈值太高,您的系统可能会将哔声归类为噪音。幸运的是,如果您在背景噪音相当低的情况下播放音频,那么您的性能对这个阈值不会很敏感。

    较长的窗口长度会降低这些误报/否定率,从而使您的系统更加健壮,但过长的窗口可能会影响系统可用性。例如,自动电话系统对按键进行分类以帮助菜单导航。如果他们要求用户一次按住每个键三秒钟,准确性会提高,但会牺牲几乎所有的可用性。

    我鼓励您不要像 Paul 建议的那样仅根据一个最大样本做出决定。这样做完全破坏了采样窗口长度提供的对误报的抵抗力。

    【讨论】:

    • 但是提问者说这只是一个声音延迟测试。根据我对问题的理解,麦克风噪音不是问题。
    • 对我来说,“声音延迟测试”意味着 KennyTM 将按顺序分析时间窗口,直到找到存在信号的时间窗口。他确定存在的方式取决于样本是否可能有噪音,所以我认为这些问题是正交的。不过,我认为我们可以同意,来自 KennyTM 的更多信息会有所帮助。
    • 感谢 Steve、Paul、Chunks 和 Seanmac 的所有回答。就我而言,所有这些都是正确的答案。基本上现在我现在只需要声音延迟测试。但在未来的情况下,Seanmac 的回答会对我有很大帮助,因为我将使用来自麦克风的声音。再次感谢..
    【解决方案3】:

    如果他们使用环回方法,噪声是否考虑在内?例如,如果他们向第二个设备发送哔哔声,环回并将其发送回发送者,发送静音数据包并执行相同操作,他们不能在发送者级别测量延迟(前提是他们知道实际的网络延迟) .

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 2018-08-11
      • 2017-09-24
      • 2020-04-26
      相关资源
      最近更新 更多