声波傅里叶变换Python代码
时间: 2025-01-06 15:32:53 浏览: 20
### Python 实现声波傅里叶变换
为了计算短时傅里叶变换 (STFT),理解离散傅里叶变换 (DFT) 的计算方法至关重要[^1]。下面是一个简单的例子,展示如何使用 `numpy` 和 `scipy` 库来实现对音频信号的快速傅里叶变换 (FFT),这是 DFT 的一种高效算法。
```python
import numpy as np
from scipy.io import wavfile
import matplotlib.pyplot as plt
def load_audio(file_path):
sample_rate, samples = wavfile.read(file_path)
return sample_rate, samples
def fourier_transform(signal, sample_rate):
n = len(signal)
freqs = np.fft.fftfreq(n, d=1/sample_rate)
fft_vals = np.fft.fft(signal)
# 只取正频率部分
positive_freqs = freqs[:n//2]
positive_fft = np.abs(fft_vals)[:n//2]*2/n
return positive_freqs, positive_fft
# 加载音频文件并执行傅里叶变换
sample_rate, audio_signal = load_audio('example.wav')
frequencies, amplitudes = fourier_transform(audio_signal, sample_rate)
plt.plot(frequencies, amplitudes)
plt.xlabel('Frequency [Hz]')
plt.ylabel('Amplitude')
plt.title('Spectrum of Sound Wave')
plt.show()
```
这段代码展示了加载 `.wav` 文件中的声音数据,并对其进行 FFT 处理的过程。通过绘制频谱图可以观察到不同频率成分对应的幅度大小。注意这里只显示了正频率范围内的结果,因为负频率的信息是对称冗余的。
阅读全文
相关推荐

















