用python语言实现喇叭发声原理_一文看懂音频原理
笔者博客:mwhitelab.com
笔者公众号:技术杂学铺
前言
笔者最近正好在做和声音处理有关的项目,突然对音频数字化感兴趣,想了解一下基本原理。可网上文章知识都很散、排版也不美观。因此笔者便决定自己写一篇文章,整合一下数字音频的基本知识。
本篇博客为面向大众的科普性文章。涉及声音原理、音频文件属性、音频格式等方面。预计阅读时间为10分钟。
1.何为声音
中学物理中我们知道,声音是物体振动产生的声波。声音通过介质(空气、固体、液体)传入到人耳中,带动听小骨振动,经过一系列的神经信号传递后,被人所感知。
声音是一种波。物体振动时会使介质(如空气)产生疏密变化,从而形成疏密相见的纵波。
既然声音是波,那么我们就可以用图的形式来表示它。
给定空间中某一点,该点的空气疏密随时间的变化如下:波形图
下图是一个正弦波,其周期为0.002s,频率为500HZ。
该声音很像视频中的“消音”处理。
频率(音调):声音1秒内周期性变化的次数
人耳的听觉范围在20Hz-20kHz。 低频的声音沉闷厚重,高频的声音尖锐刺耳。 高于 20kHz的声音为超声波。
振幅(响度):声音的大小
有的时候,我们用分贝(dB)形容声音大小。值得注意的是,dB是一个比值,是一个数值,没有任何单位标注。(功率强度之比的对数的10倍)
2.声音采集与存储
采样,指把时间域或空间域的连续量转化成离散量的过程 。
对声音的采样常用麦克风等设备将声音信号转换成电信号,再用模/数转换器将电信号转换成一串用1和0表示的二进制数字(数字信号)。
我们每秒对声音采样上万次,获得上万个按照时间顺序排列的二进制数字。于是,我们就将连续变化不断的声音转化成了计算机可储存并识别的二进制数字。
如win10的关机音效:
该声音由84700个不同的数字组成。 其中的一段数字如下:(二进制数字已转换为十进制)
… 413, 263, 137, 15, -124, -253, -369, -463, -511, -545, -587, -632, -678, -701, -687, -659, -623, -579, -539, -473, -380, -282, -162, -35, 78, 211, 341, 430, 499, 548, 551, …
如果用图像的形式表示该音频,则图像如下:(横轴是时间,纵轴为振幅,两个图像分别代表左右声道。由于声音频率较大,所以在图像中的信号不是“正弦”,而是实心的。)
2.1 采样频率
采样频率指录音设备在一秒钟内对声音信号的采样次数。采样频率越高,声音的还原就越真实越自然。
目前主流的采样频率有22.05KHz、44.1KHz、48KHz三种。
22.05 KHz为FM广播的声音品质,44.1KHz为理论上的CD声音品质。48KHz为人耳可辨别的最高采样频率。
直观理解:一段连续的声音如下一段声音
我们等间隔地对其采样
最终,我们真正采样到的音频如下
如下图可见,采样频率越高,我们获得的声音品质越好。
2.2 量化位数
我们不可能获得所有时间下声音的强度,因此声音是等时间间隔、离散采样的。同样,采样获得的数据不可能无限的精确,如数字为63.2222222….,这无法在计算机中储存。因此,采样获得的数据同样也是离散的。
量化位数是音频文件的另一个参数。量化位数越大,声音的质量越高。常用的量化位数有8位、16位和32位。
量化位数指用几位二进制数来存储采样获得的数据。量化位数为8即指用8位二进制数来存储数据,如00010111
还是之前的例子,有一段正弦声波,假设量化位数为3,即存储的数据只有000/001/010/011/100/101/110/111这8种可能。
现在,还是等距离采样,不过采样的点只能落在最近的红线上。
此时,每个点纵坐标的取值只有二的三次方,即只有8中可能。
由下图可见,量化位数越大,声音效果越好。
另外值得注意的是,不同量化位数存储的数据不可直接比较。
如4位量化位数存储的1111,其十进制是15,8位量化位数存储的10000000,其十进制是64。不是因为64>15,所以后者对应的声音比前者大。而是应该二者分别除以其总取值范围后在比较。
前者对应的声音比后者大。
2.3 声道数
声道分为单声道与双声道。
单声道即为左右耳听到的声音相同。
双声道两耳听到的信息不同。相同的声音时间、采样频率和比特率的情况下,双声道文件的存储空间是单声道的两倍。但其会给人空间感,游戏和电影中常采用双声道,可达到“听声辨位”的效果。
示例声音如下:
3.音频格式
常见的音频格式有WAV,MP3,ACC等
3.1 WAV音频格式
WAV是微软开发的音频格式,支持音频压缩 ,但其常用来存放未经压缩的无损音频。由于未压缩,文件尺寸往往比较大,多用于存储简短的声音片段。
3.2 MP3音频格式
MP3是一种音频文件的有损压缩技术,用来大幅度地降低音频数据量。其可在没有明显声音品质受损的情况下,将音频文件压缩成其原文件的十分之一甚至是十二分之一。
3.3 AAC音频格式
相对于MP3,AAC格式的音质更佳,文件更小。可压缩至原文件的十八分之一。
3.4 其他APE 无损压缩,可将文件压缩为原来的一半
FLAC 无损压缩
4. 额外资料使用python实现对WAV音频文件的处理
https://wizardforcel.gitbooks.io/hyry-studio-scipy/content/17.html
用python语言实现喇叭发声原理_一文看懂音频原理相关推荐
- c++ socket线程池原理_一篇文章看懂 ThreadLocal 原理,内存泄露,缺点以及线程池复用的值传递问题...
编辑:业余草来源:https://www.xttblog.com/?p=4946 一篇文章看懂 ThreadLocal 原理,内存泄露,缺点以及线程池复用的值传递问题. ThreadLocal 相信不 ...
- 天线巴伦制作和原理_一文看懂巴伦(功能原理、性能参数、基本类型)
原标题:一文看懂巴伦(功能原理.性能参数.基本类型) 巴伦(英语为balun)为一种三端口器件,或者说是一种通过将匹配输入转换为差分输出而实现平衡传输线电路与不平衡传输线电路之间的连接的宽带射频传输线 ...
- mysql 大量数据 更改索引_一文看懂ICP原理--MySQL用索引去表里取数据的一种优化...
概述 今天主要介绍一下mysql的ICP特性,可能很多人都没听过,这里用一个实验来帮助大家加深一下理解. 一.Index_Condition_Pushdown Index Condition Push ...
- angular 字符串转换成数字_一文看懂Python列表、元组和字符串操作
好文推荐,转自CSDN,原作星辰StarDust,感觉写的比自己清晰-大江狗荐语. 序列 序列是具有索引和切片能力的集合. 列表.元组和字符串具有通过索引访问某个具体的值,或通过切片返回一段切片的能力 ...
- 判别两棵树是否相等 设计算法_一文看懂生成对抗网络 - GANs?(附:10种典型算法+13种应用)...
生成对抗网络 – GANs 是最近2年很热门的一种无监督算法,他能生成出非常逼真的照片,图像甚至视频.我们手机里的照片处理软件中就会使用到它. 本文将详细介绍生成对抗网络 – GANs 的设计初衷.基 ...
- mysql删除分表键_一文看懂 MySQL 分区和分表,提高表增删改查效率
原标题:一文看懂 MySQL 分区和分表,提高表增删改查效率 作者:冯帅,精通Oracle. MySQL. 擅长异构数据库数据同步及迁移.数据库的设计和调优,对高可用方案有深入研究. MySQL分区和 ...
- 计算机网络原理fin,一个动画看懂网络原理之TCP建立和释放过程
一个动画看懂网络原理之TCP建立和释放过程 一.TCP的概念 TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议.T ...
- python中row是什么意思_一文搞懂Python中的yield
关注公众号「Python七号」,及时 get Python 技能. yield 可以实现生成器,可以实现协程. 什么是生成器,什么是协程,如果还不了解,可以继续往下看,概念可以不懂,只要理解它的作用和 ...
- python输入什么就输出什么_一文读懂Python的输入和输出
本文介绍了Python的输入和输出,既然是Python代码,那么就一定有输出量,那么,Python是如何输出的呢? 输出 用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'h ...
最新文章
- 对比学习系列论文SimROD(二): A Simple Adaptation Method for Robust Object Detection
- [转载]windows phone 墓碑化(9)
- 如何备份和还原您的Kubernetes集群资源和持久卷?
- E: Some index files failed to download. They have been ignored, or old ones used instead.解决方案
- Java开发实战经典 目录
- [tyvj1957 Poetize5] Vani和Cl2捉迷藏 (最小路径可重点覆盖+二分图最大匹配)
- 互联网运营数据分析(1):流量分析
- ImportError: No module named matplotlib.pyplot
- lua学习 第二章数据与标准库
- kali系统添加开机启动项
- TI单节电量计基本介绍及常见问题解答
- python数据分析 - 卡方检验
- MK802与外部硬件设备的通讯
- 剑指Offer 27—二叉树的镜像
- 安全狗再次入选中国数字安全百强报告
- 计算机鼠标不动了,计算机鼠标不动了怎么解决?
- 纸上得来终觉浅,绝知此事要躬行——Spring boot任务调度
- 错误处理 宏 c语言,C语言零基础教程之预处理和宏定义篇
- 机器人开发--PX4 Autopilot介绍
- python3 自然语言处理_Python3NLTK-自然语言处理
热门文章
- directshow 虚拟摄像头 实例 代码解读
- Xamarin 打开相机 选择系统照片并上传服务器
- 旋风解析磁力php,梦见旋风磁力好不好?
- Java高尔夫_2011年高尔夫巡回赛
- 干货分享「UC3842内部工作原理」
- 盘点那些高考失利却仍然成功在各行各业的人
- 计算机的aero界面是一种,win7系统Aero特效是什么
- gow在windows上使用的linux shell命令,Windows模拟linux终端工具Cmder+Gow
- JavaSE基础篇---processon在线脑图分享
- python 网页微信_python-web微信实现