74 Internet Technology 互联网 + 技术 一、引言 WAV 是 Microsoft 开发的一种声音文件格式,虽然它支持多种压缩格式,但是它通常被用来保存未压缩的声音数据(PCM 脉冲编码调制 )。WAV 有三个重要的参数:声道数、采样频率和量化位数。wav 文件最重要的就是声音信息的存贮,因此写入音频文件就以 wav 的文件格式。 二、技术原理 创建音频需要先了解几个产生声音的因素,声音是由震动产生,表现为波的形式,波有频率、振幅等参数。对于声波而言,频率越大,音调越高,反之越低。振幅越大,声音越大,反之越小。波是连续的(无穷的),计算机存储是离散的,要想用有限存储无限,这是不可能的,因此,要每隔一段时间对波进行一次采样,一般采样率是 44.1kHZ( k 既千位符号 ,1kHZ=1000HZ)。而波在每个时刻对应的有一个能量值,通常用 16bit 有符号整数进行存储,因此采样率通常为 16bit。 另外,创建音频,声道是极其重要的变量,通俗的解释声道是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号,所以声道数也就是声音录制时的音源数量或回放时相应的扬声器数量。运用 python 语言,在这里以 .wav 文件格式为例,引入库 wave、math、struct 等库,设置音频的基础变量,根据想要读写的音频,对各个变量进行合理的设置。 2.1 创建音频的主要参数 创建一个以 .wav 为后缀的文件,setframerate 为该 wav 音频设置采样频率,setnchannels函数设置声道数,声道数是不同发声的音响个数,它是衡量音响设备的重要指标,单声道的声道数为 1 个声道,双声道的声道数为 2 个声道,立体声道的声道数默认为 2 个声道,立体声道(4 声道)的声道数为4个声道,通常情况下音频单声道nchannels设置为1。音频的参数还有 sampwidth,它是量化位数,可以理解为声音的宽度,创建音频还需要音量 t,录入声音的时间 dt,另外还需将声音频率设为 -32768 到 32768,并且为正弦变化曲线。人耳能听到的声波频率范围是 20Hz ~20000Hz,并且人耳对 160Hz~2500Hz 的声音比较敏感,因此将声音频率转为 8bit 二进制数据,将这些写入音频文件中。 2.2 绘制波形图首先载入 python 的标准库,然后调用 wave.open 函数打 基于 python 的音频设计及频谱分析 □翟顺诚 河南大学(计算机科学与技术) 【摘要】 用 python 语言进行音频的开发十分高效,python 众多的库为开发提供了极大的便利。文中利用 python 语言对音频设计,介绍如何读写 WAV 文件,如何利用声卡实时地进行声音的输入输出,以及频谱分析的相关内容。 【关键词】 python 音频 声道 频率 开wav文件,注意使用”rb”(二进制模式)打开文件,用getparams一次性返回所有wav文件的格式信息,它返回的是一个元祖,wave 只支持非压缩的数据,因此可以忽略最后 getparams 函数的最后两个参数,之后通过 readframes 将getparams 返回的元祖获取到,由于 readframes 返回的是二进制数据,接下来将声道数和量化单位,将读取的二进制数据转换为可以计算的数组,fromstring 函数可将字符串转换为数组,由于我们的声音格式是以两个字节表示一个取样值,因此采用 short 数据类型转换。现在我们得到的 wave_data 是一个一维的 sh

python音频实时频谱分析_基于python的音频设计及频谱分析相关推荐

  1. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

  2. 基于python的音频播放器_基于python实现音乐播放器代码实例

    基于python实现音乐播放器代码实例,一首,函数,按钮,布局,音乐 基于python实现音乐播放器代码实例 易采站长站,站长之家为您整理了基于python实现音乐播放器代码实例的相关内容. 核心播放 ...

  3. python频谱分析_基于Python的频谱分析(一)

    1.傅里叶变换 傅里叶变换是信号领域沟通时域和频域的桥梁,在频域里可以更方便的进行一些分析.傅里叶主要针对的是平稳信号的频率特性分析,简单说就是具有一定周期性的信号,因为傅里叶变换采取的是有限取样的方 ...

  4. python多叉树遍历_基于Python的多叉树遍历算法

    [ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...

  5. python兼职平台信号处理_基于Python的数字信号处理初步

    作者:许欢 来源:EETOP 行者无疆(论坛usrname:ICNO.1) 的博客 Python 是目前的热门语言,一直觉得掌握一门编程语言对作为搞技术的来说还是很有必要的,结合工作中能用到的一些数据 ...

  6. 用python做双人五子棋_基于python的socket实现单机五子棋到双人对战

    基于python的socket实现单机五子棋到双人对战,供大家参考,具体内容如下 本次实验使用python语言.通过socket进行不同机器见的通信,具体可以分为以下四步:1.创建ServerSock ...

  7. 基于python的分布式扫描器_基于python的服务器监测系统的设计

    基于 python 的服务器监测系统的设计 高正 ; 徐浩 ; 余曼 [期刊名称] <电脑知识与技术> [年 ( 卷 ), 期] 2017(013)002 [摘要] 本文介绍了一种基于 P ...

  8. python人脸识别库_基于Python的face_recognition库实现人脸识别

    Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...

  9. 基于python的房地产数据分析_基于Python的数据分析

    转载 | CSDN 编辑 | 雷课小雷 下面来介绍一下基于Python的数据分析,主要介绍数据分析的概念.数据分析流程.Python优势.常用模块的用途以及使用Python进行数据分析的学习方法及步骤 ...

最新文章

  1. Java线程同步的一些例子
  2. asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...
  3. 爬虫-性能相关- twisted-tornado
  4. python 3.8.0安卓_Python 3.8.0 正式版发布,新特性初体验
  5. 博客园 文章和随笔区别 (转
  6. 手机抓直播源工具app_东方卫视 手机在线直播 央视源
  7. java递归求和_java递归算法求和有哪些方式实现?
  8. SPSS23第二版课后习题答案_全新版大学进阶英语综合教程3 Unit1unit3课后习题答案...
  9. 有趣的开源软件:语音识别工具Kaldi (一)
  10. server2003安装python3.4.4
  11. dos 查看wifi 密码命令
  12. 南通java培训地点,吐血整理
  13. 《代码本色:用编程模拟自然系统》作者Daniel Shiffman访谈问题有奖征集
  14. 第九届蓝桥杯JavaB组省赛真题
  15. matlab 输出矩阵 逗号隔开,在MATLAB中自定义矩阵时,矩阵同行元素之间用逗号隔开,而每一行元素之间用分号隔开。...
  16. matlab这么画三维函数图,matlab 画三维图函数
  17. 网站显示未连接上服务器,网站未连接上服务器是什么意思
  18. ArcGIS基础实验操作100例--实验23提取栅格有效边界值
  19. Rust之常用集合(三):哈希映射(Hash Map)
  20. idea批量修改变量快捷键mac_IDEA 快捷使用指南

热门文章

  1. oracle数据泵能增量吗,Oracle12c中数据泵新特性之功能增强(expdp, impdp)
  2. 分离圆环图显示百分比_excel这个百分比图,你不一定会制作
  3. python openpyxl合并单元格_用openpyxl分析xlsx文件的合并单元格
  4. .net安装_如何安装GWAS分析软件R包:GAPIT
  5. python数据分析系统_Python数据分析,系统步骤介绍!
  6. uc浏览器手机模拟_UC、华为、OPPO等8款手机浏览器被重点集中整治!原因是.........
  7. L2-016 愿天下有情人都是失散多年的兄妹(DFS)
  8. java第七章第九题_Java2程序设计基础第七章课后习题
  9. 实现 select中指定option选中触发事件
  10. 开发工程师需要知道的网站