一、前言

前面的博客对 音频切割工具ffmpeg的使用 以及 获取音频基本信息简易切割 等作出了总结,本文将对音频精准切分作出原理分析以及技术落地总结。

“音频精准切分”是个什么概念?我们当前对音频的切分需求大部分上是秒级别的切分如下1所示(使用ffmpeg的切分,不懂得可以看前面的博客),少有会到百毫秒级别的切分,但如果到毫秒级的切分呢?有人说了,像2一样不就行了,把精度设置更高一些。可是事实结果真的是这样吗?能得到想要的结果吗?当然是否定的!

各个音频切割软件,都不能直接对mp3音频文件作出百毫秒级以下的音频切分。接下来我们将分析这样情况出现的原因,和我们如何对mp3音频作出精准切分对策。

1. ffmpeg -y -i   input.mp3  -ss 0 -t 5.2  outpath.mp3
2. ffmpeg -y -i   input.mp3  -ss 0.001 -t 5.223  outpath.mp3

二、音频属性介绍——mp3,wav

当前我们最常见的音频格式是mp3音频,MP3作为一个有损压缩的音频格式,它都有哪些属性呢?如下:

1.mp3  属性:44.1KHZ, 128kb/s, 双声道

采样率——44.1KHZ,每秒钟对音频的采样频次。

通道数——双声道(立体音)左右耳听到差异的声音。

采样位数  采样样本幅度量化,衡量声音波动变化的一个

参数,也可以说是声卡的分辨率。即纵轴刻度的精确度。

——1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级;

——2 字节(也就是16bit) 可以细到 65536 个数,  CD 标准

比特率(码率)——128kb/s,每秒钟占多少kb。

比特率=采样率*采样位数*通道数

如下图所示,采样率即是一秒钟对音频的采样频次(横坐标的密度),而采样位数则是对采样高度的量化即是纵坐标密度的刻画。

MP3 文件是由帧(frame)构成的,帧是MP3 文件最小的组成单位。MP3 的全称应为MPEG1 Layer-3 音频文件,MPEG(Moving Picture Experts Group)在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG 音频文件是MPEG1 标准中的声音部分,也叫MPEG 音频层,它根据压缩质量和编码复杂程度划分为三层,即 Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3 这三种声音文件。

如何计算MP3帧的长度呢

以下为mpeg压缩格式的每帧数据的采样点,可以看出mp3格式的每帧采样点为1152个

MPEG 1

MPEG 2

MPEG 2.5

Layer 1

384

384

384

Layer 2

1152

1152

1152

Layer 3

1152

576

576

而一个音频音频帧的播放时长计算为:

音频帧的播放时间=每帧对应的采样样本的个数/采样频率(单位为s)

因此我们可以算出,如果我们定义一个mp3的采样率为44.1khz,则一个mp3音频帧的长度为,1152 /44100 *1000 =26.122ms。

wav

wav格式的音频则是无压缩的音频格式,并没有严格规定它的基本单位,也就是音频帧的具体概念,博主当前并没有找到wav格式的音频对音频帧中数据采样点的限制,因此猜测wav的每帧对应采样样本个数可以为极低,而音频帧数很高,从而导致以下的公式,每帧长度便会很小。

三、精准切分音频解决方案

上述第二节,我们已经分说明了MP3格式以及wav格式中每帧长度计算,其中MP3格式每帧长度约为26ms,因此在对MP3音频切分时,精确度就不可能超过26ms,因为要对音频数据进行保护。所以我们如果在切分时很有可能会造成26ms左右数据块切割丢失的情况。如下图所示,在30ms和85ms之间进行的切分,就会导致两个数据块造成损失。

那么我们如何对才能更精准的对音频进行切分呢,显然减少音频帧的长度是一个很直接的办法,但是我们MP3音频已经固定死的每帧采样点、和我们音频每秒采样率,显然减少音频每帧长度这条路在MP3格式上是行不通的。

因此我们考虑到wav是非压缩格式的音频文件,可以采用将MP3转换为wav,精准切分后,再将wav转换为MP3即可。经过测试,精确度可达到1ms,显然符合了我们的初衷。

不可避免的问题:wav格式的音频长度可以为精确至毫秒级,但wav转换至mp3之后,为了补全mp3音频的帧,依旧会出现几十毫秒级的长度的误差,但对于当前应用没有影响。

四、总结

在解决音频精准切分的路子上走了几步,发现音频的切分也不是一个很容易完成的工作,通过上述方案:

MP3转wav,wav精准切分,wav转MP3这种笨方法可以完成MP3音频的精准切分,但同时也抛出了一个问题,那就是wav格式的音频到底有没有音频帧的概念?如果有,他们的音频帧中每帧采样点是多少呢?还望大家共同探讨。

音频精准切割原理及应用相关推荐

  1. 音频变速播放原理分析及实现方案

    [时间:2019-05] [状态:Open] [关键词:音频,audio,倍速,变速,变调,soundtouch,sonic] 音频变调变速原理分析 先来一段语音处理的理论: 变速变调可分为:变速不变 ...

  2. 音频变速变调原理及 soundtouch 代码分析

    音频变速变调原理及 soundtouch 代码分析 作者:floer rivor 2021 年 4 月 30 日 本文字数:5066 字 阅读完需:约 17 分钟 概述 音频变速变调在不同的场景可以分 ...

  3. 拉卡拉手机刷卡器音频通讯技术原理初步分析

    拉卡拉手机刷卡器音频通讯技术原理初步分析  kimmking@163.com http://blog.csdn.net/kimmking/article/details/8712161 1.      ...

  4. G.726音频编解码原理介绍

    一.PCM 脉冲编码调制(Pulse-code modulation,PCM)是一种模拟信号的数码化方法.PCM将信号的强度依照同样的间距分成数段,然后用独特的数码记号(通常是二进制)来量化.PCM常 ...

  5. [zz] 音频DAC的原理

    稍微熟悉一点音响知识的人都知道,CD机电路的核心就是DAC,DAC的品质直接关系到CD的质量,高档的发烧音响系统通常把CD分为转盘和DAC两个独立的系统,采用顶级的设计,加上顶级的用料,希望能达到&q ...

  6. Qt之调用FFTW3实现音频频谱(原理)

    关于实现详见博客:Qt之调用FFTW3实现音频频谱(实现) 一.效果 最近在用播放器业界天花板PotPlayer听歌时,发现其频谱跳动非常有趣,如下所示: 于是决定自己实现一个,如下所示: 别看功能很 ...

  7. 转载_音频DAC的原理

    数字音频DAC(数-模转换)就是将离散的数字量转换为连接变化的模拟量,实现该功能的电路或器件称为数模转换电路,通常称为d/a转换器(digital analog converter)或DAC.我们知道 ...

  8. Python 音频文件切割

    一直在学的一套美语教程,开头有18秒的音乐,每次都要听一遍,神烦. 索性写个脚本把所有音频开头音乐全部切掉. 参考 http://blog.csdn.net/skywalkerVVV/article/ ...

  9. linux 音频文件切割_Linux 对音频万能处理的命令——SOX

    what's the SOX SoX(即 Sound eXchange)是一个跨平台(Windows,Linux,MacOS 等)的命令行实用程序,可以将各种格式的音频文件转换为需要的其他格式.SoX ...

最新文章

  1. 7.git提交的前进与后退
  2. python有什么作用-Python中的闭包到底有什么用
  3. ITK:计算代码点之间的时间
  4. obfuscator-llvm Theos 集成配置
  5. (41)System Verilog 例化System Verilog模块
  6. 编写组件,使用JavaScript更新UpdatePanel
  7. linux初级命令行
  8. 分布式系统原理_分布式系统架构设计 第19式 分布式系统八卦思维模型
  9. Atitit learn by need 需要的时候学与预先学习知识图谱路线图
  10. 11.1-12.31推荐文章汇总
  11. 推荐一款数据恢复软件(迅龙数据恢复)
  12. 【正版软件】Virtual Display Manager 虚拟显示器布局配置管理软件
  13. 伍德里奇计量经济学第六版第七章计算机答案,伍德里奇计量经济学第六版答案Appendix-E...
  14. 聚焦 ECharts
  15. ShadowGun Shaders
  16. Excel:把数据生成曲线图
  17. 读懂LaTeX中cls文件
  18. 十万个为什么哪个版本适合小学生阅读
  19. 【Unity】3D雷霆战机
  20. 数据包络分析--SBM模型(第一篇)

热门文章

  1. 计算机汽车行业术语,汽车专业名词大全.doc
  2. 碳化硅SiC MOSFET:低导通电阻和高可靠性的肖特基势垒二极管
  3. 无root权限远程安装matlab
  4. H3C Telnet、SSH登录 用户名和密码一致
  5. 编写javascript_编写javascript和打字稿时的一些最佳快捷方式
  6. python3.7卸载不了_「访问升级」No Python 3.7 installation was detected,Python 3.7卸载失败 - seo实验室...
  7. HP Probook 4321s 网卡无法识别问题的解决
  8. 中国信通院正式发布“系统稳定性保障计划”
  9. android 手电筒
  10. 北美求职之寻找内推资源