计算机基础(8)——音频数字化(模电与数电)
💗计算机基础系列文章💗
- 👉🍀计算机基础(1)——计算机的发展史🍀
- 👉🍀计算机基础(2)——冯诺依曼体系结构🍀
- 👉🍀计算机基础(3)——计算机的系统组成🍀
- 👉🍀计算机基础(4)——操作系统概述🍀
- 👉🍀计算机基础(5)——进制与进制转换🍀
- 👉🍀计算机基础(6)——编码与解码🍀
- 👉🍀计算机基础(7)——数字图像技术🍀
- 👉🍀计算机基础(8)——音频数字化(模电与数电)🍀
- 👉🍀计算机基础(9)——原码、补码、反码🍀
- 👉🍀计算机基础(10)——编程语言与跨平台🍀
音频的编码与解码
二进制转换音频的过程也叫音频数字化,其过程较为复杂,是模拟声音信号转变为数字信号再由数字信号转换为模拟信号的一个技术实现,其过程涉及到声音的采集,转换为模拟信号,采样、量化等。了解音频数字化之前我们先了解一些关于声音的一些前置知识,
1.1 声波
我们知道声音是以声波的形式在空气中传播的,声波是声音的物理表现形式,它是由物体振动产生的能量传播方式。当物体振动时,它会激发周围介质(如空气、液体或固体)中的分子或原子振动,这些振动随后以波的形式传播开来。
一段声波中包含有声音的频率、振幅、音色等声音元素,通过声波我们可以将声音这一抽象概念通过数据的形式表现出来。声波的采集就是原声音的采集,通过麦克风、话筒等录音设备就可以采集到一段声音的声波。
例如我们通过声波来反映一段声音的频率、振幅、音色等信息。
(1)通过声波的频率反映声音音调,频率低音调低,频率高音调高。
(2)通过声波的振幅反映声音响度,振幅大响度大,振幅小响度小。
(3)通过声波的规律性反映声音音色,一般来说具有规律性的声波听起来悦耳,反之为噪音。
1.2 模拟信号
当录音设备采集到声波数据后将会以电信号的方式模拟出声波信号,声波被电信号模拟出来的信号就是声音模拟信号,这种模拟信号是对声波的一种电子化表示,以便在音响设备中再现出类似原始声波的效果。
模拟信号是连续变化的,模拟信号的最大特点是随着时间连续变化的值,它可以包含无限数量的可能幅度值。
我们可以把模拟信号模拟声波的过程看作是汽车的仪表盘模拟汽车行驶速度的过程,当驾驶员深踩一脚油门时,汽车会迅速提高行驶速度,然而汽车仪表盘的数据并不是从0km/h直接变成80km/h,虽然这个变化的时间很短,但也是从0km/h连续变化到80km/h,期间汽车仪表盘指针肯定指向过10、11.7、12.785、20.491、38.4、69.8、78等这样的数据。同理,当声波的频率忽高忽低,振幅忽大忽小时模拟信号也会随着时间连续不间断的模拟出声波频率的高低以及振幅的大小。
例如汽车行驶速度的通过仪表盘来模拟,如图所示。
通过观察曲线图我们可以看到,取任意一个时间点都可以获取到这个时间点所对应的速度值,通过声音模拟信号模拟声波的变化也类似于这样。如图所示,当通过模拟信号将声波信息模拟出来后,取任意一个时间点所对应的声波幅度数值也能取出来,这就是模拟信号的最大特点——随着时间连续变化的值。
类似于模拟信号的变化还有水银温度计的变化,当我们把水银温度计放置在10°的水温环境下时突然加了一些温水进去,使得水温一下子骤升至50°,然而水银温度计的数值肯定经过了20°、32.7°、39.1°、45.8°等数值,并不是从10°直接变成到50°,而是随着时间的变化温度上数值从10°增加至50°(虽然这个时间可能非常短)。
1.3 数字信号
数字信号是模拟信号的数字化,它是一系列离散的电脉冲(信号),可以利用其某一瞬间的状态来表示具体的数据。数字信号与模拟信号最大的不同点在于模拟信号是随着时间连续变化的值,它可以去任意时间点上的数据。而数字信号则是离散的数值,即取某几个瞬间的状态来表示具体的数据,数字信号包含的是有限数量的可能幅度值。
如图所示,数字信号来模拟声波时,只有某个具体的时间点才会有对应的声波数据,而不是和模拟信号那样任意的时间点上都能查询到对应的声波数据。
数字信号只有某几个时间点上才能有对应的数据,这些时间点并不是连续的,这意味着某些时间上的数据会缺失,将数字信号的这些时间点连接起来可以大致还原模拟信号。
如果将模拟信号看着是汽车上的仪表盘、水银温度计,那么数字信号就可以看做是电动车上面的数字仪表盘和电子温度枪。
不管是数字仪表盘还是电子温度枪,这些设备的数值和时间都是离散的。以电动车的数字仪表盘举例,例如我们骑电动车时突然深拧加速,假设速度从0提速到了40km/h,那么电子仪表盘上的速度很有可能就从10km/h变化到25km/h再变化到34km/h,最后变化到40km/h,在电子仪表盘模拟电动车行驶速度的变化时,只显示了(模拟了)25、34、40这些数值,而25~34
以及34~40
之间的数据都不会被显示(模拟)。
那为什么有了模拟信号还要转换为数字信号呢?因为数字信号相对比模拟信号存在有很多优点,如下:
(1)数字信号抗干扰性强:数字信号在传输和处理过程中可以通过纠错码等技术来提高抗干扰能力,相比之下,模拟信号在传输和处理过程中容易受到噪声和干扰的影响,导致信号失真或丢失。
(2)数字信号的可编程性:数字信号可以通过编程进行处理和操作,例如滤波、压缩、加密等,这使得数字信号在处理和存储方面更加灵活和方便。
(3)数字信号的可复制性:数字信号可以通过复制和传输进行无损的复制和传递,而模拟信号在复制和传输过程中可能会产生失真或损失。
(4)数字信号便于存储和传输:数字信号以二进制数的形式表示,便于计算机进行存储和传输。同时,数字信号可以进行压缩处理,以节省存储空间和提高传输效率。
(5)数字信号便于加密和解密:数字信号可以通过加密算法进行加密处理,以保护信号的安全性和隐私性。而模拟信号则难以实现加密和解密操作。
数字信号相对模拟具有许多优势,使其在现代通信中占据主导地位。
1.4 音频数字化
所谓音频数字化就是把模拟信号如何具体的转换为数字信号,其过程分为采样、量化、编码等。
1.4.1 采样
(1)采样:将连续的模拟声音信号转换为一系列离散的采样点的过程,采样点随后由模拟数字转换器(ADC)转换为数字信号,以便计算机或其他数字设备进行处理、存储、传输和播放。每秒钟对声波幅度值样本的采样次数称为采样频率,单位为HZ,声音的质量受采样频率的影响。
如图所示,在一段模拟信号中,我们对其根据指定时间进行采样,我们可以发现采样的频率越高,与模拟信号越接近,声音还原程度越高,数据量也越大。
1.4.2 量化
(2)量化:将幅度上连续取值(模拟量)的每一个样本转换为离散值(数字量)表示的过程,它实现了在幅度轴上对信号的数字化。通过量化,音频信号被转换为一系列的数字值,这些数字值可以精确地表示原始音频信号的幅度,如图所示。
通过对比不同的量化等级,我们可以发现量化等级越高量化值的精度也越高,更高的量化等级意味着更多的量化值可以用来表示音频样本,就能够更好的还原音频。
计算机底层是以二进制存储的,因此我们需要将量化值转换为二进制。在声音量化过程中,我们使用量化位数来表示量化值所需要的二进制位数,例如在量化等级为4的情况下使用两位二进制数就可以表示量化值,因此它的量化位数就是2bit,量化等级为8的量化位数就是3bit,如图所示。
然而,需要注意的是,量化位数的提高虽然能够提升音质,但也会导致音频文件的数据量增大。因为每个音频样本都需要用更多的二进制位来表示,所以音频文件的存储空间会相应增加。例如,一个16bit的音频文件在数据量上会是8bit音频文件的两倍。
1.4.3 编码
(3)编码
声音通过采样、量化过后就成为了010101的二进制数,编码决定了这些二进制数如何存储,有的编码规则的存储效率非常高,同样一段的音频可以使用非常少的空间将其存储,有的编码规则则更加注重与音频的质量,但可能会花费更多的空间来存储。
不同的编码方式就被分成了不同类型的音频文件类型,常见的音频文件有:
- WAV(Waveform Audio File Format)格式:WAV是一种无损音频格式,音质非常好,因为是无损的,保留了原始音频的所有信息。常用于多媒体开发的中间文件、保存音乐和音效素材。由于WAV是无损压缩,因此文件体积相对较大。
- MP3(MPEG Audio Layer III):MP3是一种有损音频格式,广泛应用于音乐、广播、电视等领域,具有较高的压缩比和较好的音质。音质在128Kbit/s以上表现还不错,但相较于无损格式有所损失。适合需要较小文件体积,且对音质要求不太苛刻的场合,如网络音乐下载、移动设备存储等。
- AAC(Advanced Audio Coding):ACC是一种高压缩比的音频压缩算法,它的压缩比要远超过较老的音频压缩算法,如AC-3、MP3等。适用于需要较高音质,同时文件体积也要相对较小的场合,如在线音乐流媒体、手机铃声等。
相关文章:
计算机基础(8)——音频数字化(模电与数电)
💗计算机基础系列文章💗 👉🍀计算机基础(1)——计算机的发展史🍀👉🍀计算机基础(2)——冯诺依曼体系结构🍀👉ἴ…...
手搓单链表(无哨兵位)(C语言)
目录 SLT.h SLT.c SLTtest.c 测试示例 单链表优劣分析 SLT.h #pragma once#include <stdio.h> #include <assert.h> #include <stdlib.h>typedef int SLTDataType;typedef struct SListNode {SLTDataType data;struct SListNode* next; }SLTNode;//打印…...
代码随想录算法训练营第18天|二叉树
513. 找树左下角的值 最左边的结点的特性 1.只能是叶子结点, 2.必须考虑是最底层,所以要考虑树的深度 3.同样的深度考虑左子树 考虑迭代法,层序遍历 递归优点难搞的 /*** Definition for a binary tree node.* function TreeNode(val, left, righ…...
使用tftpd更新开发板内核
我们升级内核可以通过原厂提供的升级软件来进行,比如瑞芯微的RKDevTool.exe,只不过这种方式必须通过指定的OTG升级口,还得借助按键进入loader模式后才可以。 其实还可以利用一些通用的工具来进行升级,比如tftpd工具。 下载地址p…...
MySQL数据库整体知识点简述
目录 第一章:数据库系统概述 第二章:信息与数据模型 第3章 关系模型与关系规范化理论 第四章——数据库设计方法 第六-七章——MySQL存储引擎与数据库操作管理 第九章——索引 第10章——视图 第11章——MySQL存储过程与函数 第12章——MySQL 触…...
深入理解MySQL索引下推优化
在MySQL中,索引的使用对于查询性能至关重要。然而,即使有合适的索引,有时查询性能仍然不尽如人意。索引下推(Index Condition Pushdown,ICP)是一项能够进一步优化查询性能的技术。本文将详细讲解索引下推的…...
论文降重技巧:AI工具如何助力论文原创性提升?
论文降重一直是困扰各界毕业生的“拦路虎”,还不容易熬过修改的苦,又要迎来降重的痛。 其实想要给论文降重达标,我有一些独家秘诀。话不多说直接上干货! 1、同义词改写(针对整段整句重复) 这是最靠谱也是…...
el-date-picker的使用,及解决切换type时面板样式错乱问题
这里选择器的类型可以选择日月年和时间范围,根据类型不同,el-date-picker的面板也展示不同,但是会出现el-date-picker错位,或者面板位置和层级等问题。 源代码: <el-selectv-model"dateType"placeholder&…...
Flutter 中的 ToggleButtonsTheme 小部件:全面指南
Flutter 中的 ToggleButtonsTheme 小部件:全面指南 Flutter,作为由 Google 开发的跨平台 UI 框架,为开发者提供了丰富的组件来构建现代化的应用程序。ToggleButtons 是 Material Design 组件库中的一个组件,它允许用户从一组选项…...
新手教程之使用LLaMa-Factory微调LLaMa3
文章目录 为什么要用LLaMa-Factory什么是LLaMa-FactoryLLaMa-Factory环境搭建微调LLaMA3参考博文 为什么要用LLaMa-Factory 如果你尝试过微调大模型,你就会知道,大模型的环境配置是非常繁琐的,需要安装大量的第三方库和依赖,甚至…...
Java函数笔记
1. Statement.executeQuery 和 Statement.executeUpdate 作用: 用于执行SQL查询和更新操作。 问题: 容易导致SQL注入攻击。 解决方法: 使用PreparedStatement进行参数化查询。 // 不安全的做法 Statement stmt connection.createStat…...
Maven实战: 从工程创建自定义archetype
在上一节中(创建自定义archetype)我们手动创建了一个项目模板,经过5步能创建出一个项目模板,如果我有一个现成的项目,想用这个项目作为模板来生成其他项目呢?Maven提供了基于项目生成archetype模板的能力,我们分3步来讲…...
初识JAVA中的包装类,时间复杂度及空间复杂度
目录: 一.包装类 二.时间复杂度 三.空间复杂度 一.包装类: 在Java中,由于基本类型不是继承自Object,为了在泛型代码中可以支持基本类型,Java 给每个基本类型都对应了一个包装类型。 1 基本数据类型和对应的包装类 &am…...
RapidMiner如何利用Hugging Face中的模型实现更有趣的事
RapidMiner Studio最新发布的功能更新,重点是嵌入Hugging Face和Open AI,Hugging face中含有大量的可用模型,包含翻译、总结、文本生成等等强大的模型,Open AI更不必说了,生成界的鼻祖。那么今天主要介绍一下RapidMine…...
Vue3 自定义Hooks函数的封装
1、如何理解vue3中的自定义hooks 在Vue 3中,自定义hooks允许开发者封装和重用逻辑代码。自定义hooks是使用Composition API时创建的函数,这些函数可以包含任意的组合逻辑,并且可以在多个组件之间共享。 自定义hooks通常遵循这样的命名约定&…...
python的DataFrame和Series
Series、DataFrame 创建 pd.Series() pd.DataFrame() # 字典{列名:[值1,值2],} [[]] [()] numpy Pandas的底层的数据结构,就是numpy的数组 ndarray 常用属性 shape (行数,) (行数,列数) values → ndarray index 索引名 siz…...
ARP欺骗的原理与详细步骤
ARP是什么: 我还记得在计算机网络课程当中,学过ARP协议,ARP是地址转换协议,是链路层的协议,是硬件与上层之间的接口,同时对上层提供服务。在局域网中主机与主机之间不能直接通过IP地址进行通信,…...
25、DHCP FTP
DHCP 动态主机配置协议 DHCP定义: 服务器配置好了地址池 192.168.233.10 192.168.233.20 客户端从地址池当中随机获取一个ip地址,ip地址会发生变化,使用服务端提供的ip地址,时间限制,重启之后也会更换。 DHCP优点&a…...
spark学习记录-spark基础概念
背景需求 公司有项目需要将大容量数据进行迁移,经过讨论,采用spark框架进行同步、转换、解析、入库。故此,这里学习spark的一些基本的概念知识。 Apache Spark 是一个开源的大数据处理框架,可以用于高效地处理和分析大规模的数据…...
BGP数据包+工作过程
BGP数据包 基于 TCP的179端口工作;故BGP协议中所有的数据包均需要在tcp 会话建立后; 基于TCP的会话来进行传输及可靠性的保障; 首先通过TCP的三次握手来寻找到邻居; Open 仅负责邻居关系的建立,正常进收发一次即可;携带route-id; Keepli…...
【C语言】详解函数(庖丁解牛版)
文章目录 1. 前言2. 函数的概念3.库函数3.1 标准库和头文件3.2 库函数的使用3.2.1 头文件的包含3.2.2 实践 4. 自定义函数4.1 自定义函数的语法形式4.2 函数的举例 5. 形参和实参5.1 实参5.2 形参5.3 实参和形参的关系 6. return 语句6. 总结 1. 前言 一讲到函数这块ÿ…...
createAsyncThunk完整用法介绍
createAsyncThunk 是 Redux Toolkit 库中的一个功能,它用于创建处理异步逻辑的 thunk action creator。Redux Toolkit 是一个官方推荐的库,用于简化 Redux 开发过程,特别是处理常见的 Redux 模式,如异步数据流。createAsyncThunk …...
[书生·浦语大模型实战营]——第六节 Lagent AgentLego 智能体应用搭建
1. 概述和前期准备 1.1 Lagent是什么 Lagent 是一个轻量级开源智能体框架,旨在让用户可以高效地构建基于大语言模型的智能体。同时它也提供了一些典型工具以增强大语言模型的能力。 Lagent 目前已经支持了包括 AutoGPT、ReAct 等在内的多个经典智能体范式&#x…...
Word文档如何设置限制编辑和解除限制编辑操作
Word文档是大家经常使用的一款办公软件,但是有些文件内容可能需要进行加密保护,不过大家可能也不需要对word文件设置打开密码。只是需要限制一下编辑操作就可以了。今天和大家分享,如何对word文件设置编辑限制、以及如何取消word文档的编辑限…...
IO进程线程(六)进程
文章目录 一、进程状态(二)进程状态切换实例1. 实例1 二、进程的创建(一)原理(二)fork函数--创建进程1. 定义2. 不关注返回值3. 关注返回值 (三) 父子进程的执行顺序(四&…...
机器视觉——找到物块中心点
首先先介绍一下我用的是HALCON中的HDevelop软件。 大家下载好软件后可以测试一下: 在程序编辑器窗口中输入下面指令: read_image(Image,monkey) 那么如果出现这样的图片,说明是没有问题的 那么本次编程采用的是下面这张图片 我们要达到的…...
重磅消息! Stable Diffusion 3将于6月12日开源 2B 版本的模型,文中附候补注册链接。
在OpenAI发布Sora后,Stability AI也发布了其最新的模型Stabled Diffusion3, 之前的文章中已经和大家介绍过,感兴趣的小伙伴可以点击以下链接阅读。Sora是音视频方向,Stabled Diffusion3是图像生成方向,那么两者没有必然的联系&…...
Python报错:AttributeError: <unknown>.DeliveryStore 获取Outlook邮箱时报错
目录 报错提示: 现象描述 代码解释: 原因分析: 报错提示: in get_outlook_email return account.DeliveryStore.DisplayName line 106, in <module> email_address get_outlook_email() 现象描述 获取outlook本地邮箱…...
如何 Logrus IT 的质量评估门户帮助提升在线商店前端(案例研究)
在当今竞争激烈的电子商务环境中,一个运作良好的在线店面对商业成功至关重要。然而,确保目标受众获得积极的用户体验可能是一项挑战,尤其是在使用多种语言和平台时。Logrus IT的质量评估门户是一个强大的工具,可帮助企业简化内容和…...
程序调试
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 在程序开发过程中,免不了会出现一些错误,有语法方面的,也有逻辑方面的。对于语法方面的比较好检测,因…...
用ps做网站方法/seo实战培训
1、改表法 可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成&qu…...
电商网站费用/餐饮营销策划与运营
作者:莫石链接:http://www.zhihu.com/question/30326374/answer/59884351来源:知乎著作权归作者所有,转载请联系作者获得授权。群体智能算法家族的两个重要成员就是粒子群算法与蚁群算法。基本思想都是模拟自然界生物群体行为来构…...
学校网站建设内容/想做电商应该怎么入门
技术牛的程序员会自己搭建IP代理池,不过对于刚入门的小白或者工作时间很紧凑的人来说,花费力气去搭建一个IP代理池,有些得不偿失了。于是,市面上就出现了很多改ip软件,可以百度一下,有很多,我们…...
河口建设局网站/seo排名优化方式
来源:恋习Python ID:sldata2017 作为一名新手Python程序员,你首先需要学习的内容之一就是如何导入模块或包。但是我注意到,那些许多年来不时使用Python的人并不是都知道Python的导入机制其实非常灵活。在本文中,我们…...
有没有专门做胜负彩的网站/营销是什么意思
安装opencv文件时若需要cmake编译,如果中间出现 解决办法是: 在opencv的文件中找到包含cmakelist.txt的文件夹,把where is the source code:的路径改成它。 然后在where to build the binaries 的路径中写上任何一个不存在的路径,…...
西安代做毕业设计网站/海南百度推广公司
本文转自:http://blog.csdn.net/enginetanmary/archive/2007/06/08/1643445.aspx 原文如下: 在编程中我们常常会遇到“将文件保存到数据库中”这样一个问题,虽然这已不是什么高难度的问题,但对于一些刚刚开始编程的朋友来说可能是有一点困难。其实&#…...