脉冲编码调制(PCM,Pulse Code Modulation)简介

脉冲编码调制(PCM,Pulse Code Modulation)

脉冲编码调制(PCM,Pulse Code Modulation)是一种将模拟信号转换为数字信号的技术。在音频处理、电话通信以及其他许多领域都有广泛应用。PCM通过采样、量化、编码等三个主要步骤将模拟信号转换为数字信号。

采样(Sampling)

在连续的模拟信号中以固定的时间间隔选取一系列的样本点。采样率(Sampling Rate)是指每秒钟采样的次数,单位是赫兹(Hz)。根据奈奎斯特定理,为了能够无失真地重构原始信号,采样率应至少是信号最高频率的两倍。
常见的采样率包括:

  • 8 kHz:通常用于电话语音,因为人声的频率范围大约在300Hz到3400Hz之间,8kHz的采样率足以覆盖这个范围。
  • 22.05 kHz:这个采样率通常用于某些低质量的音频传输,能够覆盖大部分人类可听频率的一半。
  • 44.1 kHz:这是CD音质的标准采样率,能够覆盖人类可听的整个频率范围(大约20Hz到20kHz)。它是专业音频处理和消费级音频产品中最常用的采样率之一。
  • 48 kHz:这个采样率在专业音频领域(如电影和广播)中非常常见,因为它提供了比CD更高的采样率,可以捕捉更多的细节。
  • 96 kHz和192 kHz:这些更高的采样率主要用于专业音频录制和一些高分辨率音频格式中。它们能够提供更广的频率范围和更细腻的音质,但相应地也需要更多的存储空间和处理能力。

量化(Quantization)

量化是将每个采样点的模拟值映射到最接近的数字值。量化过程中,由于将连续的模拟值映射到有限的数字值,会引入量化噪声。量化的精度由位深(Bit Depth)决定,位深越高,可以表示的数字值越多,量化噪声越小,音质越好。
量化位深度(Bit Depth)是指在数字音频中,每个采样点可以表示的不同幅度级别的数量。位深度直接影响音频信号的动态范围和信噪比,即能够表示的最大音量和最小音量之间的差异,以及音频的细节和清晰度。常见的量化位深度包括:

  • 8位:较低的位深度,每个采样点有256(2^8)个可能的幅度值。8位音频通常用于电话通信和某些低质量的音频文件。由于其较低的动态范围,8位音频的音质相对较差,可能会有明显的量化噪声。
  • 16位:这是CD音质的标准位深度,每个采样点有65,536(2^16)个可能的幅度值。16位提供了较好的动态范围,适用于大多数消费级音频应用,能够提供满意的音质。
  • 24位:专业音频和一些高分辨率音频格式使用的位深度,每个采样点有16,777,216(2^24)个可能的幅度值。24位音频提供了更宽的动态范围,允许更细腻的音量级别和更低的量化噪声,适用于专业录音和混音。
  • 32位浮点:在音频处理和混音中常用的一种格式,尽管它提供的动态范围远远超过人耳的感知能力,但它允许音频工程师在不损失音质的情况下进行大范围的音量调整。32位浮点格式在处理过程中非常有用,因为它可以避免在多次处理和效果应用中累积的量化误差。

编码(Encoding)

编码是将量化后的数字值转换为二进制形式,以便于存储或传输。编码后的数据可以是线性的,也可以是非线性的,线性PCM(LPCM)是最常见的形式,其中数字值直接对应于采样点的幅度。

声道

在音频处理和播放中,声道(Channel)是一个重要的概念,它决定了音频信号的空间分布和听觉体验。声道的不同配置可以提供从简单的单声道到复杂的多声道环绕声体验。
常见的声道配置:

  1. 单声道(Mono)
  • 单声道音频只有一个声道。在单声道配置中,所有的声音都被混合到一个单一的信号中,播放时在所有扬声器中均匀输出。单声道适用于语音播放和环境中只有一个音源的场景。
  1. 立体声(Stereo)
  • 立体声音频有两个声道:左声道和右声道。立体声可以提供一定的空间感,通过调整左右声道的音量和相位,可以模拟声音源在空间中的位置。立体声是最常见的音频配置,适用于大多数音乐和视频播放。
  1. 环绕声
  • 环绕声配置通过多个声道提供更丰富的空间感和沉浸感。常见的环绕声配置包括5.1声道(前左、前右、中央、后左、后右和一个低音炮)和7.1声道(在5.1的基础上增加两个侧声道)。环绕声配置常用于家庭影院、电影和游戏中。

比特率

比特率(Bitrate)是衡量音频和视频文件数据传输和处理速度的一个重要指标,表示单位时间内传输或处理的比特数(bits),通常以比特每秒(bps)为单位。在音频领域,比特率直接影响音频文件的大小和音质。
对于PCM(脉冲编码调制)音频数据,比特率可以通过以下公式计算:
比特率 = 采样率 × 位深度 × 声道数
例如,一个立体声(2声道)音频文件,采样率为44.1kHz,位深度为16位,其比特率计算如下:
比特率 = 44,100 × 16 × 2 = 1,411,200 bps 或 1,411.2 kbps

信噪比

信噪比(Signal-to-Noise Ratio,简称SNR)是衡量信号质量的一个重要指标,它描述了有用信号强度与背景噪声强度之间的比例。信噪比通常以分贝(dB)为单位表示,数值越高意味着信号中的噪声成分越小,信号质量越好。

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

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

相关文章

C#基础入门:从安装到第一个Hello World程序

在编程的世界里,C#是一种备受推崇的编程语言,它以其强大的功能、面向对象的特性和对.NET框架的深度集成而闻名。无论你是编程新手还是寻求新挑战的资深开发者,C#都是一个值得探索的领域。本文将带你踏上C#编程的旅程,从安装必要的…

如何通过一条SQL变更多个分库分表?

数据库发展到今天,分库分表已经不是什么新鲜话题了,传统的单节点数据库架构在数据量和访问频次达到一定规模时,会出现性能瓶颈和扩展性问题,而分库分表技术通过将数据分散到多个数据库实例中来分担负载,从而提升系统的…

力扣第二十九题——两数相除

内容介绍 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-…

Electron的入门介绍与使用(1)共30节

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。 入门指南​ Electron 是网页应用 …

IEDA怎么把springboot项目 启动多个

利用Idea提供的Edit Configurations配置应用参数。 点击Modify Options进行添加应用参数: 确保这里勾选

宿舍生活新升级:智能指纹锁的便捷体验(嘉立创EDA设计)

宿舍生活新升级:智能指纹锁的便捷体验 引言 宿舍生活总是充满挑战和乐趣,但有时也会因为一些小事情而变得复杂。比如,忘记带钥匙或者需要频繁地给室友开门。随着科技的发展,智能设备逐渐走进我们的生活,为日常带来便…

每日好题(2)

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) {int arr[6] { 1,2,3,4,5,6 };char* p arr;int sz sizeof(arr) / sizeof(arr[0]);for (int a 0; a < sz; a){printf("%d\n", *p);p 4;}return 0; }这串代码遍历打印数组的结果是没…

在 VM 虚拟机中安装 openEuler + 桌面

在 VM 虚拟机中安装 openEuler 1 介绍2 步骤语言Root 账户安装位置网络和主机名自动检索到【推荐】手动配置网络 软件选择安装完成登录测试网络curl ip / ping ipip link show / ip a如网络不通&#xff0c;可检查网卡状态和dns配置 安装命令设置以图形界面的方式启动【dde】第…

Python Django功能强大的扩展库之channels使用详解

概要 随着实时 web 应用程序的兴起,传统的同步 web 框架已经无法满足高并发和实时通信的需求。Django Channels 是 Django 的一个扩展,旨在将 Django 从一个同步 HTTP 框架转变为一个支持 WebSockets、HTTP2 和其他协议的异步框架。它不仅能够处理传统的 HTTP 请求,还可以处…

封装分页组件(Pagination)v2版本

使用须知&#xff1a;基于项目内已安装vue2eleme-ui&#xff0c; 则可以百分百直接套用&#xff0c;使用简介明了&#xff01;&#xff01; 一、封装component组件 component/Pagination/index.js <template><div :class"{ hidden: hidden }" class"…

动态规划之三—— 从暴力递归到动态规划_数字字符串转字母字符串

题目&#xff1a; 规定1 和A 对应&#xff0c;2 和B对应&#xff0c;3 和C 对应 ... 那么一个数字字符串&#xff0c;比如“111” 就可以转化为&#xff1a;“AAA” 、“KA”、“AK” 。要求&#xff1a;给定一个只有数字字符组成的字符串str&#xff0c; 返回有多少种转化结果…

客户端与服务器通讯详解(4):支持实时通讯的协议

在之前的章节中&#xff0c;贝格前端工场给大家分享了客户端与服务器通讯详解定义、流程、协议、方式。本次重点分享实时通讯方式是什么&#xff0c;该如何实现&#xff0c;有哪些协议&#xff0c;欢迎大家点赞评论转发。 一、客户端与服务器实时通讯是什么 客户端与服务器实…

SQL labs-SQL注入(二)

环境搭建参考 SQL注入&#xff08;一&#xff09; 一&#xff0c;SQL labs-less2。 http://192.168.61.206:8001/Less-2/?id-1 union select 1,2,group_concat(username , password) from users-- 与第一关没什么太大的不同&#xff0c;唯一区别就是闭合方式为数字型。 二…

【深度学习】大模型中的LoRA的重要参数理解,dim维度和lora_alpha

peft LoRA LoRA&#xff08;Low-Rank Adaptation&#xff09;的重要参数如下&#xff1a; init_lora_weights&#xff1a;用于初始化LoRA权重的方法&#xff0c;有几种选择&#xff1a; "kaiming_uniform"&#xff1a;默认的初始化方法&#xff0c;使用Kaiming均匀初…

解决:uniapp 小程序 使用swiper 内部嵌套另外一个拥有左右滑动组件导致滑动冲突

解决办法 在swiper-item 内增加这个属性进行包裹 touchmove.stop <div touchmove.stop><qiun-data-charts type"area" :opts"optsStg" :chartData"dateDataStg" /> </div>

微信小程序 - 在视图组件上绑定函数并携带参数(事件对象自定义属性传参)

前言 有时候,我们需要在小程序的视图组件上绑定一个函数,而且需要 传递参数。 小程序在组件上绑定事件后,传递参数的方式不同于前端开发其他场景中直接加参数的方式,小程序在参数的传递时,采用 事件对象的自定义属性 的方式,和普通 Vue 还不同。 示例代码

微信小程序中Map组件Marker中把Label文字信息通过按钮显示或隐藏

wxml页面按钮 <button bindtap"toggleLabel">Toggle Label</button>js data:{labelMarkerId: null // 记录当前显示文本的标记的 id }, //按钮切换显示 toggleLabel() {// 判断当前是否有显示的文本标记if (this.data.labelMarkerId ! null) {// 如果…

数学建模--图论与最短路径

目录 图论与最短路径问题 最短路径问题定义 常用的最短路径算法 Dijkstra算法 Floyd算法 Bellman-Ford算法 SPFA算法 应用实例 结论 延伸 如何在实际应用中优化Dijkstra算法以提高效率&#xff1f; 数据结构优化&#xff1a; 边的优化&#xff1a; 并行计算&…

zabbix添加钉钉告警机器人使用bash和python两种脚本

zabbix添加钉钉告警机器人使用bash和python两种脚本 查看脚本目录 vi /etc/zabbix/zabbix_server.conf# 脚本存放路径 AlertScriptsPath/usr/lib/zabbix/alertscripts编写脚本&#xff08;二选一&#xff09; bash脚本 编写脚本 cd /usr/lib/zabbix/alertscripts vi zabbi…

服务器文件上传使用MD5实现文件校验和

MD5&#xff08;Message-Digest Algorithm 5&#xff09;是一种常用的哈希函数&#xff0c;用于生成一个128位&#xff08;16字节&#xff09;的哈希值&#xff08;散列值&#xff09;&#xff0c;用于验证数据完整性。MD5求校验和的原理可以分为以下几个步骤&#xff1a; 1. …