基于Python的MORSE音频的波形和频谱(二)
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音频的波形和频谱(二)相关推荐
- 基于Python的MORSE音频的波形和频谱
1.需求分析 现有一个MORSE.wav的音频文件,要求使用Python读取该文件画出其波形和频谱. 2.代码实现 import wave import numpy as np import py ...
- 基于Python的QPSK音频的波形和频谱
1.需求分析 现有一个QPSK.wav的音频文件,要求使用Python读取该文件画出其波形和频谱. 2.代码实现 import wave import numpy as np import pyl ...
- 基于Python的BPSK音频的波形和频谱
1.需求分析 现有一个BPSK.wav的音频文件,要求使用Python读取该文件画出其波形和频谱. 2.代码实现 import wave import numpy as np import pyl ...
- 频谱分析:基于python画出时域频域波形
一,FFT解释 FFT(Fast Fourier Transformation)是离散傅氏变换(DFT)的快速算法.即为快速傅氏变换.它是根据离散傅氏变换的奇.偶.虚.实等特性,对离散傅立叶变换的算法 ...
- python信用评分卡_基于Python的信用评分卡模型分析(二)
上一篇文章基于Python的信用评分卡模型分析(一)已经介绍了信用评分卡模型的数据预处理.探索性数据分析.变量分箱和变量选择等.接下来我们将继续讨论信用评分卡的模型实现和分析,信用评分的方法和自动评分 ...
- 数据压缩|分析浊音音频时域波形,频谱的特点
浊音时域波形和频谱的特点: 本实验中采用的三个浊音为a,i,u:实验结果如下图所示 如上图所示,三个浊音时域波形具有周期性:从频谱中可以看出浊音的短时能量和短时平均幅度比较大,但是短时过零率低,,同时 ...
- python实时播放音频和录音_基于python的实时音频信号处理
我一直在尝试使用python中的"pyAudio"模块进行实时音频信号处理.我所做的只是一个简单的例子,从麦克风读取音频数据并通过耳机播放.我尝试了以下代码(Python和Cyth ...
- 元音音频时域波形与频谱的简洁分析
目录 元音时域及频谱分析 分析结果 元音时域及频谱分析 1. 时域: 频域: 2. 时域: 频域: 3. 时域: 频域: 分析结果 1.不同的元音,时域波形有较大区别: 元音信号的时域波形具有明显 ...
- Win10基于python,spleeter 人声提取工具安装和使用(全网最全,超详细)
Win10基于python,spleeter 音频分轨工具安装和使用(全网最全,超详细) 小声BB(不想看可直接跳到正片) 碎碎念(写给小白) 正片开始 说明 总体的框架 详细步骤 1.安装pytho ...
最新文章
- HiCar基本功能介绍
- mooc服务器返回数据为空,服务返回的json数据过大,nginx无法返回给client
- ae中心点重置工具_AE脚本:锚点中心点移动对齐脚本 Move Anchor Point 3
- 操作系统实验报告3:Linux 下 x86 汇编语言2
- 【Linux网络】Linux Socket编程 TCP协议
- 《零基础看得懂的C++入门教程 》——(5) 容我套个娃 循环
- 2057. 值相等的最小索引
- 启迪公交:DRDS助力城市公交系统智能化
- 能让你的Intellij IDEA 起飞的几个设置(设置背景 字体 快捷键 鼠标悬停提示 提示忽略大小写 取消单行显示)
- rust最低什么显卡能游戏_Steam游戏音轨终于能单独买 游戏显卡铭瑄值得选
- Filecoin Gas基础费率降至0.23 nanoFIL
- jquery层次选择器:空格 > next + nextAll ~ siblings
- 补一天三层的东西,ACL
- 【C#】通过Devcon.exe控制设备管理器中设备的启停
- IOS APP Store下载链接
- Windows禁用签名启动
- eMule电驴使用从入门到精通
- 【新手入门】deepfacelab的电脑配置要求
- 我把csdn版权标志隐藏了.
- java实现pdf的生成下载打印,java生成pdf电子账单,java生成pdf合同模板
热门文章
- FPGA之道(12)FPGA芯片的配置方式
- 【FPGA】ODDR使用研究记录
- 【 MATLAB 】legend 的使用简析
- Spartan-6的存储元件、多路复用器、快速先行进位逻辑、算术逻辑
- promise async 学习笔记
- 背水一战 Windows 10 (47) - 控件(ScrollViewer 特性): Chaining, Rail, Inertia, Snap, Zoom
- 正則表達式截取字符串两字符间的内容
- 《小印记》源码分享--极光推送服务器篇
- Huawei FusionCompute安装体验
- cocos2d中CCAnimation的使用(cocos2d 1.0以上版本)