【问题标题】:Shifting a signal to a higher frequency range将信号移至更高的频率范围
【发布时间】:2021-08-28 19:50:05
【问题描述】:

我想使用 python 将音频文件从可听频段转移到高于 20kHz 的频段。 我一直在网上搜索如何做到这一点,我得到的最接近的是使用 fft.fftshift。

代码如下:

samplerate, data = wavfile.read('./aud/vader.wav')
fft_out = fft(data)
shifted = np.fft.fftshift(fft_out)

我希望“移位”成为 fft_out 的移位版本。它应该移动 20kHz 的幅度

【问题讨论】:

    标签: python audio signal-processing steganography


    【解决方案1】:

    fftshift 不会将原来的 20kHz 频段移动到更高的频段。

    您可以在手册中阅读:

    numpy.fft.fftshift¶ ... 将零频率分量移到 光谱的中心。此函数交换所有轴的半空间 列出

    例如,如果您想将 0Hz-20kHz 频段移动到 100kHz - 120kHz 频段,您可以将音频信号与频率为 100kHz 的余弦函数相乘。 这会产生两个频段 80kHz-100kHz 和 100kHz-120 kHz。 从产生的频谱中,您必须删除较低的频段 80kHz-100kHz。您必须为正频率和负频率执行此操作,它们在零轴上镜像。

    为什么会这样?

    cos(x) * cos(y) = 0.5 * ( cos(x+y) + cos(x-y) )
    

    如果 x 是您的音频频带的频率,y 是 100kHz 的移动频率,您会得到:

    cos(2pi*audiofrequency) * cos(2pi*100kHz) = 0.5 * (cos(2pi*(100kHz + audiofrequency)) + (cos(2pi*(100kHz - audiofrequency)) )
    

    【讨论】:

      猜你喜欢
      • 2013-01-08
      • 1970-01-01
      • 2011-05-04
      • 2016-08-26
      • 1970-01-01
      • 2016-01-27
      • 2015-11-17
      • 1970-01-01
      • 2013-06-23
      相关资源
      最近更新 更多