Audio-初识

这篇具有很好参考价值的文章主要介绍了Audio-初识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

跳动的音符,婉转的节奏,悠扬的歌声……

音乐无疑是最能愉悦身心的方式之一,那么歌手的音调、音色是如何存储到手机中,又是如何通过喇叭播放出来的呢?

下面我将通过几篇博客阐述我对音频的理解及部分调试经验,本章主要介绍音频的的基础知识

信号分类

声音严格意义来讲应该被叫做声音信号,而在维基百科中对于信号的定义是表示消息的物理量,这样就很好理解了声音信号就是以声音为载体的一个物理量。而自然界中信号可以有如下的分类
Audio-初识

因此,按照信号变化分类声音信号属于随机信号;按照信号特征分类声音信号属于模拟信号

模数转换

上一部分了解到声音是模拟信号,而对于计算机来讲其只能处理数字信号即0和1,所以必须需要将声音模拟信号转换成数字信号,而这个过程叫做模数转换(Analog Digital Conversion),相应的完成该功能的硬件单元就叫做模数转换器(ADC)

完成该过程需要三部曲分别是:采样、量化、编码,整体过程如下图:

Audio-初识

采样

重要参数:采样率

  • 定义:在时间轴上对信号进行离散化
  • 原理:按照一定的频率对模拟信号的瞬时时刻进行样本采集

其实采样作用通俗理解就是是采集样本。由于模拟信号是连续的,理论上我们需要采集无数个点才能完整的还原该信号,但是一来无穷的概念是不可能满足的,二来我们其实并不需要这么高的采样率。我们听觉是有延迟的就和视频帧不停的刷新欺骗我们的眼睛是画面连续的是一个道理。

所以采样率越高,声音的还原就越真实越自然,人对频率的识别范围是 20HZ - 22000HZ, 如果每秒钟能对声音做 22000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多。

量化

相关参数:采样位数

  • 定义:在幅度轴上对信号进行数字化

  • 原理:对采样点的幅度赋予具体的数值,该数值由n位二进制表征(n = 8 / 16 / 32)

采样位数越高说明划分的等级越精细。较低的采样位数损失精度,较高的采样位数可能造成软硬件资源的浪费

小常识:标准CD音乐的质量就是16bit、44.1KHz采样

编码

定义:按照一定的格式记录 采样 和 量化 后的数据。后续会对部分格式的存储格式进行分析

编码分类

该部分内容转自 https://www.jianshu.com/p/28d3f108ef63

波形编码
  • 定义:不利用生成音频信号的任何参数,直接将 时间域信号 变换为 数字代码,使重构的语音波形尽可能地与原始语音信号的 波形形状 保持一致。
  • 原理:在 时间轴 上对模拟语音信号按一定的速率抽样,然后将幅度样本分层量化,并用代码表示。
参数编码

从语音 波形信号 中提取生成语音的参数,使用这些参数通过语音生成模型重构出语音,使重构的语音信号尽可能地保持原始语音信号的语意。也就是说,参数编码是把语音信号产生的数字模型作为基础,然后求出数字模型的模型参数,再按照这些参数还原数字模型,进而合成语音。

混合编码

混合编码是指同时使用两种或两种以上的编码方法进行编码。这种编码方法克服了波形编码和参数编码的弱点,并结合了波形编码高质量和参数编码的低编码率,能够取得比较好的效果。

  • WAV编码(波形编码)

    WAV是编码的一种实现方式(其实它有非常多实现方式,但都是不会进行压缩操作)。就是在源 PCM 数据格式的前面加上44个字节。分别用来描述 PCM 的采样率、声道数、数据格式等信息。

  • MP3编码

    MP3编码具有不错的压缩比,而且听感也接近于WAV文件,当然在不同的环境下,应该调整合适的参数来达到更好的效果。

  • AAC编码

    AAC是目前比较热门的有损压缩编码技术,并且衍生了LC-AAC、HE-AAC、HE-AAC v2 三种主要编码格式。

    **LC-AAC:**是比较传统的AAC,主要应用于中高码率的场景编码(>= 80Kbit/s)
    HE-AAC: 主要应用于低码率场景的编码(<= 48Kbit/s)

  • Ogg编码(有损)

    Ogg编码是一种非常有潜力的编码,在各种码率下都有比较优秀的表现。尤其在低码率场景下。Ogg除了音质好之外,Ogg的编码算法也是非常出色。可以用更小的码率达到更好的音质。128Kbit/s的Ogg比192Kbit/s甚至更高码率的MP3更优质.但目前由软件还是硬件支持问题,都没法达到与MP3的使用广度.

音频参数

一段悠扬的音乐经过采样、量化、编码就保存数字信号文件,而我们最终的目的一定不是只存成文件而是通过文件形式传播让更多人听到该音乐,因此一定存在DA转换,即还原数字信号为模拟信号的过程。那么在整个过程中有哪些参数表征了音频重要的信息呢?

不仅限于webrtc、ffmpeg、libmad等等音频编解码库,对于所有编解码器和codec来讲,音频源数据的三个参数至关重要:声道channel、采样率sampleRate、采样位数sampleBit。这三个参数之所以重要是因为有这几个参数就可以准确的知道一个裸的音频数据(PCM)的全部信息了。

声道

声道是指音频文件在录制时音源的数量位置和播放时相应的扬声器的数量(百度百科)。所以可想而知,其他参数相同的情况下,声道数越多定位越精准,同样所需扬声器和功放组件越多。

  • 单声道(mono)
  • 双声道(stereo 立体声):左声道 + 右声道,低音不分离,应用于音乐播放较多
  • 2.1声道 :左声道 + 右声道, 低音分离
  • 5.1声道 :左声道 + 右声道 + 低音声道 + 中央声道 + 左环绕 + 右环绕,应用于类传统影院和家庭影院中
  • 7.1声道 :左声道 + 右声道 + 低音声道 + 中央声道 + 左环绕 + 右环绕 + 左后环 + 右后环,常见的包括:Dolby Surround 7.1杜比7.1环绕声

采样率

采样率可以理解为采集样本的速率(故也可以称为采样速度或者采样频率),它定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。

例如:采样率为44100,意味着每秒钟对连续的声音信号采集44100次,同样对应得到的数字信号每秒的样本数量(具体可以参考采样过程)

采样位数

采样位数就是指某一瞬时时刻,量化声音大小(精细程度)的计量单位

  • 8bit ( 1Byte ) 对应0~255,将振幅划分为256个等级
  • 16bit (2Byte) 对应0~65535,将振幅划分为65536个等级

样本格式

样本组合形式

  • 交错模式:每个声道的样本数据交错存储排布
  • 平面模式:每个声道的样本数据分开存储

下面以stereo模式进行图示解释(C代表Channel):

Audio-初识

FFmpeg 样本组织形式介绍

  • Packed格式,frame.data[0]包含所有的音频数据。
  • Planar格式,frame.data[i]表示第i个声道的数据(假设声道0是第一个)

FFmpeg 主要样本格式

enum AVSampleFormat {
    AV_SAMPLE_FMT_NONE = -1,
    AV_SAMPLE_FMT_U8,          ///< unsigned 8 bits
    AV_SAMPLE_FMT_S16,         ///< signed 16 bits
    AV_SAMPLE_FMT_S32,         ///< signed 32 bits
    AV_SAMPLE_FMT_FLT,         ///< float
    AV_SAMPLE_FMT_DBL,         ///< double
 
    AV_SAMPLE_FMT_U8P,         ///< unsigned 8 bits, planar
    AV_SAMPLE_FMT_S16P,        ///< signed 16 bits, planar
    AV_SAMPLE_FMT_S32P,        ///< signed 32 bits, planar
    AV_SAMPLE_FMT_FLTP,        ///< float, planar
    AV_SAMPLE_FMT_DBLP,        ///< double, planar
    AV_SAMPLE_FMT_S64,         ///< signed 64 bits
    AV_SAMPLE_FMT_S64P,        ///< signed 64 bits, planar
 
    AV_SAMPLE_FMT_NB           ///< Number of sample formats. DO NOT USE if linking dynamically
};

说明:以P为结尾的是planar结构;Planar模式是FFmpeg内部存储模式,我们实际使用的音频文件都是Packed模式的。

比特率

比特率指的是单位时间播放连续的媒体如压缩后的音频或视频的比特数量,在这个意义上讲,它相当于术语数字带宽消耗量,或吞吐量。单位bps / Kbps(bit per second)这里是bit而不是Byte(1Byte = 8bit)

虽然经常作为“速度”的参考,比特率并不测量“‘距离’/时间”,而是被传输或者被处理的“‘二进制码数量’/时间”,所以应该把它和传播速度区分开来,传播速度依赖于传输的介质并且有通常的物理意义。(来自维基百科)

参数关系

对于PCM裸数据: 文件时长 ≈(文件总大小 - 头信息)/ (采样率 * 采样位数 * 通道数 / 8) [也就是比特率]

更多内容请关注:yanglieee.com 持续更新!文章来源地址https://www.toymoban.com/news/detail-402457.html

到了这里,关于Audio-初识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 利用Arduino制作音乐播放+随节奏闪光仪器实现

    利用Arduino制作音乐播放+随节奏闪光仪器实现

    Arduino开发板,面包板一块,杜邦线若干,LED灯若干,220欧电阻若干,蜂鸣器一个。 将六个led灯的正极依次接到arduino板I/O接口的2-7口, 电源负极依分别接一个220欧的电阻 。 整体负极接arduino板的GND接口。 蜂鸣器正极接arduino板I/O接口的8口,负极接GND。

    2023年04月24日
    浏览(12)
  • 太好玩了!用Python做音乐节奏可视化!

    太好玩了!用Python做音乐节奏可视化!

    大家注意:因为微信最近又改了推送机制,经常有小伙伴说错过了之前被删的文章,比如前阵子冒着风险写的爬虫,再比如一些限时福利,错过了就是错过了。 所以建议大家加个星标,就能第一时间收到推送。👇 国外有个网友分享了他的python音乐节奏可视化方案。上方的视

    2024年02月07日
    浏览(9)
  • 预制菜的崛起:味觉革命还是快节奏生活的产物?

    引言 预制菜的定义和种类 市场概况:一路繁荣 预制菜的优势:快速、便捷、美味 质量问题与消费者疑虑 行业标准与监管:确保食品安全 未来展望:科技与良性发展 总结 引言 随着生活节奏的加快,预制菜在中国市场上的需求正在迅速增长。据统计,2022年,中国预制菜市场

    2024年02月16日
    浏览(9)
  • PICO4开发实战一:节奏光剑(VR)(需求文档)

    PICO4开发实战一:节奏光剑(VR)(需求文档)

    目的:配置PXR环境,并借助Unity自带的基础模型搭建一个简单的场景。基于该场景实现方块生成、移动和方块和光剑的交互(光剑碰到方块则将方块销毁)。 1、V1版本完成页面 2、V1基本功能需求介绍 (1)配置PXR基础环境创建XR Origin并 绑定光剑 (2)环境搭建 一共六个物体:

    2024年02月15日
    浏览(15)
  • 【AI可视化---04】点亮数据之旅:发现Matplotlib的奇幻绘图世界!用Python挥洒数据音符的创意乐章——这四篇就够了!

    【AI可视化---04】点亮数据之旅:发现Matplotlib的奇幻绘图世界!用Python挥洒数据音符的创意乐章——这四篇就够了!

      晴川历历汉阳树,芳草萋萋鹦鹉洲。 日暮乡关何处是,烟波江上使人愁。     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌟[2] 2022年度博客之星人工智能领域TOP4🌟   🏅[3] 阿里云社区特邀专家博主🏅   🏆[4] CSDN-人工智能

    2024年02月15日
    浏览(15)
  • 前端开发攻略---根据音频节奏实时绘制不断变化的波形图。深入剖析如何通过代码实现音频数据的可视化。

    前端开发攻略---根据音频节奏实时绘制不断变化的波形图。深入剖析如何通过代码实现音频数据的可视化。

    逐行解析 JavaScript 代码块: 这几行代码首先获取了  audio  和  canvas  元素的引用,并使用  getContext(\\\'2d\\\')  方法获取了 Canvas 2D 上下文对象,以便后续在画布上进行绘图操作。 initCvs  函数用于初始化画布的尺寸。它将画布的宽度设置为窗口宽度的倍数,高度设置为窗口高度

    2024年04月15日
    浏览(22)
  • “音游制作实用插件-Koreographer入门教程”,“Unity2D 音游案例-节奏大师(基于Koreographer)”

    “音游制作实用插件-Koreographer入门教程”,“Unity2D 音游案例-节奏大师(基于Koreographer)”

    源码(Github) 第一个是免费视频 音游制作实用插件-Koreographer入门教程) 第二个是siki学院的收费视频 Unity2D 音游案例-节奏大师(基于Koreographer) 视频演示了,球的弹跳,方块的缩放,特效的显示 音游制作实用插件-Koreographer入门教程 ogg,mp3改下后缀成ogg 文件,紫图标 文件

    2024年02月13日
    浏览(39)
  • 【Java】跳动爱心代码,百分百还原跳动的爱心!

    【Java】跳动爱心代码,百分百还原跳动的爱心!

    最近那个电视剧的C语言实现跳动爱心不是火了吗,相信大家也都看过了,没错我也来蹭蹭热度,话不多说直接上代码。 下图展示: 这个代码看似简单但写起来其实并不轻松, 是一个比较考验对底层原理的理解的题目, 假设没有较好的代码功底或者理解不够透彻, 得到的结

    2024年02月11日
    浏览(10)
  • FFMpeg: “Invalid audio stream. Exactly one MP3 audio stream is required“

    I am trying to adapt this FFmpeg script that encodes all video files in a directory, to instead convert mp3 files present in that directory with similar preferences. This works for .MOV - .MOV encoding. Throws errors: What is wrong with the script? ffmpeg Share Improve this question Follow edited Mar 19, 2016 at 11:23 asked Mar 16, 2016 at 18:04 P A N 1,61

    2024年02月10日
    浏览(23)
  • OHOS Audio适配方案

    OHOS Audio适配方案

    各类方案简述: 方案 说明 方案1 通过\\\"adm adapter\\\"对接自研ADM内核驱动,是目前社区主流方案 方案2 通过\\\"alsa lib\\\"对接ASLA,是针对已支持ASLA产品的友好支持方案 方案3 通过\\\"HDI to HDIL\\\"对接hidl接口,此为对于OEM产商不希望换hidl层的方案,此为产品化方案,厂商需要自己适配 方案

    2024年01月23日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包