当前位置: 首页 > news >正文

【音视频】音频基础

一、音频基础

1.1 声音的物理性质 ——振动

声音是一种由物体振动引发的物理现象,如小提琴的弦声等。物体的振动使其四周空气的压强产生变化,这种忽强忽弱变化以波的形式向四周传播,当被人耳所接收时,我们就听见了声音。

在这里插入图片描述

1.2 声音的物理性质 ——波形

声音是由物体振动产生的,这种振动引起了周围空气压强的振荡,我们称这种振荡的函数表现形式为波形。

在这里插入图片描述

1.3 声音的物理性质 ——频率

声音的频率是周期的倒数,它表示的是声音在1秒钟内的周期数,单位是赫兹(Hz)。前赫兹(kHz)即1000Hz,表示每秒振动1000次。声音按照频率可以作如下划分:

  • 次声: 0~20Hz
  • 人耳能听见的声音:20Hz~20kHz
  • 超时 20kHz - 1GHz
  • 特超声 1GHz~10THz

1.4 声音的物理特性 ——振幅

声音有振幅,振幅的主观感觉是声音的大小。声音的振幅大小取决于空气压力波距平均值(也称平衡态的最大偏移量)。
在这里插入图片描述

2.数字音频

计算机并不直接使用连续平滑的波形来表示声音,它是每隔固定的时间对波形的幅值进行采样,用得到的一系列数字量来表示声音。下图是采样后的数音频的波形

在这里插入图片描述

  • PCM脉冲编码调制:PCM(Pulse Code Modulation)脉冲编码调制。人耳听到的是模拟信号,PCM是把声音从模拟信号转化为数字信号的技术。

为了将模拟信号数字化,主要分为三个步骤:采样、量化、编码。

2.2 数字音频 ——采样频率

根据Nyguist采用定律,要从采样中完全恢复初始信号波形,采样率必须至少是信号中最高频率的两倍。

前面提到人耳能听到的频率范围是[20Hz - 20kHz],因此,采样频率一般是44.1kHz,这样就能保证声音到达20kHz也能被数字化,从而使得数字化处理之后,人耳能听到的声音质量也不会被降低。

  • 采样频率:每秒采样的点的个数,常用的采用频率有:22kHz、44.1kHz、48kHz、96kHz、192kHz等等

2.2 数字音频 ——采样量化

采样实在离散的时间点上进行的,而采样值本身在计算机也是离散的。
采样值的精度取决于它用多少位来表示,这就是量化。例如8为量化可以表示256个不同的值,而CD质量的16为量化可以表示65536个值,范围是[-32768,32767]。

下图是一个3位量化的示意图,可以看出3位量化只能表示8个值,还原后的声音非常差。

在这里插入图片描述

2.3 音频常见名词

  • 采样频率:每秒采样的点的个数,常用的采用频率有:22kHz、44.1kHz、48kHz、96kHz、192kHz等等
  • 采样精度(采样深度):每个样本点的大小,常用的大小为8bit、16bit、24bit
  • 通道数:单声道、双声道、四声道、5.1声道
  • 比特率:每秒传输的bit数,单位是bps(bit per second),是间接衡量声音质量的一个标准。没有压缩的音频数据的比特率 = 采样频率 * 采样精度(深度)*通道数。
  • 码率:压缩后的音频数据的比特率。常见的码率有:96kbps、128-160kbps,192kbps,256-320kbps。码率越大,压缩效率越低,音质越好,压缩后的数据越大。码率 = 音频文件大小 / 时长

比如,采样频率44100,采样精度16bit、2通道(声道),采集4分钟的数据为:44100 * 16 * 2 *4*60 = 338688000bit = 40M
字节。比特率:采样频率*采样精度*通道数 = 44100 * 16 * 2 = 1411200bit/s

  • 帧:每次编码的采样单元数,比如MP3通常是1152个采样点作为一个编码单元,AAC通常是1-24采样点作为一个编码单元
  • 帧长:可以指每帧播放持续的时间:每帧持续时间(秒) = 每帧采样点数/采样频率(HZ)。比如,MP3 48k,1152个采样点,每帧则为24毫秒;也可以指压缩后每帧的数据长度,因此需要根据场景来确定所表示的含义。
  • 交错模式:数字信号存储的方式。数据以连续帧的方式存放,即首先记录帧1的左声道样本和右声道样本,再开始帧2的记录…
    在这里插入图片描述
  • 非交错模式:首先记录的是一个周期内所有帧的左声道样本,再记录所有右声道的也样本。
    在这里插入图片描述

2.4 音频编码原理简介

数字音频信号如果不加压缩地直接传输,将会占用极大的带宽。例如,一套双声道数字音频若取采样率为44.1kHz,每样值按照16bit进行量化,那么码率为:244.1kHz16bit = 1.411Mbit/s。如此大的带宽对于传输和处理都带来许多的成本,因此必须采取音频压缩技术对音频进行处理,才能有效地传输音频数据。

数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号尽可能大的压缩,降低数据量。数字音频压缩编码采取去除声音中的冗余成分的方法进行实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,他们对确定声音的音色、音调等信息没有任何的帮助。

冗余信号包含人耳听觉范围外的音频信号以及被掩蔽掉的音频信号等。例如,人耳所能察觉的声音信号的频率范围为20Hz~20kHz,除此之外的其他频率人耳无法察觉,都可视为冗余信号。

此外,根据人耳听觉的生理和心理学现象,当一个强音信号与一个弱音信号同时存在时,弱音信号会被强音信号所掩蔽而听不见,这样弱音信号就可以被视为冗余信号而不用传送。这就是人耳听觉的掩蔽效应,主要表现在频谱掩蔽效应时域掩蔽效应

2.4.1 频谱掩蔽效应

一个频率的声音能量小于某个阈值之后,人耳就会听不到,当有另外能量较大的声音出现的时候,该声音频率附近的阈值会提高很多,即所谓的掩蔽效应,如下图所示
在这里插入图片描述

因此,当有强音存在的时候,在强音附近低于一定频率的弱音就可以被视为冗余信号不必传输

2.4.2 时域掩蔽效应

当强音信号和弱音信号同时出现时,还存在时域掩蔽效应。即两者发生时间很接近的时候,也会发生掩蔽效应。时域掩蔽过程曲线如下图所示,分为前掩蔽,同时掩蔽和后掩蔽三种:
在这里插入图片描述

  • 前掩蔽:指的是人耳仔听到强信号之前的短暂时间内,已经存在的若信号会被掩蔽而听不到。
  • 同时掩蔽:指的是当强信号与弱信号同时存在的时候,弱信号会被强信号所掩蔽而听不到。
  • 后掩蔽:指的是当强信号消失后,需要经过较长的一段时间才能重新听到弱信号,称为后掩蔽。

这些被掩蔽的弱信号被称为冗余信号

2.5 压缩编码方法

当前数字音频编码领域存在不同的编码方案和实现方式。但基本的编码思路大同小异,如下图所示:
在这里插入图片描述

对每一个音频声道中的音频采样信号:

  1. 将它们映射到频域中,这种时域到频域的映射可通过子带滤波器实现。每个声道中的音频采样块首先要根据心理学模型来计算掩蔽门限值
  2. 由计算出的掩蔽门限决定从公共比特池中分配给该声道的不同频率域中多少比特数,接着进行量化已经编码工作。
  3. 将控制参数及辅助数据加入数据之中,产生编码后的数据流。

3.1 常见的音频编解码器选型

  • OPUS、MP3、AAC、AC3和EAC3杜比公司的方案

相关文章:

【音视频】音频基础

一、音频基础 1.1 声音的物理性质 ——振动 声音是一种由物体振动引发的物理现象,如小提琴的弦声等。物体的振动使其四周空气的压强产生变化,这种忽强忽弱变化以波的形式向四周传播,当被人耳所接收时,我们就听见了声音。 1.2 声…...

策略模式的C++实现示例

核心思想 策略模式是一种行为型设计模式,它定义了一系列算法,并将每个算法封装在独立的类中,使得它们可以互相替换。策略模式让算法的变化独立于使用它的客户端,从而使得客户端可以根据需要动态切换算法,而不需要修改…...

本地部署pangolin获取谱系,从而达到预测新冠的流行趋势

步骤 1:安装Docker 注:此步骤忽略,可通过Docker官网对于文档进行安装,地址如下 Docker: Accelerated Container Application Developmenthttps://www.docker.com/ 步骤 2:拉取Pangolin镜像 docker pull staphb/pangolin:latest 步…...

【我的 PWN 学习手札】House of Emma

House of Emma 参考文献 第七届“湖湘杯” House _OF _Emma | 设计思路与解析-安全KER - 安全资讯平台 文章 - house of emma 心得体会 - 先知社区 前一篇博客【我的 PWN 学习手札】House of Kiwi-CSDN博客的利用手法有两个关键点,其一是利用__malloc_assert进入…...

4 Redis4 List命令类型讲解

Redis 列表(List)命令详解 1. Redis 列表(List)简介 Redis 列表(List)是一个简单的字符串列表,按照插入顺序排序。它可以用作 栈(Stack) 和 队列(Queue&…...

CentOS 7 安装 Redis6.2.6

获取资源、下载安装 Redis6.2.6 安装Redis6.2.6 上传到服务器或直接下载(wget http://download.redis.io/releases/redis-6.2.6.tar.gz)、再解压安装 tar -zxvf redis-6.2.6.tar.gz 进入redis解压目录 cd redis-6.2.6先编译 make再执行安装 make PREFI…...

数据库原理4

1.数据库中的数据通常可分为用户数据和系统数据两部分。用户数据是用户使用的数据;系统数据称为数据字典。 2.SQL语言的功能:数据查询;数据操纵;数据定义;数据操作;数据控制 3.对未提交更新的依赖&#x…...

doris: MySQL

Doris JDBC Catalog 支持通过标准 JDBC 接口连接 MySQL 数据库。本文档介绍如何配置 MySQL 数据库连接。 使用须知​ 要连接到 MySQL 数据库,您需要 MySQL 5.7, 8.0 或更高版本 MySQL 数据库的 JDBC 驱动程序,您可以从 Maven 仓库下载最新或指定版本的…...

Django模型数据删除:详解两种方式

Django模型数据删除:详解两种方式 在Django框架中,数据模型(Model)不仅定义了应用的数据结构,还提供了与数据库交互的接口,包括数据的删除操作。本文将详细介绍两种在Django中删除数据的方式:通…...

C++并发以及多线程的秘密

1.基础概念 并发(Concurrency) 并发是指在同一时间段内,多个任务看起来像是同时执行的。并发并不一定意味着真正的同时执行,它可以是通过时间片轮转等方式在多个任务之间快速切换,让用户感觉多个任务在同时进行。并发…...

自学微信小程序的第十二天

DAY12 1、腾讯地图SDK是一套为开发者提供多种地理位置服务的工具,可以使开发者在自己的应用中加入地图相关功能,轻松访问腾讯地图服务和数据,更好地实现微信小程序的地图功能。 表49:search()方法的常用选项 选项 类型 说明 keyword string POI搜索关键词,默认周边搜索 l…...

⭐算法OJ⭐跳跃游戏【贪心算法】(C++实现)Jump Game 系列 I,II

既股票买卖系列之后的第二组贪心算法题目:跳跃游戏系列。这一篇介绍的两个问题,其输入均为一个数组,每个元素表示在该位置可以跳跃的最大长度。 55. Jump Game You are given an integer array nums. You are initially positioned at the …...

带你从入门到精通——自然语言处理(五. Transformer中的自注意力机制和输入部分)

建议先阅读我之前的博客,掌握一定的自然语言处理前置知识后再阅读本文,链接如下: 带你从入门到精通——自然语言处理(一. 文本的基本预处理方法和张量表示)-CSDN博客 带你从入门到精通——自然语言处理(二…...

ubuntu挂载固态硬盘

Ubuntu 中挂载位于 /dev/sdc1 的固态硬盘,可以按照以下步骤操作: 步骤 1:确认分区信息 首先,确保设备 /dev/sdc1 存在且已正确分区: sudo fdisk -l /dev/sdc # 查看分区表 lsblk # 确认分区路…...

WPF+WebView 基础

1、基于.NET8&#xff0c;通过NuGet添加Microsoft.Web.WebView2。 2、MainWindow.xaml代码如下。 <Window x:Class"Demo.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas.microsoft.com/win…...

国内光子AI智能引擎:OptoChat AI在南京江北新区亮相

3月3日&#xff0c;从南京市投资促进局传来振奋人心的消息&#xff0c;南京江北新区的一家高科技企业——南京南智先进光电集成技术研究院有限公司&#xff08;简称“南智光电”&#xff09;&#xff0c;携手南京知满科技等合作伙伴&#xff0c;成功研发出国内首个光子AI智能引…...

vscode离线配置远程服务器

目录 一、前提 二、方法 2.1 查看vscode的commit_id 2.2 下载linux服务器安装包 2.3 安装包上传到远程服务器&#xff0c;并进行文件解压缩 三、常见错误 Failed to set up socket for dynamic port forward to remote port&#xff08;vscode报错解决方法&#xff09;-C…...

【安装】SQL Server 2005 安装及安装包

安装包 SQLEXPR.EXE&#xff1a;SQL Server 服务SQLServer2005_SSMSEE.msi&#xff1a;数据库管理工具&#xff0c;可以创建数据库&#xff0c;执行脚本等。SQLServer2005_SSMSEE_x64.msi&#xff1a;同上。这个是 64 位操作系统。 下载地址 https://www.microsoft.com/zh-c…...

使用Maven搭建Spring Boot框架

文章目录 前言1.环境准备2.创建SpringBoot项目3.配置Maven3.1 pom.xml文件3.2 添加其他依赖 4. 编写代码4.1 启动类4.2 控制器4.3 配置文件 5.运行项目6.打包与部署6.1 打包6.2 运行JAR文件 7.总结 前言 Spring Boot 是一个用于快速构建 Spring 应用程序的框架&#xff0c;它简…...

将docker容器打包为.tar包

1. 创建打包脚本 #!/bin/bash # 设置 -e 使得脚本在遇到错误时停止执行 set -e# 必要的参数 exported_container_name"needed_export_container_name_or_id" # 需要被导出的容器的名称或id image_save_name"my_custom_image_name:v25.03.03" # 镜像需…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查

在对接支付宝API的时候&#xff0c;遇到了一些问题&#xff0c;记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时&#xff0c;发现没有set类的方法&#xff0c;只有get&#xff0c;那么要改变tree值&#xff0c;只能遍历treeData&#xff0c;递归修改treeData的checked&#xff0c;发现无法更改&#xff0c;原因在于check模式下&#xff0c;子元素的勾选状态跟父节…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

离线语音识别方案分析

随着人工智能技术的不断发展&#xff0c;语音识别技术也得到了广泛的应用&#xff0c;从智能家居到车载系统&#xff0c;语音识别正在改变我们与设备的交互方式。尤其是离线语音识别&#xff0c;由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力&#xff0c;广…...

写一个shell脚本,把局域网内,把能ping通的IP和不能ping通的IP分类,并保存到两个文本文件里

写一个shell脚本&#xff0c;把局域网内&#xff0c;把能ping通的IP和不能ping通的IP分类&#xff0c;并保存到两个文本文件里 脚本1 #!/bin/bash #定义变量 ip10.1.1 #循环去ping主机的IP for ((i1;i<10;i)) doping -c1 $ip.$i &>/dev/null[ $? -eq 0 ] &&am…...