初衷 语音识别领域对音频文件进行频谱分析是一项基本的数据处理过程,同时也为后续的特征分析准备数据。

前驱知识

Python需要使用的相关库wave

https://docs.python.org/3/library/wave.html

pyaudio

http://people.csail.mit.edu/hubert/pyaudio/

numpy

https://www.runoob.com/numpy/numpy-tutorial.html

pylab

https://www.programcreek.com/python/example/2345/pylab.title

音频帧概率详解1.采样率(Sample Rate):每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。一般音乐CD的采样率是44100Hz,所以视频编码中的音频采样率保持在这个级别就完全足够了,通常视频转换器也将这个采样率作为默认设置。

2.帧率(Frame rate):是用于测量显示帧数的量度。所谓的测量单位为每秒显示帧数(Frames per Second,简称:FPS)或“赫兹”(Hz)。

3.码率(Bit Rate):指视频或音频文件在单位时间内使用的数据流量,该参数的单位通常是Kbps,也就是千比特每秒。通常2000kbps~3000kbps就已经足以将画质效果表现到极致了。码率参数与视频文件最终体积大小有直接性的关系

4.正常人听觉的频率范围大约在20Hz~20kHz之间,根据奈奎斯特采样理论,为了保证声音不失真,采样频率应该在40kHz左右。常用的音频采样频率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果采用更高的采样频率,还可以达到DVD的音质

对采样率为44.1kHz的AAC音频进行解码时,一帧的解码时间须控制在23.22毫秒内。

背景知识:

(一个AAC原始帧包含一段时间内1024个采样及相关数据)

分析:1.AAC

音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率(单位为s)

一帧 1024个 sample。采样率 Samplerate 44.1KHz,每秒44100个sample, 所以根据公式 音频帧的播放时间=一个AAC帧对应的采样样本的个数/采样频率

当前AAC一帧的播放时间是= 1024*1000/44100= 22.32ms(单位为ms)

2.MP3

mp3 每帧均为1152个字节, 则:

frame_duration = 1152 * 1000 / sample_rate

例如:sample_rate = 44100HZ时,计算出的时长为26.122ms,这就是经常听到的mp3每帧播放时间固定为26ms的由来。

3.H264

视频的播放时间跟帧率有关:

frame_duration = 1000/帧率(fps)

例如:fps = 25.00 ,计算出来的时常为40ms,这就是同行所说的40ms一帧视频数据。

打开提前准备的WAV文档,文件路径根据需要做修改wf = wave.open("文档路径", "rb")

创建PyAudio对象p = pyaudio.PyAudio()

stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),

channels=wf.getnchannels(),

rate=wf.getframerate(),

output=True)

nframes = wf.getnframes()

framerate = wf.getframerate()

读取完整的帧数据到str_data中,这是一个string类型的数据str_data = wf.readframes(nframes)

wf.close()

将音频波形数据转换为数组# A new 1-D array initialized from raw binary or text data in a string.

wave_data = numpy.fromstring(str_data, dtype=numpy.short)

将wave_data数组改为2列,行数自动匹配。在修改shape的属性时,需使得数组的总长度不变。

wave_data.shape = -1,2

将数组转置wave_data = wave_data.T

#time 也是一个数组,与wave_data[0]或wave_data[1]配对形成系列点坐标

#time = numpy.arange(0,nframes)*(1.0/framerate)

绘制波形图#pylab.plot(time, wave_data[0])

#pylab.subplot(212)

#pylab.plot(time, wave_data[1], c="g")

#pylab.xlabel("time (seconds)")

#pylab.show()

采样点数,修改采样点数和起始位置进行不同位置和长度的音频波形分析N=44100

start=0 #开始采样位置

df = framerate/(N-1) # 分辨率

freq = [df*n for n in range(0,N)] #N个元素

wave_data2=wave_data[0][start:start+N]

c=numpy.fft.fft(wave_data2)*2/N

常规显示采样频率一半的频谱d=int(len(c)/2)

仅显示频率在4000以下的频谱while freq[d]>4000:

d=10

pylab.plot(freq[:d-1],abs(c[:d-1]),'r')

pylab.show()

python音频频谱_小白音频测试之Python对音频进行频谱分析相关推荐

  1. 手机安装python的步骤_小白入门:Python安装的10个步骤,极其细致!!

    (2)3.X.X需要下载windows XXX executable installer 4. 下载完成后打开 (1)勾选Add Python 3.6 to PATH是把Python的安装路径添加到系 ...

  2. python 分班_小白如何学习python

    Python 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum 于1989年底发明,第一个公开发行版发行于1991年,Python 源代码同样遵循GPL(GNU Gener ...

  3. python花瓣飘零_小白请上车 | Python抓取花瓣网高清美图

    一:前言 嘀嘀嘀,上车请刷卡.昨天看到了不错的图片分享网-- 花瓣 ,里面的图片质量还不错,所以利用selenium+xpath我把它的妹子的栏目下爬取了下来,以图片栏目名称给文件夹命名分类保存到电脑 ...

  4. python编程基础_月隐学python第2课

    python编程基础_月隐学python第2课 学习目标 掌握变量的输入和输出 掌握数据类型的基本概念 掌握算数运算 1.变量的输入和输出 1.1 变量输入 使用input输入 input用于输入数据 ...

  5. 查看Python的版本_查看当前安装Python的版本

    一.查看Python的版本_查看当前安装Python的版本 具体方法: 首先按[win+r]组合键打开运行: 然后输入cmd,点击[确定]: 最后执行[python --version]命令即可. 特 ...

  6. python录音播放_“Duang”:用Python播放和录制音频2019-07-10

    内容 如果想用Python来播放或录制声音,那您就来对地方了!在本教程中,您将学习如何使用一些最流行的音频库在Python中播放和录制声音.您将首先了解最直接的播放和录制声音的方法,然后您将了解一些能 ...

  7. import pymysql 没有模块_小白详细的 python 模块的运用

    小白详细的 python 模块的运用 什么是模块 用书里的话说:模块是最高级别的程序组织单元.这句话的意思是,模块什么都能封装,就像这样: 在模块中,我们不但可以直接存放变量,还能存放函数,还能存放类 ...

  8. python画画用哪库好_小白开始学Python最著名的绘图库

    原标题:小白开始学Python最著名的绘图库 这是菜鸟学Python的第101篇原创文章 数据分析里面可视化是重要的环节,辛苦把数据采集,然后经历了很多工序的清洗之后,最后要展现给用户,最好的方法就是 ...

  9. python精通大学_小白21天精通Python是如何做到的?

    题记:大二的时候发现人生苦短,所以信了拍神,开始学Python.学了大半年之后成功转行做前端了.来写个教程帮助大家入门Python. Python零基础入门 零基础入门就得从最基本的变量,语法格式,数 ...

最新文章

  1. 创建Silverlight自定义启动画面
  2. 在SQL Server中判断一个作业是否正在运行
  3. POJ 3061 -- Subsequence(二分)
  4. jvm系列(四):jvm调优-命令篇
  5. [APIO2018] New Home 新家(线段树,二分答案,离散化)
  6. lnmp解析php,搭建LNMP,可以解析PHP文件-Go语言中文社区
  7. sql server 群集_SQL Server 2014 –安装群集实例–分步(1/3)
  8. Python基础学习1---函数
  9. 小程序学习笔记(8)-导航组件
  10. html一像素等于多少px,pt和px换算(一pt等于多少像素)
  11. 2021人工智能状况分析报告
  12. 关于Fabric中shim包的问题
  13. Excel数据透视,日期最大值或最小值显示为0
  14. Springboot毕设项目基于Java对运动心跳数据分析系统设计与实现455j4(java+VUE+Mybatis+Maven+Mysql)
  15. C语言 IP地址的转换
  16. 项目成本管理:项目成本控制
  17. 初识Spring MVC-0412-v1.0张雅慧
  18. 微信小程序获取系统日期和时间 —— 微信小程序教程系列(17)
  19. 高级语言,汇编语言,机器语言的关系
  20. 新闻 | 【聚焦】2021年世界互联网大会 数字化升级打牢网络基础建设地基

热门文章

  1. 弘辽科技:如何分析买家秀是否优质?如何优化评价、买家秀?
  2. 小米应用市场Aso,怎么做小米应用市场ASO?
  3. 忘记阿里云用户密码,如何修改
  4. 优维科技EasyOps6.0升级发布会,全程高能回顾
  5. 天工艺品-收藏界的“新宠”
  6. 关于if 判断中null为什写前边和在使用equals方法进行判断是为什么要 “1“.equals(str)
  7. uni轮播图添加页数
  8. BC20/BC26-opencpu移植cjson,mqtt等注意事项
  9. excel制作跨职能流程图_excel制作流程图的方法步骤图
  10. mac为什么又叫linux,为什么我从 Mac 换到了 Linux