有关音频编码的知识与技术参数

2023-11-09

自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
   1、什么是采样率和采样大小(位/bit)?
  声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化电平数为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16次方。采样大小相对采样率更难理解,因为要显得抽象点,举个简单例子:假设对一个波进行8次采样,采样点分别对应的能量值分别为A1-A8,但我们只使用2bit的采样大小,结果我们只能保留A1-A8中4个点的值而舍弃另外4个。如果我们进行3bit的采样大小,则刚好记录下8个点的所有信息。采样率和采样大小的值越大,记录的波形更接近原始信号。
   2、有损和无损
  根据采样率和采样大小可以得知,相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,相对自然界的信号,任何数字音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DVD以及我们常见的WAV文件中均有应用。因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。我们而习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。强调编码的相对性的有损和无损,是为了告诉大家,要做到真正的无损是困难的,就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。
   3、为什么要使用音频压缩技术
  要算一个PCM音频流的码率是一件很轻松的事情,采样率值×采样大小值×声道数 bps。一个采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的WAV文件,它的数据速率则为 44.1K×16×2 =1411.2 Kbps。我们常说128K的MP3,对应的WAV的参数,就是这个1411.2 Kbps,这个参数也被称为数据带宽,它和ADSL中的带宽是一个概念。将码率除以8,就可以得到这个WAV的数据速率,即176.4KB/s。这表示存储一秒钟采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的音频信号,需要176.4KB的空间,1分钟则约为10.34M,这对大部分用户是不可接受的,尤其是喜欢在 电脑上听音乐的朋友,要降低磁盘占用,只有2种方法,降低采样指标或者压缩。降低指标是不可取的,因此专家们研发了各种压缩方案。由于用途和针对的目标市场不一样,各种音频压缩编码所达到的音质和压缩比都不一样,在后面的文章中我们都会一一提到。有一点是可以肯定的,他们都压缩过。
   4、频率与采样率的关系
  采样率表示了每秒对原始信号采样的次数,我们常见到的音频文件采样率多为44.1KHz,这意味着什么呢?假设我们有2段正弦波信号,分别为20Hz和20KHz,长度均为一秒钟,以对应我们能听到的最低频和最高频,分别对这两段信号进行40KHz的采样,我们可以得到一个什么样的结果呢?结果是:20Hz的信号每次振动被采样了40K/20=2000次,而20K的信号每次振动只有2次采样。显然,在相同的采样率下,记录低频的信息远比高频的详细。这也是为什么有些音响发烧友指责CD有数码声不够真实的原因,CD的44.1KHz采样也无法保证高频信号被较好记录。要较好的记录高频信号,看来需要更高的采样率,于是有些朋友在捕捉CD音轨的时候使用48KHz的采样率,这是不可取的!这其实对音质没有任何好处,对抓轨软件来说,保持和CD提供的44.1KHz一样的采样率才是最佳音质的保证之一,而不是去提高它。较高的采样率只有相对模拟信号的时候才有用,如果被采样的信号是数字的,请不要去尝试提高采样率。
   5、流特征
  随着 网络的发展,人们对在线收听音乐提出了要求,因此也要求音频文件能够一边读一边播放,而不需要把这个文件全部读出后然后回放,这样就可以做到不用下载就可以实现收听了。也可以做到一边编码一边播放,正是这种特征,可以实现在线的直播,架设自己的数字广播电台成为了现实 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有关音频编码的知识与技术参数 的相关文章

  • 国内几个主要的ubuntu 18.04 软件源

    1 阿里源 deb http mirrors aliyun com ubuntu bionic main restricted universe multiverse deb http mirrors aliyun com ubuntu b
  • Numpy学习(2)numpy向量化、numpy操作

    1 Numpy创建向量 Numpy创建的数组有时也称为向量 但要注意两者的区别 需要注意数组的秩 Numpy使用了优化的C api 运算速度快 在深度学习需要运用numpy向量化加快运算速度 NumPy底层用C语言编写 内部解除了GIL 全
  • LeetCode 841:钥匙和房间 Keys and Rooms

    题目 有 N 个房间 开始时你位于 0 号房间 每个房间有不同的号码 0 1 2 N 1 并且房间里可能有一些钥匙能使你进入下一个房间 在形式上 对于每个房间 i 都有一个钥匙列表 rooms i 每个钥匙 rooms i j 由 0 1
  • Oracle中的sqlldr

    Oracle sqlldr用法 sqlldr VGOPDW omzleSYC 565 TMDA CONTROL 63227 sqlldr CTL log 63227 sqlldr log SQL LOADER是ORACLE的数据加载工具 通
  • 三. go 常见控制结构实现原理之 range

    目录 一 基础问题 二 实现原理 1 遍历数组指针或slice 2 遍历map 3 遍历channel 一 基础问题 示例问题 如下程序是否能正常结束 main 函数中定义一个切片v 通过range遍历v 遍历过程中不断向v中添加新的元素

随机推荐

  • Linux系统编程(七)--线程控制

    文章目录 1 线程属性 1 1 pthread attr t 1 2 不同属性的作用 2 互斥量的共享属性 2 1 属性的初始化与回收 2 2 共享属性 3 互斥量的鲁棒属性 3 1 相关函数 3 2 互斥量状态一致性 4 递归型互斥量 4
  • 自定义easyui默认Loading及数据为空提示

    1 添加Loading遮罩层 默认Loading效果较简单 想要改变时 需要自定义Loading 2 自定义Loading 基本配置中定义 无数据时显示的提示信息 var emptyHtml div class empty data img
  • c++学习之函数模板案例--选择排序

    代码示例 include
  • 数组和指针的区别与联系(详细)

    一 概念 数组 数组是用于储存多个相同类型数据的集合 指针 指针相当于一个变量 但是它和不同变量不一样 它存放的是其它变量在内存中的地址 二 赋值 存储方式 求sizeof 初始化等 1 赋值 同类型指针变量可以相互赋值 数组不行 只能一个
  • mac charles永久激活码

    Registered Name https zhile io License Key 48891cf209c6d32bf4 https charles wrbug com charles 激活码在线生成
  • Crouse

    Yes
  • 设置ubuntu终端的命令行颜色

    第一步 sudo gedit bashrc 更改第43行 force color prompt yes 去掉注释 PS1将使用配色方案 PS1 debian chroot debian chroot debian chroot 033 01
  • 第五十二章 Unity Input System 新输入系统

    新输入系统InputSystem是2019年Unity新推出的插件 请注意 Unity默认使用旧的Input Manager 新的Input System处于未启用状态 当你安装Input System组件时 Unity会询问你是否启用新的
  • ubuntu-1804 配置 opevcv-4.0记录

    1 opencv安装包下载及解压 镜像地址 注意opencv contrib版本一致 下载zip压缩包 unzip opencv 4 0 0 zip unzip opencv contrib 4 0 0 解压后可以将版本号去掉 路径看起来好
  • 4399游戏Web前端工程师2021秋招面经

    4399游戏Web前端工程师2021秋招面经 概要 初面 hr面 复面 终面 总结 概要 由于4399秋招有单独开华工专场 所以很幸运免去了笔试 主要的流程是 笔试 初面 基础知识技术面 hr 面 复面 部门技术面 终面 类似主管面 我也不
  • python爬虫--破解登录环节的js加密:haodou

    看到一个网站的登录环节做了密码的加密 尝试着做了破解 权当对js破解的一个练习 网站 http www haodou com 登录url下面看到data如下 其中password和sso token明显是加密后的数据 搜索sso token
  • @Mapper注解

    目录 mybatis支持的映射方式有基于xml的mapper xml文件 基于java的使用Mapper接口class 从mybatis3 4 0开始加入了 Mapper注解 目的就是为了不再写mapper映射文件 接口方法注解主要是四个
  • [windbg] windbg symbol符号配置

    Symbol information 需翻墙
  • Spring源码学习-SpringBoot原理解析

    目录 SpringBoot 启动注解 EnableAutoConfiguration AutoConfigurationPackage Import AutoConfigurationImportSelector class Tomcat和
  • div contenteditable 限制文本框输入的文字个数

  • Flask 打印动态url内容

    Flask 文档 英文 http flask pocoo org docs 0 10 quickstart variable rules 中文 http www pythondoc com flask quickstart html id4
  • Git 第一次提交代码到远程分支

    1 创建远程仓库名称 创建远程仓库名称 2 复制远程仓库链接 这个链接到最后把本地库与远程库关联的时候要使用 复制远程仓库链接 3 到你要上传远程仓库的项目文件中点击右键 选择Git Bash Here 右键上传项目 右键选择Git Bas
  • Android学习之路-常用布局方式(4)

    设置视图间距有两种方式 layout margin 它指定了当前视图与周围平级视图之间的距离 包括 layout marginLeft layout marginTop layout marginRight layout marginBot
  • 微软 WSL 重装操作系统

    如果你对 WSL 还不怎么了解的话 请自行脑补下 简单理解就是 WSL 主要为了让你能够在 Windows 系统中运行 Linux 为什么需要这样 这是因为很多时候一些环境需要在 Linux 下运行 操作系统重装 如果希望对操作系统进行重装
  • 有关音频编码的知识与技术参数

    自然界中的声音非常复杂 波形极其复杂 通常我们采用的是脉冲代码调制编码 即PCM编码 PCM通过抽样 量化 编码三个步骤将连续变化的模拟信号转换为数字编码 1 什么是采样率和采样大小 位 bit 声音其实是一种能量波 因此也有频率和振幅的特