文档章节

写给小白的音频认识基础

叶大侠
 叶大侠
发布于 03/07 12:03
字数 1194
阅读 32
收藏 0
点赞 0
评论 0

初识音频

从初中物理上我们就学到,声音是一种波。计算机只能处理离散的信号,通过收集足够多的离散的信号,来不断逼近波形,这个过程我们叫做采样。怎么样才能更好的还原声音信息呢?这里很自然引出两个概念了。

声音波形图

采样频率(Sample Rate):每秒采集声音的数量,它用赫兹(Hz)来表示。

采样率越高越靠近原声音的波形,常见的采样率有以下几种:

  • 8khz:电话等使用,对于记录人声已经足够使用。
  • 22.05khz:广播使用频率。
  • 44.1kb:音频CD。
  • 48khz:DVD、数字电视中使用。
  • 96khz-192khz:DVD-Audio、蓝光高清等使用。

采样精度(Bit Depth): 它表示每次采样的精度,位数越多,能记录的范围就越大。

采样精度常用范围为8bit-32bit,而CD中一般都使用16bit。

把声音记录下来之后,通过喇叭的震动把波再还给空气传到你的耳朵就完成了这个完美的循环了。但是富有创造力的人类不会限制于此就结束了,很快人们发现,当把不同的声音传递到不同的喇叭的时候,竟然会惊奇地让声音变得有空间感了,即时是同一个声音,也比单个通道能获得更好的体验,于是就出现了什么立体声,5.1 环绕等看起来很高大上的东西。所以,音频又多了一个东西:

声音通道(Channel): 你知道每个通道存储的声音会从其中的一个喇叭出来就好了,不过可以通过算法的模拟来让没有那么多喇叭也能出来类似的效果。

有了声音通道,乐队在录音的时候就可以每个人插一条音轨了,然后每一个声音可以写到不同的通道里面,当然,实际录音当然都是后期混音而成的。下面介绍的其中一个混音算法会用到声音通道这个特性。

最后再介绍一个大家经常看到的概念:

比特率(bps [bits per second]): 其实看单位就很容易知道它要表达的意思了,就是每秒钟要播放多少 bit 的数据。公式一目了然:

比特率 = 采样率 × 采样深度 × 通道。

比如 采样率 = 44100,采样深度 = 16,通道 = 2 的音频的的比特率就是 44100 * 16 * 2 = 1411200 bps。

一般来说,比特率越高,音频质量越好。要注意一些比特率的换算不是 1024 作为一个级别换算的哈。

1,000 bps	= 【1 kbps】 =	1,000 bit/s
1,000,000 bps	= 【1 Mbps】 =	1,000,000 bit/s	
1,000,000,000 bps	= 【1 Gbps】 =	1,000,000,000 bit/s

音频在计算机中的表示

我们来看一下真实音频在计算机中究竟是怎样的表示状态,这里指的是原始的数据表示,而非编码(Mp3,Acc等)后的表示,平时我们看到的.wav后缀的音频,把前面 44 个字节用于记录采样率、通道等的头部信息去掉后就是就是原始的音频数据了。

WAV表示图

在理解了上面的概念之后,我们再来看这张图。对于文件头部信息我们就不详细介绍了,不影响我们理解介绍的混音处理方式,需要了解的可以点击这里

我们抽取其中的一个采样来看,这里我加多了一个通道,便于大家理解通道的存储位置。

音频采样图

不难理解,这个采样中有三个通道,每通道采样精度是 16 比特。每个采样值的排序是 Little-Endian 低位在前的方式,比如通道 1 的采样值就是 AB03, 每个采样值的大小表示的是幅度信息。

好了,先介绍到这里,希望对你有帮助,如果文章有理解错误的地方,请给我留言指出,感谢你的阅读,下一篇将会介绍有关音频混音的相关知识。

参考资料

  1. WAV文件格式
  2. 维基百科-比特率

不玩音乐的看到这里可以关闭了。

色彩浓重的广告时间:

如果你有玩音乐,我做了一个音乐学习和记录的辅助工具。刚在 Google Play 发布,音乐笔记+。我平时会用它来作即兴练习和合奏练习,这是个付费应用,你可以通过购买它对我表示支持。

以下是免费的:

© 著作权归作者所有

共有 人打赏支持
叶大侠

叶大侠

粉丝 56
博文 44
码字总数 67312
作品 5
广州
程序员
强烈谴责辱骂抹黑开源作者的恶劣行为

近日收到以下低素质用户的辱骂邮件,真的让人愤慨 fourinone到底挖了谁家的祖坟,至于这样变态吗? 一个坚持创新并自由分享的开源软件,居然一直有这种阴暗卑鄙的人对作者做人身攻击,并且到...

fourinone ⋅ 2015/12/08 ⋅ 2

专注才是第一生产力

写给自己的话: 在程序开发这个行业,学历不是最重要的,梦想,兴趣和坚持才是最重要的! 一个人是否成功,完全取决于对待工作的态度和投入的热情有多大!!要做就做最好。 坚持是获得成功的...

DevShaw ⋅ 2015/11/25 ⋅ 0

学爬虫先学什么?写给小白的python爬虫入门方法论

编者注:这是笔者基于自身在入门python爬虫一些感悟,而写作的——入门小参考或建议。本文没有过多讲述学习爬虫需要哪些库或代码,而是期望为初学者提供一些爬虫思维或方法论,从而快速入门。...

铁扇公主1 ⋅ 2017/06/13 ⋅ 1

iOS音频能力提升——PCM基础

前言 音频是移动端很重要的能力,像直播类、在线教育类、唱歌类、短视频类等APP,都离不开音频功能。 具备音频相关知识与能力,对未来的职业发展有很大优势。 本文主要围绕音频知识的基础——...

落影loyinglin ⋅ 01/14 ⋅ 0

写给小白的编程入门Tips

TIOBE Index 图片来自https://www.tiobe.com/tiobe-index/ 如何开始编程?我也不知道,我只知道我高中毕业时还没怎么接触过计算机,感觉那玩意儿很厉害,什么都可以干!大学选了计算机专业,...

翱翔云端 ⋅ 2017/10/23 ⋅ 0

机器学习资料发布(2017年7月29日第一次)

一、基础编程Python 1.安装Python Python下载地址 请下载2.7版本的,根据自己的电脑下载相应的,例如64位和32位,安装的时候很简单,有一个地方要改一下路径 安装教程 2.安装Anaconda和Jupyt...

hvolunteer ⋅ 2017/07/29 ⋅ 0

推荐:小白的Python新手教程​

这是小白的Python新手教程,具有如下特点: 中文,免费,零起点,完整示例,基于最新的Python 3版本。 从基础到Web开发,附带完整项目实战+iOS App,立刻猛击: 小白的Python新手教程...

廖雪峰 ⋅ 2015/08/04 ⋅ 3

根据变量的不同取值,重复执行命令序列(shell 第二天)

小白的shell之路 系统版本 Red Hat Enterprise Linux Server release 7.0 一:for循环的认识与应用 定义: 采用遍历式、列表式的执行流程,通过指定变量从值列表中循环赋值,每次复制后执行固...

Morning晨丿 ⋅ 04/29 ⋅ 0

Linux 服务器管理2(软件安装+编译)

在Linux上下载软件有三种方式: 1 在软件仓库里下载如(apt-get) 2 软件仓库里没有,去官网下载文件(编译好的可执行文件),本地安装 3 官网也没有,就去下载源码,先编译成可执行文件,后...

thinkando ⋅ 2017/12/04 ⋅ 0

这两天的设计入门知识的学习总结

这几天看了几本设计方面的书,有的只是扫扫就过了。 下面是个人的观感,非常主观,记录下来给以后的自己参考。 写给大家看的设计书 超好。亲密、对齐、重复、对比。四大原则,最高指导。 写给...

祁达方 ⋅ 2015/12/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

浅谈springboot Web模式下的线程安全问题

我们在@RestController下,一般都是@AutoWired一些Service,由于这些Service都是单例,所以并不存在线程安全问题。 由于Controller本身是单例模式 (非线程安全的), 这意味着每个request过来,...

算法之名 ⋅ 今天 ⋅ 0

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部