Opus从入门到精通(七)Opus编码基础之认识声音

2024-06-15 11:36

本文主要是介绍Opus从入门到精通(七)Opus编码基础之认识声音,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Opus从入门到精通(七)Opus编码基础之认识声音

前面我们分析完Opus的编解码api使用,封装原理等,接下来我们准备分析Opus编码原理.Opus编码是一个复杂的工作,我们需要做一些基本铺垫,包括认识声音,压缩编码基础.
认识音频有助于我们了解音频特征,不仅对语音有助于我们理解编码技术,同时在语音识别,TTS等场景提供帮助

音频信号及其心里特征

人类能够感知客观世界的两个重要途径就是听觉和视觉,而听觉所感受到的信息就是声音.声音是一种波,其本质是机械振动或气流扰动引起周围弹性媒介发生波动饿现象.声波可以在空气中传播,也可以在液体和固体中传播.

声压级

为了定量描述声音的强弱,人们采用了多种描述方式,其中声压和声压级就是其中的两种形式.声压用P来表示,它是指在声场中某处由声波引起的压强的变化值,单位是“帕斯卡”(Pa)。当然声压越大,声音也就越大。但是人耳对声音强弱的感觉与声压的大小并非成线性关系,而是大体上与声压有效值的对数成正比。为了适应人类听觉的这一特性,将声压的有效值取对数来表示声音的强弱,这种表示方式称为声压级,用SPL表示,单位是“分贝”(dB).它们的表达式如下:
S P L = 20 l g P r m s P r e f SPL=20lg\frac{Prms}{Pref} SPL=20lgPrefPrms

在上式中,Prms是计量点的声压有效值,Pref是人为定义的零声压级的参考声压值,国际协议规定 Pref=2乘以10的负5次Pa(帕),这个值是一般具有正常听力的年轻人对
1 kHz的单一频率信号(称为简谐音)刚刚能察觉到它的存在时的声压值。 在电声工程中通常用声级计来测量声压级的大小。 应该注意的是,无论是声压还是声压级都属于客观物理量,它们都是对客观事物的真实描述。

人对于声音频率的感觉表现为音调的高低,在音乐中简称音高。 音高与声音频率的关系也大体上呈对数关系。实际上音乐里的音阶就是按频率的对数取等分来确定的。 在音乐中每增高或降低一个八度音,其声音的频率就升高或降低一倍,十二平分律等程音阶正是在一个倍频程的频率范围内按频率的对数分成十二个等份划分音阶的,其中相邻的两个音阶称为一个半音,相隔的一个音称为一个全音。

人类的听觉特征决定了人对同样强度,但不同频率的声音主观感觉的强弱是不同的,即人类听觉的频率响应不是平直的。 对于高于20 kHz和低于20Hz的声音,无论其强度多高,一般人都不会听到。因此可以认为20 Hz~20 kHz是人类的听觉频带,而20Hz~20kHz的信号称为“音频信号”,高于20kHz的声音称为超音,低于20Hz的声音称为次音

此外在音频范围内,人对相同声压级而不同频率声音的敏感程度也不同,人耳对3kHz~5kHz的声音信号比高频和低频声音信号更敏感,也就是说,幅度(声压级)很低的中频信号都能被人耳听到,而低音或高音信号能被人耳听到的幅度要高得多。因此,为了更全面地表示人类的听觉频响特性,人们又定义了响度级这个主观物理量,单位用“方”(Phon)表示,响度级数是以1 kHz信号的声压级数定义的。对应同一响度级上的不同频率信号所对应的声压级也不同,但对人耳来说其声响的程度是相等的,因此将这些具有等响度的不同频率的点连接起来构成的一条条曲线被称为等响度曲线,如图所示。这些曲线是对大量具有正常听力的年青人进行大量测量并取其平均值得到的.

在这里插入图片描述

在这里插入图片描述

  1. 曲线0代表可听阈。低于此线之下不可闻。
  2. 响度级低时,各频率声压级相差很大。可差50dB以上。
  3. 当响度级别较高时,等响曲线近似水平(高保真放声在高声时,高低音都丰厚)。
  4. 在高频段曲线间隔相同,说明声压级变化时,响度级变化几乎相同。在低频段等响曲线间隔小,等响曲线对声压变化很灵敏。如80Hz,声压从60dB~80 dB,响度从30~70方。
    响度级只反映不同频率的声音的等响感觉,不能表示一个声音比另一个声音响多少倍的主观感觉。响度级为0方的等响度曲线一下的声音一般为听不见的,因此该曲线可称为闻阈或绝对听阈,它是重要的心理学声学模型之一,也是音频信号压缩的重要依据.当声音响度超过120方时,人耳会感到痛痒,因此120方的等响度曲线可称为痛阈.

响度:是描述声音大小的主观感觉量,响度的单位是"宋"(sone)。

定义:1000Hz纯音,声压级为40 dB时的响度为1宋;2宋的声音是40方声音响度的2倍;4宋为40方声音响度的4倍。多次人平均,响度级每增10方,响度增加一倍。也就是说,声压级增加10dB, 响度增加一倍。如:10把小提琴同时演奏,比一把声强增加10倍,相应声压级增加10 dB,响度级也增加了10方,而主观响度只增加1倍。
人耳对响度的感觉随声压级变化。声压级低时,分辨率差;声压级高,分辨率提高。声压级在50dB以上,人耳的声压、响度变化最小,大约1dB。 小于40 dB时,声压级要1~3dB以上才觉察出来。一个乐队演奏时,假如低、高音都以100 dB的声压级录音,此时等响线曲差不多平直,低高音听起来有差不多的响度。如果重放时声压级较低,假如50dB,这时50Hz的低音刚能听到,而1000Hz的声音却有50dB,高音也同时听上去很弱,结果原有的音色都改变了。这时要想让50Hz的声音听起来与1000Hz的声音有大致相同的响度,必须将其提升20 dB左右。因此声音以低于原始声(录音时)的声压级重放,必须通过均衡器(Equalizer)来提升低音和高音以保持原有音色平衡。

掩蔽效应

实验证明,声场中的一个强音能掩蔽与之同时发生的附近频率的弱音,这种现象称为掩蔽效应.也就是说,一种声音的出现可能是另一种声音难于听清.例如,在声场中有一个1kHz的简谐音,如果此时有一个1.1kHz而幅值比前者低18dB(分贝)的简谐音,则人们只能听到1kHz的声音.

掩蔽效应是另一个重要的心理声学模型,它与绝对听阈相呼应,在音频数据压缩中起到了重要作用.下图描述了频率为1kHz,声压级为60dB的声音信号对其他频率信号的掩蔽效应曲线.图中的虚线为音频信号的绝对听阈曲线.从图中可以可出1kHz附近信号的绝对听阈被这1kHz的强音改变成了尖锋状,也就是说,此时1kHz附近频率的信号的幅值必须高于尖峰状曲线所对应的分贝值时才能被人耳察觉.

在这里插入图片描述

在这里插入图片描述

动态范围是衡量声音强度变化的重要参数,它是指某个声音的最强音与最弱音的强度差,并用分贝(dB)表示.在音乐中,动态范围小则给人以平淡,枯燥的感觉,而动态范围大则给人以生动,细腻,表现力强的感受.

为了记录,分析,处理声音信息,人们采用拾音器设备(麦克风)进行声-电转换,以实现将声音信号转换为电信号的目的.与此相反为了将音频电信号还原和重放,人们又采用了扩音设备(如放大器,扬声器等)进行电-声转换,以实现将电信号转换为声音信号的目的.

声音的周期性

声音可以分为周期信号与非周期信号两大类.根据傅里叶(Fourier)变换原理,周期信号可以用傅氏级数的形式表示,即该种信号可以分解成按傅氏级数规律排列的一系列单一频率信号(称为简谐波)的组合.它所对应的频谱为线状频谱,这种声音信号又称为有调音,如下图所示:

在这里插入图片描述

非周期信号可以用傅氏积分表示,该种信号包含一定频带的所有频率分量.因此它所对应的频谱为连续频率,如下图所示.因此可见,同一音频信号即可以在时间域中描述,也可以在频率与中表述,不同的域有不同的的特点,这有助于对信号的研究与处理.

在这里插入图片描述

这篇关于Opus从入门到精通(七)Opus编码基础之认识声音的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063339

相关文章

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

从入门到精通MySQL 数据库索引(实战案例)

《从入门到精通MySQL数据库索引(实战案例)》索引是数据库的目录,提升查询速度,主要类型包括BTree、Hash、全文、空间索引,需根据场景选择,建议用于高频查询、关联字段、排序等,避免重复率高或... 目录一、索引是什么?能干嘛?核心作用:二、索引的 4 种主要类型(附通俗例子)1. BTree 索引(

Redis 配置文件使用建议redis.conf 从入门到实战

《Redis配置文件使用建议redis.conf从入门到实战》Redis配置方式包括配置文件、命令行参数、运行时CONFIG命令,支持动态修改参数及持久化,常用项涉及端口、绑定、内存策略等,版本8... 目录一、Redis.conf 是什么?二、命令行方式传参(适用于测试)三、运行时动态修改配置(不重启服务

Oracle 数据库数据操作如何精通 INSERT, UPDATE, DELETE

《Oracle数据库数据操作如何精通INSERT,UPDATE,DELETE》在Oracle数据库中,对表内数据进行增加、修改和删除操作是通过数据操作语言来完成的,下面给大家介绍Oracle数... 目录思维导图一、插入数据 (INSERT)1.1 插入单行数据,指定所有列的值语法:1.2 插入单行数据,指

MySQL DQL从入门到精通

《MySQLDQL从入门到精通》通过DQL,我们可以从数据库中检索出所需的数据,进行各种复杂的数据分析和处理,本文将深入探讨MySQLDQL的各个方面,帮助你全面掌握这一重要技能,感兴趣的朋友跟随小... 目录一、DQL 基础:SELECT 语句入门二、数据过滤:WHERE 子句的使用三、结果排序:ORDE

Java对异常的认识与异常的处理小结

《Java对异常的认识与异常的处理小结》Java程序在运行时可能出现的错误或非正常情况称为异常,下面给大家介绍Java对异常的认识与异常的处理,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参... 目录一、认识异常与异常类型。二、异常的处理三、总结 一、认识异常与异常类型。(1)简单定义-什么是

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas