作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图创建一个音频滤波器,以使用贝叶斯统计方法抑制现场录音中的背景噪声。现场中的典型音频包含标准水平的背景噪声,当我尝试检测前景噪声时,这在我的情况下是不需要的。
使用numpy和scipy可以分析音频以确定样本的统计标准偏差。
在我的环境中,前景噪声通常具有与背景统计不同的功率密度。即密度值> =(2个标准偏差+平均值)功率密度(每个dft频点)
from scipy.io import wavfile
rate, audio = wavfile.read('test.wav')
buckets = 64
nperseg = buckets * 2
noverlap = 10
freq, time, density = signal.spectrogram(audio, fs=rate, window='hann',
nperseg=nperseg, noverlap=noverlap,
detrend=False, scaling='density')
stdev = density.std(1)
mean = density.mean(1)
density
的函数应用到
results
中。结果是功率密度的高对比度二维数组,其中值是0.0或1.0。
results = np.zeros((w,h))
sampleMean = mean.mean() # Average of averages
w,h = density.shape
for ww in range(w):
for hh in range(h):
# power density value
v0 = density[ww][hh]
# power density cutoff limit
v1 = (2 * stdev[ww]) + mean[ww]
if v0 > v1 and v0 > sampleMean:
results[ww][hh] = 1.0
density
和
results
。
最佳答案
一种方法是使用np.repeat将stddev矩阵和均值矩阵扩展为密度数组的大小。因此,如果只是向量化而不是使用嵌套的for循环,则它可能会大大加快速度。然后,您可以这样做,我假设stdev,v1的意思是numpy数组。
v1 = (2*stdev) + mean
v1_new = np.repeat(np.expand_dims(v1,axis=0), repeats = h, axis=0)
result[density>sampleMean and density>v1_new] = 1
关于python - 在二维数组上使用贝叶斯统计分析进行音频过滤的笨拙建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60962424/
我正在开发一个统计分析程序,它将计算很多东西。我不需要构建方面的帮助,因为我知道需要如何完成。我遇到的问题与我构建的数组有关。当我尝试显示数据时,我得到一个非常奇怪的输出。下面是输出 public c
我正在一个包含大约 100 万条记录的数据库中寻找模式。我一直在使用 Keras 和 TensorFlow,特别是 LSTM 进行一些实验, 但是,由于我是该领域的新手,因此我发现执行一些非常具体的查
我正在开发一个对用户数据执行回归分析的网络应用程序。 在后端,RoR 负责应用程序逻辑,所有统计分析均由 R 完成(因为 Ruby 的统计包很差)。 鉴于 R 和 RoR 都是单线程,并且该应用预计会
我是一名优秀的程序员,十分优秀!