您的位置:首页 > 健康 > 美食 > web网页代码模板_oa系统怎么用_seo搜索优化是什么_外贸怎么建立自己的网站

web网页代码模板_oa系统怎么用_seo搜索优化是什么_外贸怎么建立自己的网站

2025/3/29 6:38:44 来源:https://blog.csdn.net/weixin_49735366/article/details/146443749  浏览:    关键词:web网页代码模板_oa系统怎么用_seo搜索优化是什么_外贸怎么建立自己的网站
web网页代码模板_oa系统怎么用_seo搜索优化是什么_外贸怎么建立自己的网站

一 概念  

    最近需要用到这个数据。笔者需要,使用 Python 的numpy库结合scipymatplotlib库来计算并显示音频数据频谱信息的示例代码。我们将使用scipy.io.wavfile来读取音频文件,numpy进行快速傅里叶变换(FFT)计算频谱,最后用matplotlib来绘制频谱图。

二 源码解析:

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfiledef plot_audio_spectrum(file_path):# 读取音频文件sample_rate, audio_data = wavfile.read(file_path)# 如果音频是立体声,取单声道数据if len(audio_data.shape) > 1:audio_data = audio_data[:, 0]# 计算音频数据的长度audio_length = len(audio_data)# 进行快速傅里叶变换fft_data = np.fft.fft(audio_data)# 计算频率轴frequencies = np.fft.fftfreq(audio_length, 1 / sample_rate)# 取单边频谱frequencies = frequencies[:audio_length // 2]fft_data = 2.0 / audio_length * np.abs(fft_data[:audio_length // 2])# 绘制频谱图plt.figure(figsize=(12, 6))plt.plot(frequencies, fft_data)plt.title('音频频谱')plt.xlabel('频率 (Hz)')plt.ylabel('幅值')plt.grid()plt.show()if __name__ == "__main__":# 替换为你的音频文件路径audio_file_path = 'your_audio_file.wav'plot_audio_spectrum(audio_file_path)

三 代码解析:

  1. 读取音频文件:使用scipy.io.wavfile.read函数读取指定路径的音频文件,返回采样率和音频数据。
  2. 处理立体声音频:如果音频是立体声(即有多个声道),代码会选取第一个声道的数据进行处理。
  3. 执行快速傅里叶变换:使用numpy.fft.fft函数对音频数据进行快速傅里叶变换,得到频域表示。
  4. 计算频率轴:使用numpy.fft.fftfreq函数计算频率轴,该函数根据采样率和数据长度生成对应的频率值。
  5. 获取单边频谱:为了方便显示,代码只保留了单边频谱(正频率部分),并对频谱幅值进行归一化处理。
  6. 绘制频谱图:使用matplotlib库绘制频谱图,展示音频数据的频谱信息。

四 效果展示:

   笔者使用了一个192khz的原始音频数据,输入了一个20khz左右的tone信号,结果如下所示:

可以看出,能采集到信号的数据。   

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com