声强和能量及其praat操作

2024-03-08 04:04
文章标签 操作 能量 praat 声强

本文主要是介绍声强和能量及其praat操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

强度、声压、能量、功率

这是我们在电学和声学等领域较常见到的词汇,但有时候可能会搞混淆,所以再整理一下。

强度(intensity)

强度,也叫做声强(Sound intensity)。《声学基础》中对于声强的定义是:通过垂直于声传播方向的单位面积上的平均声能量流(简称声能,能量),也叫平均声能量流密度。

在这里插入图片描述
声波的声强为:Ia=∫PmVat/T(0、T区间);式中T为周期的整数倍,或比周期大得多的时间;Pm为瞬时声压;Va为瞬时质点速度在指定方向的分量。在自由平面波和球面波的情况下,设有效声压为p,传播速度为c,媒质密度为ρ0,则在传播方向的声强为:I=p2/ρ0c。

声场中某点的声强是,单位时间内该点通过与声传播方向垂直的单位面积的声能量的平均值。
在这里插入图片描述
基本单位:J/m²s=W/m²(瓦特/米²)
在这里插入图片描述

强度,单位是每秒每平方厘米的ergs:
在这里插入图片描述
其中:p表示压力,单位为(dyn/cm2);u表示质点速度,单位为(cm/s);c表示传播速度,单位为(cm/s);ρ表示介质密度,单位为(g/cm3);乘积 ρc 被称为介质的声阻抗。

praat中intensity:

sound:To intensity…

设置:

  • Pitch floor (Hz):信号中的最小周期频率。如果你把它设置得太高,最终会得到一个音调同步的强度调制。如果你把它设置得太低,你的强度轮廓可能会出现模糊,所以如果你想要一个清晰的轮廓,你应该把它设置得尽可能高。
  • Time step (s):所得强度轮廓的时间步长。如果将其设置为0,则时间步长计算为有效窗口长度的四分之一,即 0.8 / pitchFloor。

Intensity对象表示线性间隔时间点 ti = t1 + (i -1) dt处的强度轮廓,其值为dB SPL,即dB相对于2·10-5 pascal,这是1000 Hz正弦波的标准听觉阈值。
一个IntensityTier对象表示一个带有时间戳的强度轮廓,也就是说,它包含一系列(时间,强度)点。强度值以dB为单位。

Intro 6.2. Configuring the intensity contour
 通过Intensity settings…在“强度”菜单中,您可以控制强度轮廓的计算方式和显示方式。

  • 观测范围:通过更改这两个数字,可以设置垂直刻度。标准设置是从50到100 dB,但如果您对背景噪声的功率感兴趣,您可能希望将其设置为0到100 dB的范围。
  • 平均法:如果您进行时间选择(而不是在单个时间设置游标),则会通过平均法计算强度。强度轮廓左侧或右侧的绿色数字表示选择中的平均强度。当你从强度菜单中选择获得强度时,你会得到相同的值。你可以选择强度的三种平均方法中的任何一种:Get mean… 或选择为选择median value。
  • 音高最小值(pitch floor):强度曲线是平滑的,因为你通常不希望强度曲线在一个基音周期内随着强度变化而上下波动。为了避免这种音高同步变化,每个时间点的强度是许多相邻时间点的加权平均值。加权是由一个高斯(双凯撒)窗口,其持续时间是由音调下限值确定。想要看到比平时更多的细节,提高音调下限值;为了得到比平时更平滑的效果,则降低音调下限值。
  • 是否减去平均压强?许多麦克风、麦克风前置放大器或录音系统中的其他组件可以给气压增加一个恒定水平(直流偏置)。你可以在波形中安静的位置看到这一点,那里的平均压力不为零,背景噪声在某个非零值附近波动。你通常不会想要认真对待这个恒定压力,也就是说,强度曲线通常不应该考虑这个恒定压力水平所提供的能量。如果打开减去平均压力开关(其标准设置也打开),则通过首先减去该点周围的平均压力,然后应用高斯窗来计算时间点的强度值。

Sound: Get intensity (dB)
空气中声音的强度定义为
在这里插入图片描述
式中x(t)为声压,单位为Pa(帕斯卡),t为声音持续时间,P0 = 2·10-5 Pa为听觉阈压。

同时列出音高和强度值:
你可以用高时间分辨率创建单独的音高和强度轮廓,然后进行插值。在下面的示例中,通过插值时间分辨率为0.001秒的曲线,以0.01秒的步长获得音高和强度值。

脚本:

    sound = selected ("Sound")tmin = Get start timetmax = Get end timeTo Pitch: 0.001, 75, 300Rename: "pitch"selectObject: soundTo Intensity: 75, 0.001Rename: "intensity"writeInfoLine: "Here are the results:"for i to (tmax-tmin)/0.01time = tmin + i * 0.01selectObject: "Pitch pitch"pitch = Get value at time: time, "Hertz", "linear"selectObject: "Intensity intensity"intensity = Get value at time: time, "cubic"appendInfoLine: fixed$ (time, 2), " ", fixed$ (pitch, 3), " ", fixed$ (intensity, 3)endfor

音高轮廓(蓝);强度(绿)
在这里插入图片描述

能量(Energy)

也叫作声能(acoustic energy)(电声词典)声源发射出的总能量,单位为瓦。
声波是机械波的一种,其实质是能量的传递过程。
声能密度(sound energy density):声能密度是单位体积的声能量。表达式为D=p2/ρ0c2,声能密度的瞬时值、极大值、峰值分别称为“瞬时声能密度”、“极大声能密度”、“峰值声能密度”。平均声能密度必须注明是某一时刻的空间平均还是在某一点的时间平均,以免混淆。

声能密度E:
在这里插入图片描述
其中:p表示声压,单位为达因每平方厘米【1达因/平方厘米(dyn/cm2)=0.1帕(Pa)】;ρ表示密度,单位为克每立方厘米;c表示声速,单位为厘米每秒。

praat中的energy

Sound: Get energy…
选择一个声音,在“查询”子菜单中选择Get energy。Praat将所选声音的能量(在您要求的时间间隔内)写入信息窗口。若声幅单位为Pa (Pascal),则能量单位为Pa2·s。
在这里插入图片描述

设置:
Time range (s):时间范围(t1, t2)。超出此范围的值将被忽略。如果t1不小于t2,则考虑声音的整个时域。

定义:
能量定义为
在这里插入图片描述
其中x(t)是声音的振幅。对于立体声来说,定义为
在这里插入图片描述
其中x(t)和y(t)是两个通道;这个定义是对通道进行平均(而不是求和),从而确保如果你将单声道声音转换为立体声,能量将保持不变。
对于空气中的声能,用焦耳/平方米表示:
在这里插入图片描述
其中x(t)为声压,单位为Pa(帕斯卡),ρ为空气密度(apx. 1.14 kg/m3), c为空气中的声速(apx. 353 m/s)。

空气中声音的功率定义为:
在这里插入图片描述
其中x(t)是声压,单位是Pa(帕斯卡),ρ是空气密度(apx. 1.14 kg/m3), c是声音在空气中的传播速度(apx. 353 m/s), T是声音的持续时间。

实现样例:
在Praat中,声音仅在有限的时间点上被定义,并且间隔均匀。例如,一个采样频率为10kHz的3秒长的声音,即被定义在30,000个时间点上,通常(例如,当你用create Sound from formula创建声音时)位于0.00005、0.00015、0.00025……2.99975, 2.99985和2.99995秒。Praat看待这个问题的简单方法是,第一个样本以0.00005秒为中心,该样本的振幅(x1)表示t在0到0.00010秒之间的x(t)。同样,第二个样本以0.00015秒为中心,但可以说是从0.00010到0.00020秒,第30,000个样本也是最后一个样本以2.99995秒为中心,其振幅(x30000)表示2.99990到3.00000秒之间的所有时间。因此,这个示例声音x(t)在0到3秒之间的所有时间都是定义的,但在0秒之前或3秒之后是未定义的。
因此,该例子声音的能量为:
在这里插入图片描述
我们将其近似为所有30000个样本的和:
在这里插入图片描述
其中Δti为第i个样本的持续时间,即每个样本0.0001秒。

现在考虑一下,如果我们想知道t1 = 0.00013和t2 = 0.00054秒之间的能量呢。声音的第一个样本完全落在这个音程之外;第二个样本的70%落在区间内,即0.00013秒到0.00020秒的部分;第三、四、五样本均落在区间内;第6个样本的40%落在区间内,即0.00050到0.00054秒的部分(注意,第6个样本的中心在0.00055秒,甚至在区间之外)。那么能量是:
在这里插入图片描述
其中Δt3 = Δt4 = Δt5 = 0.0001秒,但Δt2只有0.00007秒(即第二个样本位于t1和t2之间的部分),Δt6只有0.00004秒(即第六个样本位于t1和t2之间的部分)。
这种对平方信号积分的方法(从技术上讲,是对一个划分[从t1到t2的区间]的黎曼和,它在除边缘以外的任何地方都是正则的,并且在除边缘以外的任何地方都有中心标记)确保了结果是t1和t2的连续函数,即t1或t2的很小变化只会导致计算能量的很小变化(相反,简单地对中心位于t1和t2之间的所有样本进行求和,将导致每当t1或t2穿过样本中心时计算的能量突然跳跃,这将是非物理行为,因此不是Praat会有的行为)。

这篇关于声强和能量及其praat操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

python使用fastapi实现多语言国际化的操作指南

《python使用fastapi实现多语言国际化的操作指南》本文介绍了使用Python和FastAPI实现多语言国际化的操作指南,包括多语言架构技术栈、翻译管理、前端本地化、语言切换机制以及常见陷阱和... 目录多语言国际化实现指南项目多语言架构技术栈目录结构翻译工作流1. 翻译数据存储2. 翻译生成脚本

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

使用C++实现单链表的操作与实践

《使用C++实现单链表的操作与实践》在程序设计中,链表是一种常见的数据结构,特别是在动态数据管理、频繁插入和删除元素的场景中,链表相比于数组,具有更高的灵活性和高效性,尤其是在需要频繁修改数据结构的应... 目录一、单链表的基本概念二、单链表类的设计1. 节点的定义2. 链表的类定义三、单链表的操作实现四、

Python利用自带模块实现屏幕像素高效操作

《Python利用自带模块实现屏幕像素高效操作》这篇文章主要为大家详细介绍了Python如何利用自带模块实现屏幕像素高效操作,文中的示例代码讲解详,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、获取屏幕放缩比例2、获取屏幕指定坐标处像素颜色3、一个简单的使用案例4、总结1、获取屏幕放缩比例from

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允