音频筑基:时延、帧长选取的考量

音频筑基:时延、帧长选取的考量

    • 帧长与时延的关系
    • 帧长变化的影响
    • 参考资料

音频算法中,时延和音频帧长的选择通常是个需要平衡的参数,这里分析下背后的考量因素。

帧长与时延的关系


一般来说,帧长是音频算法端到端时延的子集,是时延的组成元素,所以,帧长越长,时延越大。

那为啥会有音频帧长的概念呢?原因是一般会做分块频域变换,根据音频信号的短时平稳性(10-30ms,信号是周期重复的),从而进行分块分帧做短时傅里叶变换,于是有了帧长的概念。

时延指标里的那个why

那时延是啥?之前文章有讲,简单说,就是音频信号从发出到接收经历的时间延迟。过长的延迟带给人体验就是有卡顿感,而人耳对时延的敏感性是有范围的:

  • 人耳对端到端(嘴到耳的时延)

    • <150ms不会有明显感知
      • <50ms可能感知不大
      • 50~100ms之间可能轻微感知
      • 100~200ms可感知
    • >200ms能明显感知
    • >400ms会无法忍受
  • 蓝牙传输链路

    • 普通人对于80ms以下的声音延迟是没有知觉的
    • 经过听力专门训练的人员可识别50ms左右的延迟,例如专业电竞人员
    • 几乎没有人能识别35ms以下声音延迟

帧长变化的影响


以音频编解码为例,见下面描述:

First, the audio is sampled. Perceptual coding requires a codec to look at multiple, consecutive samples, as a lot of the opportunities for compression come from identifying periods of repeated sound (or lack of sound). This means that most codecs need to capture sufficient, successive samples to have enough data to characterise these changes. This period of sampling is called a frame.


Different encoding techniques use different frame lengths, but it’s almost always a fixed duration. If it’s too short, the limited number of samples starts to reduce the efficiency of the codec, as it doesn’t have enough information to apply the perceptual coding techniques, which impacts the quality. On the other hand, if the frame sizes grow, the quality improves, but the latency increases, as the codec has to wait longer to collect each frame of audio data.

——《Introducing-Bluetooth-LE-Audio-book》

帧长选取里的那个why

语音短时平稳性是在10-30ms这个区间有效,从下图可以看出,从编码质量和时延两个维度综合看,频域编解码最佳帧长是10ms及以上,5ms短帧的低码率编码就不太占优势。
在这里插入图片描述

参考资料


  1. Introducing-Bluetooth-LE-Audio-book.pdf, link

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416014.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

6. UE5 RPG AttributeSet的设置

AttributeSet 负责定义和持有属性并且管理属性的变化。开发者可以子类化UAttributeSet。在OwnerActor的构造方法中创建的AttributeSet将会自动注册到ASC。这一步必须在C中完成。 Attributes 是由 FGameplayAttributeData定义的浮点值。 Attributes能够表达从角色的生命值到角色…

harbor https

harbor https部署 准备docker-compose安装https 证书harbor安装访问harbor推镜像到harbor 准备 192.168.112.99&#xff0c;harbor&#xff0c;centos7 192.168.112.3&#xff0c;测试机&#xff0c;centos7 docker版本&#xff1a;docker-ce 20.10.16&#xff08;部署参考&a…

AOI与AVI:在视觉检测中的不同点和相似点

AOI&#xff08;关注区域&#xff09;和AVI&#xff08;视觉感兴趣区域&#xff09;是视觉检测中常用的两个概念&#xff0c;主要用于识别和分析图像或视频中的特定区域。虽然这两个概念都涉及到注视行为和注意力分配&#xff0c;但它们在定义和实际应用等方面有一些差异。 AOI…

【轮式平衡机器人】——软硬件配置/准备

本系列以轮式平衡移动机器人为例&#xff0c;将使用基于模型设计&#xff08;MBD&#xff09;方法进行介绍&#xff0c;涉及基础硬件、软件、控制算法等多方面内容&#xff0c;结合MATLAB/Simulink的强大仿真能力和代码生成能力辅助设计&#xff01;在此过程中可以系统了解开发…

【Azure 架构师学习笔记】- Azure Databricks (6) - 配置Unity Catalog

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Databricks】系列。 接上文 【Azure 架构师学习笔记】- Azure Databricks (5) - Unity Catalog 简介 UC的关键特性 之所以DataBricks要用UC&#xff0c; 很大程度是对安全的管控。从上文可以了解到它的四大特性&#…

C#MQTT编程07--MQTT服务器和客户端(wpf版)

1、前言 上篇完成了winform版的mqtt服务器和客户端&#xff0c;实现了订阅和发布&#xff0c;效果666&#xff0c;长这样 这节要做的wpf版&#xff0c;长这样&#xff0c;效果也是帅BBBB帅&#xff0c;wpf技术是cs程序软件的福音。 wpf的基础知识和案例项目可以看我的另一个专…

汽车科技迎来新纪元!奔驰、宝马、谷歌、亚马逊、高通的下一代布局!

不久的将来&#xff0c;你将能够直接通过汽车支付。为了减少支付服务的复杂性&#xff0c;高通正在与摩根大通合作设计一款车载钱包&#xff0c;简化支付体验。这将使驾驶员能够直接通过汽车支付流媒体内容、电动车充电、停车或得来速餐食物。 下一代智能车会是什么样子&#…

测试 ASP.NET Core 中间件

正常情况下&#xff0c;中间件会在主程序入口统一进行实例化&#xff0c;这样如果想单独测试某一个中间件就很不方便&#xff0c;为了能测试单个中间件&#xff0c;可以使用 TestServer 单独测试。 这样便可以&#xff1a; 实例化只包含需要测试的组件的应用管道。发送自定义请…

202408读书笔记|《半小时漫画红楼梦12》——鲜花着锦,烈火烹油,不是东风压了西风,就是西风压了东风

202408读书笔记|《半小时漫画红楼梦12》——鲜花着锦&#xff0c;烈火烹油&#xff0c;不是东风压了西风&#xff0c;就是西风压了东风 1. 关系图谱绘制2. 摘录3. 人物关系 1. 关系图谱绘制 https://blog.csdn.net/qq_40985985/article/details/127822673https://blog.csdn.ne…

代码随想录二刷 | 二叉树| 删除二叉搜索树中的节点

代码随想录二刷 &#xff5c; 二叉树&#xff5c; 删除二叉搜索树中的节点 题目描述解题思路代码实现 题目描述 450.删除二叉搜索树中的节点 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质…

小蓝的漆房*

题目 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int t sc.nextInt();sc.nextLine();int[] res new int[t];for(int i0;i<t;i) {int ans Integer.MAX_VALUE;int n sc.nextInt();int k…

C语言基础语法跟练 day4

41、牛牛有一个半径为 r 的球&#xff0c;他想知道这个球的体积。 #include <stdio.h> #include<math.h> int main() {float r;scanf("%f",&r);float v (4.0/3)*3.14*pow(r,3);printf("%.2f",v);return 0; } 42、小乐乐比较懒惰&#x…