1、需求分析

  现有一个MORSE.wav的音频文件,要求使用Python读取该文件画出其波形和频谱。

2、代码实现

#coding:utf-8
import wave
import numpy as np
from scipy.fftpack import fft,ifft
import matplotlib.pyplot as plt
import seaborn
#打开wav文件 ,open返回一个的是一个Wave_read类的实例,通过调用它的方法读取WAV文件的格式和数据。
f = wave.open("F:\音频\wav\MORSE.wav","rb")
#读取格式信息
#一次性返回所有的WAV文件的格式信息,它返回的是一个组元(tuple):声道数, 量化位数(byte单位), 采
#样频率, 采样点数, 压缩类型, 压缩类型的描述。wave模块只支持非压缩的数据,因此可以忽略最后两个信息
params = f.getparams()
#nchannels:声道数
#sampwidth:量化位数(byte)
#framerate:采样频率
#nframes:采样点数
nchannels, sampwidth,framerate, nframes = params[:4]
#读取波形数据
#读取声音数据,传递一个参数指定需要读取的长度(以取样点为单位)
str_data  = f.readframes(nframes)
print (str_data)
print(params)
f.close()
#将波形数据转换成数组
#需要根据声道数和量化单位,将读取的二进制数据转换为一个可以计算的数组
wave_data = np.fromstring(str_data,dtype = np.short)
#通过取样点数和取样频率计算出每个取样的时间。
time=np.arange(0,nframes)/framerate/2#FFT处理的取样长度
fft_size = 8000
# 从波形数据中取样fft_size个点进行运算
xs = wave_data [:fft_size]
#于是可以通过下面的np.linspace计算出返回值中每个下标对应的真正的频率:
freqs=np.linspace(0,framerate/2, fft_size/2+1)yy=fft(xs)                     #快速傅里叶变换
yf=abs(fft(xs))                # 取模
yf1=abs(fft(xs))/((len(freqs)/2))           #归一化处理xf = np.arange(len(xs))-fft_size/2       # 频率
print(wave_data.max())
#原始波形
plt.subplot(211)
plt.plot(time,wave_data/29697)
plt.xlabel("time(s)")
plt.title('MORSE Original wave')
#混合波的FFT(双边频率范围)
plt.subplot(212)
plt.plot(xf,yf1,'r') #显示原始信号的FFT模值
plt.title('FFT of Mixed wave(two sides frequency range)',color='#7A378B')  #注意这里的颜色可以查询颜色代码表
plt.show()

3、实现结果

4、结果分析

  在pycharm运行中可以看出wav文件的格式信息如下:

  上图中第一条波形为音频文件的原始波形;第二条波形为原始波形的频谱图;第三条波形为归一化单边频谱图。

基于Python的MORSE音频的波形和频谱(二)相关推荐

  1. 基于Python的MORSE音频的波形和频谱

    1.需求分析   现有一个MORSE.wav的音频文件,要求使用Python读取该文件画出其波形和频谱. 2.代码实现 import wave import numpy as np import py ...

  2. 基于Python的QPSK音频的波形和频谱

    1.需求分析   现有一个QPSK.wav的音频文件,要求使用Python读取该文件画出其波形和频谱. 2.代码实现 import wave import numpy as np import pyl ...

  3. 基于Python的BPSK音频的波形和频谱

    1.需求分析   现有一个BPSK.wav的音频文件,要求使用Python读取该文件画出其波形和频谱. 2.代码实现 import wave import numpy as np import pyl ...

  4. 频谱分析:基于python画出时域频域波形

    一,FFT解释 FFT(Fast Fourier Transformation)是离散傅氏变换(DFT)的快速算法.即为快速傅氏变换.它是根据离散傅氏变换的奇.偶.虚.实等特性,对离散傅立叶变换的算法 ...

  5. python信用评分卡_基于Python的信用评分卡模型分析(二)

    上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...

  6. 数据压缩|分析浊音音频时域波形,频谱的特点

    浊音时域波形和频谱的特点: 本实验中采用的三个浊音为a,i,u:实验结果如下图所示 如上图所示,三个浊音时域波形具有周期性:从频谱中可以看出浊音的短时能量和短时平均幅度比较大,但是短时过零率低,,同时 ...

  7. python实时播放音频和录音_基于python的实时音频信号处理

    我一直在尝试使用python中的"pyAudio"模块进行实时音频信号处理.我所做的只是一个简单的例子,从麦克风读取音频数据并通过耳机播放.我尝试了以下代码(Python和Cyth ...

  8. 元音音频时域波形与频谱的简洁分析

    目录 元音时域及频谱分析 分析结果 元音时域及频谱分析 1. 时域: 频域: 2. 时域: 频域: 3. 时域: 频域: 分析结果 1.不同的元音,时域波形有较大区别:   元音信号的时域波形具有明显 ...

  9. Win10基于python,spleeter 人声提取工具安装和使用(全网最全,超详细)

    Win10基于python,spleeter 音频分轨工具安装和使用(全网最全,超详细) 小声BB(不想看可直接跳到正片) 碎碎念(写给小白) 正片开始 说明 总体的框架 详细步骤 1.安装pytho ...

最新文章

  1. HiCar基本功能介绍
  2. mooc服务器返回数据为空,服务返回的json数据过大,nginx无法返回给client
  3. ae中心点重置工具_AE脚本:锚点中心点移动对齐脚本 Move Anchor Point 3
  4. 操作系统实验报告3:Linux 下 x86 汇编语言2
  5. 【Linux网络】Linux Socket编程 TCP协议
  6. 《零基础看得懂的C++入门教程 》——(5) 容我套个娃 循环
  7. 2057. 值相等的最小索引
  8. 启迪公交:DRDS助力城市公交系统智能化
  9. 能让你的Intellij IDEA 起飞的几个设置(设置背景 字体 快捷键 鼠标悬停提示 提示忽略大小写 取消单行显示)
  10. rust最低什么显卡能游戏_Steam游戏音轨终于能单独买 游戏显卡铭瑄值得选
  11. Filecoin Gas基础费率降至0.23 nanoFIL
  12. jquery层次选择器:空格 > next + nextAll ~ siblings
  13. 补一天三层的东西,ACL
  14. 【C#】通过Devcon.exe控制设备管理器中设备的启停
  15. IOS APP Store下载链接
  16. Windows禁用签名启动
  17. eMule电驴使用从入门到精通
  18. 【新手入门】deepfacelab的电脑配置要求
  19. 我把csdn版权标志隐藏了.
  20. java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板

热门文章

  1. FPGA之道(12)FPGA芯片的配置方式
  2. 【FPGA】ODDR使用研究记录
  3. 【 MATLAB 】legend 的使用简析
  4. Spartan-6的存储元件、多路复用器、快速先行进位逻辑、算术逻辑
  5. promise async 学习笔记
  6. 背水一战 Windows 10 (47) - 控件(ScrollViewer 特性): Chaining, Rail, Inertia, Snap, Zoom
  7. 正則表達式截取字符串两字符间的内容
  8. 《小印记》源码分享--极光推送服务器篇
  9. Huawei FusionCompute安装体验
  10. cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)