转载于:https://blog.csdn.net/weixin_37779156/article/details/102813455

PCM整理

简介

PCM:又称脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。原理是用一个固定的频率对模拟信号进行采样,采样后的信号在波形上看就像一串连续的幅值不一的脉冲(脉搏短暂起伏的电冲击),把这些脉冲的幅值按一定的精度进行量化,这些量化后的数值被连续的输出、传输、处理或记录到存储介质中,所有这些组成了数字音频的产生过程(抽样、量化、编码三个过程)。

描述PCM数据的6个参数:

  • Sample Rate : 采样频率。8kHz(电话)、44.1kHz(CD)、48kHz(DVD)。
  • Sample Size : 量化位数。通常该值为16-bit。
  • Number of Channels : 通道个数。常见的音频有立体声(stereo)和单声道(mono)两种类型,立体声包含左声道和右声道。另外还有环绕立体声等其它不太常用的类型。
  • Sign : 表示样本数据是否是有符号位,比如用一字节表示的样本数据,有符号的话表示范围为-128 ~ 127,无符号是0 ~ 255。
  • Byte Ordering : 字节序。字节序是little-endian还是big-endian。通常均为little-endian。字节序说明见第4节。
  • Integer Or Floating Point : 整形或浮点型。大多数格式的PCM样本数据使用整形表示,而在一些对精度要求高的应用方面,使用浮点类型表示PCM样本数据。

PCM数据格式

如果是单声道的音频文件,采样数据按时间的先后顺序依次存入(有的时候也会采LRLRLR方式存储,只是另一个声道的数据为0),如果是双声道的话就按照LRLRLR的方式存储,存储的时候与字节序有关。big-endian模式如下图所示:

字节序

谈到字节序的问题,必然牵涉到两大CPU。那就是Motorola的PowerPC系列CPU和Intel的x86系列CPU。PowerPC系列采用big endian方式存储数据,而x86系列则采用little endian方式存储数据。那么究竟什么是big endian,什么又是little endian? big endian是指低地址存放最高有效字节(MSB,Most Significant Bit),而little endian则是低地址存放最低有效字节(LSB,Least Significant Bit)。

下面用图像加以说明。比如数字0x12345678在两种不同字节序CPU中的存储顺序如下所示: Big Endian 低地址 高地址 -----------------------------------------------------------------------------> | 12 | 34 | 56 | 78 | Little Endian 低地址 高地址 -----------------------------------------------------------------------------> | 78 | 56 | 34 | 12 |

所有网络协议都是采用big endian的方式来传输数据的。所以也把big endian方式称之为网络字节序。当两台采用不同字节序的主机通信时,在发送数据之前都必须经过字节序的转换成为网络字节序后再进行传输。

采样频率、量化精度(采样位数)和声道数

采样频率是设备一秒钟内对模拟信号的采样次数,在主流的采集卡上分为:(8Khz的电话采样率就可以达到人的对话程度)

  • 22.05KHz:无线电广播;
  • 44.1KHz:音频 CD,MP3等;
  • 48KHz:miniDV、数字电视、DVD、电影和专业音频。

人耳能够感觉到的最高频率为20KHz,要满足人耳的听觉要求,则需要每秒进行40K次的采样,即40KHz。常见的CD采样率为44.1KHz。

  • 采样位数比如8bit(现在少见)、16bit(常用)和24bit,指的是描述数字信号所使用的位数。
  • 声道数:声音在录制或播放时在不同空间位置采集或回访的相互独立的音频信号。
  • 单声道 采样数据为8位的短整数(short);
  • 双声道 采样数据为16位的证书,(int),高八位(左声道)和低八位(右声道)分别代表两个声道。
  • [时长]s [采样率]Hz [采样位数]bit * [声道数] / 8 = [文件大小]byte
  • 某音频信号是采样率为8kHz、声道数、位宽为16bit,时长为1s,则音频数据的大小为:1 8000 16 *2 = 256000 bit / 8 = 32000 byte / 1024 = 31.25 KB(双声道)

音频帧

音频和视频不一样,视频每一帧都是一张图像,音频数据是流式的,不同的编码格式各自不同的编码标准,拿PCM和MP3做一个对比。PCM因为没有压缩,根据采样率位宽等数据可以得到每秒的音频数据,并不需要帧的概念;MP3是因为压缩后信息比较多,则有了类似H264的帧概念,每一个帧都有帧头。

MP3原理

录播过程

播放音乐时,应用程序从存储介质中读取音频数据(MP3、WMA、AAC),进过解码后,最终送到音频驱动程序中的就是PCM数据,反过来,在录音是,音频驱动不停地把采样所得到的PCM数据送回给应用程序,有应用程序完成压缩、存储等任务。所以,音频驱动的两大核心任务就是:

  • playback:如何把用户空间的应用程序发货来的PCM数据,转化为人耳可以辨别的模拟音频
  • capture:把mic拾取得到的模拟信号,经过采样、量化,转化为PCM信号送回给用户空间的应用程序。

G711整理

  • g711是一种由国际电信联盟制定的一套语音压缩标准,主要用于电话语音通信,而人声最大频率一般在3.4kHz,所以只要以8k的采样频率对人声进行采样,就可以保证完全还原原始声音。
  • g711的内容是将一个13bit或14bit的样本编码成一个8bit的样本。
  • g711标准主要分两种压缩方法:a-law和mu-law,
  • a-law:将一个13bit的pcm样本压缩成一个8bit的pcm样本。
  • mu-law:将一个14bit的pcm样本压缩成一个8bit的pcm样本。

AAC

1:AAC解码整体流程简述

在主控模块开始运行后,主控模块将AAC比特流的一部分放入输入缓冲区,通过查找同步字得到一帧的起始,找到后,根据ISO/IEC 13818-7所述的语法开始进行Noisless Decoding(无噪解码),无噪解码实际上就是哈夫曼解码,通过反量化(Dequantize)、联合立体声(Joint Stereo),知觉噪声替换(PNS),瞬时噪声整形(TNS),反离散余弦变换(IMDCT),频段复制(SBR)这几个模块之后,得出左右声道的PCM码流,再由主控模块将其放入输出缓冲区输出到声音播放设备。

2:主控模块

主控模块的主要任务是操作输入输出缓冲区,调用其它各模块协同工作。其中,输入输出缓冲区均由DSP控制模块提供接口。输出缓冲区中将存放的数据为解码出来的PCM数据,代表了声音的振幅。它由一块固定长度的缓冲区构成,通过调用DSP控制模块的接口函数,得到头指针,在完成输出缓冲区的填充后,调用中断处理输出至I2S接口所连接的音频ADC芯片(立体声音频DAC和DirectDrive耳机放大器)输出模拟声音。

音频编解码(PCM、G711A、G711U、AAC)理解相关推荐

  1. 视音频编解码学习工程:FLV封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  2. 视音频编解码学习工程:JPEG分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  3. 视音频编解码学习工程:TS封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  4. 视音频编解码学习工程:H.264分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  5. 视音频编解码学习工程 H 264分析器

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! ==== ...

  6. 音频编解码·实战篇(1)PCM转至AAC(AAC编码)

    音频编解码·实战篇(1)PCM转至AAC(AAC编码) 作者:柳大·Poechant 博客:blog.csdn.net/poechant 邮箱:zhongchao.ustc@gmail.com 日期: ...

  7. G711(PCM/PCMA/PCMU),G721,G723,G729等 音频编解码

    G711,G721,G723音频编解码,G729音频库,Android G711(PCMA/PCMU).G726.PCM音频转码到AAC,ffmpeg接收g723音频流,Android G726语音编 ...

  8. Android G711A 音频编解码,去除“吱吱”电流声,附上so下载地址

    Android G711A 音频编解码,去除"吱吱"电流声,附上so下载地址. 下载地址:GitHub - Mr-Jiang/G711A: C++ for G711A coding ...

  9. 音频编解码·格式篇(1)Wave PCM audio format(WAV)

    音频编解码·格式篇(1)Wave PCM audio format(WAV) 作者:柳大·Poechant 博客:Blog.CSDN.net/Poechant 邮箱:zhongchao.ustc@gm ...

  10. 详解音频编解码的原理、演进和应用选型等

    本文来自网易云音乐音视频实验室负责人刘华平在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack根据演讲内容整理而成(本次演讲PPT文稿,请从文末附件下载). 1 ...

最新文章

  1. 优秀开发者和差的开发者之间区别
  2. ASP.NET Web Pages:表单
  3. ensp启动设备蓝屏_为什么早期的Windows经常死机蓝屏,现在却很少发生?这些你都知道吗?...
  4. C#基础篇三流程控制2
  5. Android安卓获取网络状态
  6. 学习思考 耐得寂寞 拥得繁华
  7. 应用实践 | 电商应用——一种基于强化学习的特定规则学习模型
  8. 实体与标识符的理解 0125
  9. quot在c语言里用法,C语言中“#”和quot;##quot;的用法
  10. TP5 使用redis
  11. 车辆动力学模型在仿真测试中的应用实践
  12. 关于职称评审的一些见解
  13. 网络基础3【网络层、数据链路层】
  14. HTML/CSS学习笔记(1)
  15. 【SAP ABAP学习资料】SQL查询分析器——程序代码
  16. 功放限幅保护_更改限幅电路的功放清单
  17. Spring MVC AOP切面失效原因与处理
  18. Angular项目中使用echarts中国地图
  19. Doris Weekly FAQ】2021.07.19~2021.08.01
  20. 爬虫用户要如何选择代理ip提供商?

热门文章

  1. HP的大中华区总裁 全球副总裁孙振耀退休感言
  2. 我的不羁成长岁月 - 大学时代
  3. 易中天品汉代风云人物01: 冤死的晁错(上)
  4. 面试常问的算法题,吐血总结,转载请注明出处,然后不要忘记点赞!
  5. 安全证书相关知识补充
  6. 星辰天合再度入选Venture50 风云榜及数字科技双榜单
  7. AIGC音乐生成#riff + diffusion 以生成频谱图图像来转换为音乐 | 无界日报 第2期
  8. 【单片机】脉冲计数(定时/计数器实验)
  9. 怎么把一张暗的照片调亮_如何解决图片太暗或者太亮的问题。
  10. 解决MongoDB问题:Due to limitations of the com.mongodb.BasicDocument, you cant add a second null criter