音频筑基:算法时延分析

2024-01-17 08:28

本文主要是介绍音频筑基:算法时延分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

音频筑基:算法时延分析

    • 前言
    • 时延是啥
    • 举例分析
    • 相关资料

前言


音频算法中,经常遇到时延分析的问题,刚开始接触大多都比较迷惑,这里将自己对时延的学习思考梳理总结于此。

时延是啥


音频领域中,时延(delay/latency)主要指声音从源端发出,经链路传输,再到对端接收到声音,所经过的总时间延迟。一般人耳无法感知的蓝牙段链路时延是25-30ms以内。

一般来说,时延首先要分清楚计算器处理时延(依赖硬件)和算法时延(不依赖于硬件的)。这里以蓝牙链路为例,分析下传输延迟的组成:

  • 音频编解码所需缓存及处理时间,算法相关
  • 音频输入输出的硬件延迟和缓存时间,硬件相关
  • 蓝牙传输物理层和协议层及缓存时间,硬件相关
  • 蓝牙数据包重传机制,硬件与场景相关

举例分析


这里以音频编解码算法为例,看看算法维度里的时延:

  • 算法处理硬件运行时间
  • 算法处理端到端延迟时间

算法处理硬件运行时间,指跑完这个算法实际硬件所需时间,当下硬件处理水平普遍都小于编解码算法的帧长、look ahead等延迟总和,故而通常不予考虑。

算法处理端到端(E2E, end to end)延迟时间,指:1、进入编解码积攒的音频帧(Capturing)所需时间(如10ms),2、编解码低延迟频域转换所需look ahead(如2.5ms)。这两种延迟均是算法原理带来的,直接影响端到端延迟,不与硬件有关系,所以也简称为算法时延。

The look ahead delay is algorithmic only and represents a delay in audio content, and not actual processing time.

time: |-----|--------------------|----------|**********************|--------------|-------|
type:   adc,   capturing frame,    encoding,    transport/retrans,      decoding,    dac

如下图所示,硬件处理时间如adc, encoding(硬件运行), transport, retrans, decoding(硬件运行),dac。

整体过程简单理解就是音频物理信号产生,经过数模转换成数字信号,再经过编码压缩,通过网络传输/重传发送,对端接收到解码,再数模转换成模拟信号播放出来。

其中,encoding项经过算法后就会导致端到端信号偏移frame time + look ahead这么长的算法时延,硬件处理通常能在单帧时间内解码完毕,所以编解码硬件时间通常不考虑。

相关资料


  1. Introducing-Bluetooth-LE-Audio-book,link, P137, Figure 5.7
  2. Unraveling Bluetooth LE Audio,link,Table6-2. Figur 6-3

这篇关于音频筑基:算法时延分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/615438

相关文章

2.1/5.1和7.1声道系统有什么区别? 音频声道的专业知识科普

《2.1/5.1和7.1声道系统有什么区别?音频声道的专业知识科普》当设置环绕声系统时,会遇到2.1、5.1、7.1、7.1.2、9.1等数字,当一遍又一遍地看到它们时,可能想知道它们是什... 想要把智能电视自带的音响升级成专业级的家庭影院系统吗?那么你将面临一个重要的选择——使用 2.1、5.1 还是

Redis主从/哨兵机制原理分析

《Redis主从/哨兵机制原理分析》本文介绍了Redis的主从复制和哨兵机制,主从复制实现了数据的热备份和负载均衡,而哨兵机制可以监控Redis集群,实现自动故障转移,哨兵机制通过监控、下线、选举和故... 目录一、主从复制1.1 什么是主从复制1.2 主从复制的作用1.3 主从复制原理1.3.1 全量复制

Python中的随机森林算法与实战

《Python中的随机森林算法与实战》本文详细介绍了随机森林算法,包括其原理、实现步骤、分类和回归案例,并讨论了其优点和缺点,通过面向对象编程实现了一个简单的随机森林模型,并应用于鸢尾花分类和波士顿房... 目录1、随机森林算法概述2、随机森林的原理3、实现步骤4、分类案例:使用随机森林预测鸢尾花品种4.1

Redis主从复制的原理分析

《Redis主从复制的原理分析》Redis主从复制通过将数据镜像到多个从节点,实现高可用性和扩展性,主从复制包括初次全量同步和增量同步两个阶段,为优化复制性能,可以采用AOF持久化、调整复制超时时间、... 目录Redis主从复制的原理主从复制概述配置主从复制数据同步过程复制一致性与延迟故障转移机制监控与维

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

Redis主从复制实现原理分析

《Redis主从复制实现原理分析》Redis主从复制通过Sync和CommandPropagate阶段实现数据同步,2.8版本后引入Psync指令,根据复制偏移量进行全量或部分同步,优化了数据传输效率... 目录Redis主DodMIK从复制实现原理实现原理Psync: 2.8版本后总结Redis主从复制实

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit

python-nmap实现python利用nmap进行扫描分析

《python-nmap实现python利用nmap进行扫描分析》Nmap是一个非常用的网络/端口扫描工具,如果想将nmap集成进你的工具里,可以使用python-nmap这个python库,它提供了... 目录前言python-nmap的基本使用PortScanner扫描PortScannerAsync异