gpt4 book ai didi

numpy - ifft(fft(audio)) 只是噪音

转载 作者:行者123 更新时间:2023-12-04 18:45:53 25 4
gpt4 key购买 nike

我是否只是嵌套它们( iff(fft(audio)) )或逐个窗口尝试( window 音频,执行 fft ,执行 ifft ,然后反转窗口,用 eps 替换零,然后合并样本回来(尝试 abs 在管道中到处都是))我只听到噪音。

我知道 ifft仅与 fft 相反使用无限精度算术、无限多样本等(对吗?)我正在使用 64 位浮点和 44kHZ 采样率。但是,我希望至少能够听到原始音频。

我的错误是实际的还是理论上的?我可以给代码,如果它是一个错误。

最佳答案

基于 JoeKington 的评论,我下载了 this file ,并尝试了以下

>>> import scipy.io.wavfile
>>> rate, data = scipy.io.wavfile.read('wahoo.wav')
>>> data
array([134, 134, 134, ..., 124, 124, 124], dtype=uint8)
>>> data_bis = np.fft.ifft(np.fft.fft(data))
>>> data_bis
array([ 134. +6.68519934e-14j, 134. -4.57982480e-14j,
134. -1.78967708e-14j, ..., 124. -2.09835513e-14j,
124. -1.61750469e-14j, 124. -2.14867343e-14j])
>>> data_bis = data_bis.astype('uint8')
C:\Users\Jaime y Eva\Desktop\stack_exchange.py:1: ComplexWarning: Casting complex values to real discards the imaginary part
# -*- coding: utf-8 -*-
>>> data_bis
array([134, 133, 133, ..., 123, 123, 123], dtype=uint8)
>>> scipy.io.wavfile.write('wahoo_bis.wav', rate, data_bis)

生成的文件与原始文件完全相同。

因此,将返回的复数值转换为实数只是问题的一半(并且您可能希望使用 np.abs 而不是 data.real ,正如上面的代码隐式所做的那样),然后您还需要将浮点数重新转换为 uint s 的适当位深度。

关于numpy - ifft(fft(audio)) 只是噪音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14574208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com