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

音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解

文章目录

    • 前言
    • 1.模拟数字转换(ADC)
      • 1.1ADC的关键步骤:
    • 2.数字模拟转换(DAC)
      • 2.1DAC 的基本流程包括:
    • 3.PCM数据
      • 3.1PCM 数据的关键要素包括:
    • 4.WAV文件
      • 4.1 WAV的构成
      • 4.2WAV文件的标准块结构
      • 4.3WAV的使用场景
    • 5.PCM与WAV的关系

前言

数字模拟转换(DAC)和模拟数字转换(ADC)是音频技术中非常重要的两个概念,它们在数字音频设备和系统中发挥着核心作用。这两种转换技术确保了模拟信号和数字信号之间的互转,使得音频信号可以在不同的媒体和设备间有效传输和处理。

1.模拟数字转换(ADC)

模拟数字转换是将模拟信号(连续信号)转换成数字信号(离散信号)的过程。在音频应用中,这意味着将捕捉到的声音(例如通过麦克风)转换成数字格式,以便于存储、编辑或处理。

一段原始的声音波形例子如下:
在这里插入图片描述

1.1ADC的关键步骤:

采样:测量模拟信号的振幅值,在特定的时间间隔内进行。这个时间间隔称为采样间隔,其倒数为采样率。例如,CD音质的标准采样率为44.1 kHz,即每秒采样44100次。

量化:将每次采样得到的模拟值转换为最接近的数字值。这个过程涉及到将连续的振幅值映射到有限的数字级别上。量化的精度通常由位深度(比特率)决定,例如16位、24位等。位深度指的是用于记录声音采样值的比特数。位深度越高,可以表示的声音振幅级别就越多,从而可以更精确地复制录音的动态范围和细节。以下是一些常见的位深度示例及其含义:

  • 16位:这是CD音质的标准位深度,它可以提供约96 dB的动态范围。16位系统可以表示 216=65536216=65536 不同的振幅级别。
  • 24位:这是专业音频工作的常用位深度,可以提供约144 dB的动态范围,使其能够记录更细微的音量变化。24位系统可以表示 224=16777216224=16777216 不同的振幅级别。
    在这里插入图片描述

量化后的数字信息如下:

在这里插入图片描述

编码:将量化后的值转换为二进制数码,形成数字信号。

在这里插入图片描述

ADC 的输出是数字信号,这意味着原始的连续模拟信号被转换为一系列离散的数字值。这些数字值可以用于数字处理、存储或其他数字应用。

2.数字模拟转换(DAC)

数字模拟转换是将数字信号转换回模拟信号的过程。这一步骤在播放数字音频文件时尤为关键,如在数字音乐播放器、计算机或智能手机中。

2.1DAC 的基本流程包括:

  1. 解码:将存储的数字数据(通常为二进制形式)解码成数字量化值。
  2. 重构:通过插值算法处理这些量化值,重构出原始的模拟波形。在这一过程中,可能会使用各种滤波技术来平滑输出信号,减少所谓的“阶梯效应”(由量化步骤产生的不连续变化)。
  3. 放大:将重构后的模拟信号放大,以适合后续的播放硬件(如扬声器或耳机)。

如将上图的数字信号转换为模拟信号,

在这里插入图片描述

3.PCM数据

PCM(Pulse Code Modulation,脉冲编码调制)是一种用于数字化模拟信号的技术,例如声音。在音频技术中,PCM是将声音等模拟信号转换为数字信号的标准格式。这种格式通过对模拟信号进行采样、量化和编码来生成数字音频数据。PCM 数据提供了一种非常纯净和精确的方式来存储声音,但由于其数据量大,通常需要更多的存储空间和带宽。

3.1PCM 数据的关键要素包括:

  1. 采样率(Sampling Rate)
    • 这是每秒钟采集模拟信号样本的次数,表示为赫兹(Hz)。常见的采样率有 44100 Hz(CD质量)、48000 Hz(专业视频和音频应用)、96000 Hz 或更高(高分辨率音频)。
  2. 位深度(Bit Depth)
    • 位深度决定了每个样本的音频分辨率,即每个采样的数据大小。常见的位深度有 16位(CD音质)、24位(专业音频)。位深度越高,可以记录的动态范围越广,音质越细腻。
  3. 声道数(Channels)
    • 声道数指的是音频流中的独立音频信号数量,例如单声道、立体声(两个声道),或多声道(如5.1环绕声系统使用的六个声道)。

4.WAV文件

WAV(或波形音频文件格式)是一种无损的音频文件格式,由微软和IBM共同开发,主要用于Windows操作系统。它通常被用于存储未压缩的音频数据,这使得它成为专业音频编辑和处理中非常受欢迎的格式。因为音频数据未经压缩,所以WAV文件通常比MP3或其他压缩格式的文件大得多。

4.1 WAV的构成

WAV文件主要由以下几个部分构成:

  1. RIFF Header(资源交换文件格式头):
    • WAV文件以“RIFF”标记作为文件的开始。这个标头指明了文件是一个资源交换文件格式,并包含了整个文件的大小。
  2. WAVE Header(WAVE头):
    • 紧接着RIFF头的是“WAVE”标记,它表明这是一个WAVE类型的数据文件。
  3. Format Chunk(格式块):
    • 这是WAV文件中最重要的部分之一,它包含了有关音频数据格式的详细信息,如声道数(单声道或立体声)、采样率、位深度(每个样本的位数),以及每秒的数据字节数。
  4. Data Chunk(数据块):
    • 数据块包含了实际的音频采样数据。这个部分的大小取决于录音的长度和质量。每个采样点的数据通常以小端格式存储(在x86架构的计算机上)。

4.2WAV文件的标准块结构

  • RIFF Header: RIFF[大小]WAVE
  • Format Chunk: fmt [大小][格式类型][通道数][采样率][字节率][块对齐][位深度]
  • Data Chunk: data[大小][音频采样数据]

4.3WAV的使用场景

WAV格式由于其无损的特性,广泛用于:

  • 专业音频录制与编辑:在音乐制作和广播中,WAV格式因为其高保真度而被频繁使用。
  • 音频分析:科研和工程应用中,需要对原始音频数据进行精确分析时,通常会使用WAV格式。
  • 系统音效:在Windows操作系统中,系统音效通常以WAV格式存储。

5.PCM与WAV的关系

  • PCM 是音频数据编码的一种方式,而WAV 是一种文件格式,通常用来存储PCM编码的音频数据。
  • WAV 文件通常包含PCM数据,但WAV格式的灵活性也允许它包含压缩音频,如MP3编码的音频。然而,在实际应用中,WAV文件大多数情况下确实是用来存储PCM数据。
  • 由于WAV文件包含详细的头信息(采样率、位深度、声道等),它们比原始的PCM数据文件更易于在不同的播放设备和程序之间移植和使用。

相关文章:

音视频开发—音频相关概念:数模转换、PCM数据与WAV文件详解

文章目录 前言1.模拟数字转换(ADC)1.1ADC的关键步骤: 2.数字模拟转换(DAC)2.1DAC 的基本流程包括: 3.PCM数据3.1PCM 数据的关键要素包括: 4.WAV文件4.1 WAV的构成4.2WAV文件的标准块结构4.3WAV的…...

Elasticsearch 8.1官网文档梳理 - 十三、Search your data(数据搜索)

Search your data 这里有两个比较有用的参数需要注意一下 Search timeout:设置每个分片的搜索超时时间。从集群级别可以通过 search.default_search_timeout 来设置超时时间。如果在 search.default_search_timeout 设置的时间段内未完成搜索请求,就会…...

笔墨挥毫如游龙 最是经典铁线篆——记著名书法家王子彬

真正的书法大家,必是经历了日积月累的求索磨炼,毕竟书法从来都不是一蹴而就的艺术,因此但凡是急功近利者,其人也是远远无法达到书入臻境的创作高度。而纵观当代书坛界内,其中王子彬先生的艺术声誉可谓是广为人知,作为一名深具传统功底的实力派书法大家,王子彬先生的取法历途无疑…...

智慧校园有哪些特征

随着科技的飞速进步,教育领域正经历着一场深刻的变革。智慧校园,作为这场变革的前沿代表,正在逐步重塑我们的教育理念和实践方式。它不仅仅是一个概念,而是一个集成了物联网、大数据、人工智能等先进技术的综合生态系统&#xff0…...

day25回溯算法part02| 216.组合总和III 17.电话号码的字母组合

216.组合总和III 题目链接/文章讲解 | 视频讲解 class Solution { public:vector<vector<int>> result;vector<int> path;int sum;void backtracking(int n, int k, int startindex) {// int sum accumulate(path.begin(), path.end(), 0);if (sum n &am…...

AWS联网和内容分发服务

概况 VPC Amazon Virtual Private Cloud (Amazon VPC) 让您能够全面地控制自己的虚拟网络环境&#xff0c;包括资源放置、连接性和安全性。首先在 AWS 服务控制台中设置 VPC。然后&#xff0c;向其中添加资源&#xff0c;例如 Amazon Elastic Compute Cloud (EC2) 和 Amazon …...

vscode设置编辑器文件自动保存

步骤 1.打开vscode的设置 2.在搜索栏输入关键字“保存”&#xff1b; 在 Files: Auto Save 设置项&#xff0c;选择自动保存的模式...

SJ705C安全帽高温预处理箱

一、仪器用途 安全帽高温预处理箱是我公司根据安全帽新国家标准检测试验要求而自主设计研发制造。是安全帽检测前做高温预处理的专用设备。 二、仪器特征 1、有PID自整定温度控制仪&#xff0c;控制准确。 2、数显计时、计温器。 3、石英灯管加热系统;。 …...

AI盒子在智慧加油站的应用

方案背景 为规范加油站作业&#xff0c;保障人民生命财产安全&#xff0c;《加油站作业安全规范》&#xff08;AQ 3010-2007&#xff09;中第五条规定&#xff1a;卸油作业基本要求&#xff0c;明确防静电、防雷电、防火、人员值守、禁止其他车辆及非工作人员进入卸油区。 痛点…...

IC开发——VCS基本用法

1. 简介 VCS是编译型verilog仿真器&#xff0c;处理verilog的源码过程如下&#xff1a; VCS先将verilog/systemverilog文件转化为C文件&#xff0c;在linux下编译链接生成可执行文件&#xff0c;在linux下运行simv即可得到仿真结果。 VCS使用步骤&#xff0c;先编译verilog源…...

MongoDB~存储引擎了解

存储引擎 存储引擎是一个数据库的核心&#xff0c;主要负责内存、磁盘里数据的管理和维护。 MongoBD的优势&#xff0c;在于其数据模型定义的灵活性、以及可拓展性。但不要忽略&#xff0c;其存储引擎也是插件式的存在&#xff0c;支持不同类型的存储引擎&#xff0c;使用不同…...

JavaScript实现粒子数字倒计时效果附完整注释

<!DOCTYPE html> <html lang="en"><head><meta charset...

Dubbo SPI(Service Provider Interface)机制深度解析

Dubbo SPI&#xff08;Service Provider Interface&#xff09;机制是Apache Dubbo框架中一项核心的技术组件&#xff0c;它超越了传统Java SPI的范畴&#xff0c;为Dubbo带来了高度的可扩展性和灵活性。在分布式服务架构日益复杂多变的今天&#xff0c;Dubbo SPI机制通过巧妙的…...

常用中间件各版本下载

常用中间件下载地址 前言分布式中间件负载均衡中间件缓存中间件数据库中间件其他中间件1、Maven下载地址2、Git下载地址2、JDK下载地址3、MySQL下载地址4、Redis下载地址5、Nacos下载地址6、Tomcat下载地址7、Nginx下载地址8、RocketMQ下载地址8、RabbitMQ下载地址8、Erlang下载…...

VsCode SSH远程设置不用重复输入密码

winR输入cmd&#xff0c;回车&#xff0c;输入 C:\Users\Administrator> ssh-keygen -t rsa -b 4096 Generating public/private rsa key pair. Enter file in which to save the key (C:\Users\Administrator/.ssh/id_rsa): Enter passphrase (empty for no passphrase): …...

【Linux】:进程切换

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux进程切换的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精…...

MongoDB CRUD操作:删除文档

MongoDB CRUD操作&#xff1a;删除文档 文章目录 MongoDB CRUD操作&#xff1a;删除文档删除集合的所有文档删除符合条件的所有文件删除第一个符合条件的文档## 在MongoDB Atlas中删除文档删除行为索引 原子性写确认 可以使用下面的方式删除MongoDB集合的文档&#xff1a; 使用…...

SpringBoot集成腾讯COS流程

1.pom.xml中添加cos配置 <!--腾讯cos --> <dependency><groupId>com.qcloud</groupId><artifactId>cos_api</artifactId><version>5.6.28</version> </dependency> 2.application.yaml中添加cos配置 # 腾讯云存储cos…...

中高级前端开发岗

定位&#xff1a; 日常迭代任务的核心研发&#xff0c;具备高质、高效完成迭代任务的能力。 素质要求&#xff1a; 业务专家或擅长某一方向技术&#xff1b;有较丰富的开发经验&#xff1b;需要具备良好的沟通和协作能力&#xff0c;能够与其他部门和团队进行有效的沟通和协…...

idea常用配置

文章目录 I 常见问题1.1 取消maven忽略文件清单1.2 源根之外的java文件1.3 idea取消所有断点1.4 idea使用非模式提交界面1.5 用Service窗口展示所有服务及端口1.6 idea编码问题(加载配置文件失败)II idea 换行后自动缩进4个空格,怎么取消?I 常见问题 1.1 取消maven忽略文件…...

Spring AOP 切面按照一定规则切片并行查询Mapper并返回

需求&#xff1a; 有时候我们在查询mapper层时&#xff0c;有时候可能由于入参数据过大或者查询的范围较大&#xff0c;导致查询性能较慢&#xff0c;此时 我们需要将原本的查询按照一定规则将查询范围进行切面&#xff0c;然后分片查询&#xff0c;最后将查询结果进行组装合并…...

【vue3|第4期】Vue3的选项式与组合式

日期&#xff1a;2024年5月30日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…...

算法训练营第四十五天 | LeetCode 1049 最后一块石头的重量II、LeetCode 494 目标和、LeetCode 474 一和零

LeetCode 1049 最后一块石头的重量 继续昨天没有详细说的01背包问题往下继续说。01背包问题是将dp从一维问题升维到二维之后会遇到的一类典型问题。dp数组自然而然地是一个横坐标表示物品序号-1&#xff0c;纵坐标表示背包重量的二维数组。01背包由一个背包是否放该物品并比照后…...

【数据结构与算法(C 语言)】栈的基本操作函数(动图演示) 及 栈的实际应用之一:进制转换

目录 1. 前言2. 结构及基本操作函数&#xff1a;2.1 栈的结构类型 Stack2.2 初始化栈 InitStack2.3 销毁栈 DestroyStack2.4 清空栈 ClearStack2.5 判断栈是否为空 StackEmpty2.6 获取stack的长度 StackLength2.7 获取栈顶元素 GetTop2.8 入栈 Push2.9 出栈 Pop2.10 访问元素2.…...

[原创]C++ 11的thread_local线程局部变量与Lambda表达式配合使用, 却引发致命的, 难以发现的冲突.

[简介] 常用网名: 猪头三 出生日期: 1981.XX.XX QQ联系: 643439947 个人网站: 80x86汇编小站 https://www.x86asm.org 编程生涯: 2001年~至今[共22年] 职业生涯: 20年 开发语言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 开发工具: Visual Studio、D…...

C语言-单精度和双精度浮点型

文章目录 一、遇到的问题二、解决方案三、问题根因float和double的区别&#xff1a; 总结-浮点数 一、遇到的问题 将NXP项目的代码移植到RH850F1K的项目上时&#xff0c;程序运行异常&#xff1a; u16Volt (uint16)((double)u16ADVal * (double)6.3) 执行到这一行程序就跑飞了…...

STM32学习问题总结(2)—CubeMX生成项目后串口没效果和Microlib

检查完所有的硬件和软件部分&#xff0c;最后发现&#xff0c;又是Keil的设置问题&#xff0c;啊啊啊啊 打开Keil的魔术棒&#xff0c;勾选Target的Use Microlib选项即可&#xff0c;但这并不是最佳方案 最终解决方案&#xff1a; 参考&#xff1a;http://t.csdnimg.cn/2Tjfc…...

【数据结构与算法 | 二叉树篇】二叉树的前中后序遍历(递归版本)

1. 二叉树的概念 (1). 二叉树的结构 借用了一下力扣的模板 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, TreeNode right) {this.val val;this.left left;this.righ…...

Python exp用法:深入探索指数函数的奥秘

Python exp用法&#xff1a;深入探索指数函数的奥秘 在Python中&#xff0c;exp是一个非常重要的数学函数&#xff0c;它属于math模块的一部分&#xff0c;用于计算自然数e的指数。自然数e是一个无理数&#xff0c;约等于2.71828&#xff0c;它在数学、物理和工程等领域有着广…...

[有监督学习] 8.详细图解神经网络

神经网络 一直以来&#xff0c;人们都认为神经网络&#xff08;Neural Network&#xff0c;NN&#xff09;是模仿生物体的神经网络设计而成的。神经网络既可以用于回归&#xff0c;也可以用于分类&#xff0c;但在实际应用中常用于分类。基于神经网络的深 度学习因在图像识别和…...