一种方式我做到了:
>一次读取一个样本块,
说0.05秒的价值
>计算
块的RMS幅度(平方
根的平方的平方
个体样本)
>如果块的RMS幅度大于阈值,则它是“噪声块”,否则它是“安静块”
>突然的抽头将是一个安静的块,随后是少量的噪声块,随后是一个安静的块
>如果你从来没有得到一个安静的块,你的阈值太低
>如果你从来没有得到一个嘈杂的块,你的阈值太高
我的应用程序录音“有趣”的噪音无人值守,所以它会记录只要有嘈杂的块。如果存在15秒的噪声时段(“覆盖其耳朵”),则将阈值乘以1.1,并且如果存在15分钟的静默时段(“更倾听”),将阈值乘以0.9。您的应用程序将有不同的需求。
此外,只是注意到我的代码中有关观察RMS值的一些意见。在Macbook Pro上的内置麦克风上,使用/ – 1.0标准化音频数据范围,将输入音量设置为最大,一些数据点:
> 0.003-0.006(-50dB到-44dB)一个令人讨厌的中央暖风扇在我家
> 0.010-0.40(-40dB至-8dB)在同一台笔记本电脑上打字
> 0.10(-20dB)在1’距离处轻柔地攫取手指
> 0.60(-4.4dB)弹响指尖在1′
更新:这里是一个例子,让你开始。
#!/usr/bin/python
# open a microphone in pyAudio and listen for taps
import pyaudio
import s