在python中将音频频谱图转换为巴克频率标度

2024-06-17 13:07:51 发布

您现在位置:Python中文网/ 问答频道 /正文

为了构建一个类似于RNNoise(https://jmvalin.ca/demo/rnnoise/)的降噪系统,我想将一个谱图转换为巴克频率标度。 我制作了以下函数,但速度非常慢:

bark_scale = [100, 200, 300, 400, 510, 630, 770, 920, 1080, 1270, 1480, 1720, 2000, 2320, 2700, 3150, 3700, 4400, 5300, 6400, 7700, 9500]
def convertToBark(spect, max_freq):
    band = max_freq/len(spect)
    bark = np.zeros((len(bark_scale)))
    current_freq = 0
    for i in range(0, len(bark_scale)):
        current_bark = []
        while current_freq * band < bark_scale[i] and current_freq<len(spect):
            current_bark.append(spect[current_freq])
            current_freq+=1
        bark[i] = tf.math.reduce_mean(current_bark)
    return bark

使用Numpy和Tensorflow函数,我认为有一个更快的解决方案,但我没有找到

我在下一个网站上查看树皮等级的值: https://ccrma.stanford.edu/~jos/bbt/Bark_Frequency_Scale.html

多谢各位


Tags: 函数httpsbandlendemocurrentmaxca