音频之岁月留声
来源:互联网 发布:js防水防水涂料 编辑:程序博客网 时间:2024/04/30 00:54
花满楼原创,转载须授权。
听得到的,或听不到的声音,抽象来说,都是模拟信号,也可以形象一点,叫能量波,因为声音是有能量的,而且有大小变化,呈波形状。平常听到的声音都是复杂的波形,不会像单一频率的声音那么干净(比如正弦波、方波之类),但为了便于分析,经常会抽象为简单的波形。
小白:我听过单频率的声音,比如400hz,它是一个正弦波,随时间它的能量会变大变小,但为什么我听不出它有变化呢?
花满楼:400hz就是小蜜蜂嗡嗡啰,你听不出大小变化是因为频率太高了,这跟独立的图片以较高帧率显示就成了连续的,是一个道理。
声音有两个维度是很重要的,一个是能量,一个是频率。能量以时间为横向坐标,即某个时间点对应一个能量值(也叫振幅或气压),表现出来的就是波形图,也叫时域表示。
小白:能量这个好理解啊,在“音频之狮吼功”那篇文章中有介绍过。我能说声音的大小即响度就是振幅吗?
花满楼:振幅(能量)的确影响了响度。但响度是一个心理感知的东西,很难说只受振幅的影响,很可能还跟频率(音调高低)及持续的时间,甚至对比度都有关系,所以不能说响度就是振幅,只能说响度受振幅影响。
小白:要不要这么严格啊?
声音的频率维度,是一个很复杂的概念,不在本文展开,会另作介绍。
小白:频率不就是音调,即声音的高低吗?有什么复杂?
花满楼:频率怎么来?频率怎么表示?怎么从频率看音色?这些内容足够讲一篇文章了。即使是刚才说的波形图,也是没有展开讲包络与精细结构之类的概念的。
小白:……那还是回到正题,快点说怎么采集声音吧!
本文介绍声音的采集。
小白:你之前介绍过用ffmpeg来录制声音的,是不是那样采集?
花满楼:那是采集的应用层的实现,这次要介绍原理性的东西,而且不涉及录音师之类的工作,比如布mic、配音、拟音之类。
小白:好枯燥啊!
自然界的声音转换成数字编码,要经过电平化、放大、采样、量化、编码。
(一)电平化
比如,通过碳膜来对接声音。声音的能量推动话筒的碳膜,碳膜振动时触发跟它相连的电极,产生电信号。电平大小与碳膜的振幅相关,而这又与声音的能量有关。
(二)放大
通过话筒取到的电信号是微弱的,为了支持后续的处理,有必要通过放大电路把信号放大。
(三)采样
采样是模数转换(ADC)的过程,也就是把连续的电信号采样成离散的数值。
这里有一个概念叫采样率,采样率就是一秒钟一个声道采多少个样本。比如采样率为44100hz,则表示一秒钟一个声道采集了44100个样本(数值),如果一个样本用2个字节(即16bit)来表示,则对于双通道的同时采集(相当于两个话筒输入),一秒钟占的字节数是:44100*2*2=176400,约176kB,这样采集下去,如果不作处理,则大小不是一般的磁盘与带宽能够接受得了的,所以才会有编码压缩的引入。
小白:为什么要使用44100hz,使用10hz来采,不就没有那么大的占用了吗?
花满楼:你用10hz当然小很多啦,但10hz不能还原或逼近原模拟信号(最终是要播放即转换成模拟信号的)。这里有一个采样定理,即如果想还原出模拟信号,则采样率不能低于模拟信号的最高频率的2倍,也就是对于最高频率的一次全振动内,你至少也要采到两个点。对于人耳来说,听到的频率范围是20hz到20khz,所以可以认为最高的模拟信号的频率为20khz,那么采样的频率就要达到40khz才能保证还原模拟信号。
小白:那就40khz啊,为什么常见的是44.1khz呢?
花满楼:当时索尼公司正是人生的巅峰,而他使用了这个值,行业就都跟风去了。
(四)量化
采样得到样本后,用多少二进制位去表示它,这个就是量化,而多少位则为量化精度(位深)。
一般位深为16bit、24bit或32bit。
对于16bit,2^16=65536,20log(65536)约等于96dB,也就是16bit能表示96分贝的能量变化。从安静环境的30dB到演唱会的120dB,96dB都基本能覆盖上了。16bit的1bit就相当于6dB。
24bit与32bit也是量化精度的选择,因为会比16bit更细腻,但占的空间也更大。
小白:如果我选择1bit来表示会怎么样?
花满楼:1bit只有两个值,即0跟1,那它对应的电平值就只有两个等级,比如0dB跟100dB,中间的音量都听不到,结果就是表示的0dB你听不到,而表示的100dB又基本不出现,于是就什么声音都听不到。如果用2bit来表现,就有4个值,对应的电平等级就有4级,但层次还是不分明,不能细腻地表示变化。
(五)编码
这里的编码是指采样后电平值的表示方式。
pcm(脉冲编码调制)是常用的音频编码格式,也就是对每个采样的样本,用最接近的电平值(电平值的范围由量化精度决定)去表示,每个样本互相独立。
pcm编码格式在表示上,还可以细分为很多种,比如pcm_s16be、pcm_f32le、pcm_alaw之类。
显然,pcm编码是没有压缩的。
小白:这个pcm编码跟mp3、aac之类的编码有什么不一样?
花满楼:pcm编码是没有压缩数据的,它是采样时表示数据的一种方式。而mp3、aac之类则是对pcm数据的压缩编码。如果要播放,则要把压缩编码的数据,解码成pcm数据。
小白:除了这个方式,还有别的表示方式吗?
花满楼:还有一种有名的编码格式叫DSD,以44100的64倍的频率去采样,而每一个样本用1bit去表示,并且样本彼此关联。
小白:我都快睡着了,真是枯燥的“岁月留声”啊。
花满楼:……
开心时间
1、同学面试一大公司,录取二人,大概五六十个人报名。考题是:让考官在最短的时间内记住自己。我同学一句没说上去给考官一嘴巴,调头跑了。第二天通知他去上班。他思索许久放弃了。2、局长与科长共乘电梯,局长放一屁后对科长说:你放屁了。科长说:不是我放的。不久科长被免职。局长在会上说:屁大的事你都担待不起,要你何用?3、蜜蜂狂追蝴蝶,蝴蝶却嫁给了蜗牛。蜜蜂不解:他哪里比我好。蝴蝶回答:人家好歹有自己的房子,哪像你住在集体宿舍。4、一同学去食堂打饭,打到饭后问打饭师傅,“师傅,怎么你们沙子里面有米啊!!!”5、大二时,全宿舍的女生都喜欢周华建的歌,一盘磁带被大家借来借去的。一日,上铺的女生问:我的周华建呢?下铺的女生回答:在我床上呢!两秒钟寂静无声,然后全体翻倒在床。
多媒体开发,关联阅读
FFmpeg第一次约会
ffplay看直播,简洁是美
摄像头启动,开始监控
调试FFmpeg
组装FFmpeg,为我所用
从视频中抽几张图
流媒体服务器,给你好看
他们都在说的概念
媒体封装格式的时装show
音频之狮吼功
扫一扫下面的二维码直接加入技术讨论群:
在公众号对话框输入数字2,小编拉你进去程序员技术讨论群。
- 音频之岁月留声
- 岁月留声
- 毕业生之黄金岁月
- 岁月留香
- 岁月
- 岁月!
- 岁月
- 岁月
- 岁月
- 岁月
- 岁月
- 岁月留声的2015-F班破冰晚会
- 如歌岁月--之《老鹰之歌》
- 岁月留香,回忆依然
- 重生之激情燃烧岁月 小说阅读
- 重生之激情燃烧岁月完整篇
- 聆听祖国走过的岁月之乐章
- 周慧敏张曼玉关之琳赵雅芝 风华绝代不畏岁月
- 写一个函数,检测输入的数字旋转180度后是否相等,比如619旋转后还是619.
- linux系统结构及文件管理与寻址
- mysql的常用引擎:Innodb和MyIASM
- leetcode 65. Valid Number
- Route
- 音频之岁月留声
- 个人总结2
- oracle clob模糊查询
- 哈夫曼树+C怪谈
- Week6 513. Find Bottom Left Tree Value
- TaskAffinity
- 使用Jsp,Servlet等技术,该项目主要是实现用户登录,将数据库中的学生信息输出在浏览器上
- 文章标题
- Spring5.0的第一次尝鲜