声强和能量及其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

相关文章

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

MySQL——表操作

目录 一、创建表 二、查看表 2.1 查看表中某成员的数据 2.2 查看整个表中的表成员 2.3 查看创建表时的句柄 三、修改表 alter 3.1 重命名 rename 3.2 新增一列 add 3.3 更改列属性 modify 3.4 更改列名称 change 3.5 删除某列 上一篇博客介绍了库的操作,接下来来看一下表的相关操作。 一、创建表 create

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco

PHP7扩展开发之流操作

前言 啥是流操作?简单来讲就是对一些文件,网络的IO操作。PHP已经把这些IO操作,封装成流操作。这节,我们将使用PHP扩展实现一个目录遍历的功能。PHP示例代码如下: <?phpfunction list_dir($dir) {if (is_dir($dir) === false) {return;} $dh = opendir($dir);if ($dh == false) {ret

浙大数据结构:树的定义与操作

四种遍历 #include<iostream>#include<queue>using namespace std;typedef struct treenode *BinTree;typedef BinTree position;typedef int ElementType;struct treenode{ElementType data;BinTree left;BinTre

浙大数据结构:04-树7 二叉搜索树的操作集

这道题答案都在PPT上,所以先学会再写的话并不难。 1、BinTree Insert( BinTree BST, ElementType X ) 递归实现,小就进左子树,大就进右子树。 为空就新建结点插入。 BinTree Insert( BinTree BST, ElementType X ){if(!BST){BST=(BinTree)malloc(sizeof(struct TNo

hibernate修改数据库已有的对象【简化操作】

陈科肇 直接上代码: /*** 更新新的数据并并未修改旧的数据* @param oldEntity 数据库存在的实体* @param newEntity 更改后的实体* @throws IllegalAccessException * @throws IllegalArgumentException */public void updateNew(T oldEntity,T newEntity

mysql中导入txt文件数据的操作指令

1 表tt的格式:    CREATE TABLE `tt` (   `ind` int NOT NULL auto_increment,   `name` char(100) default NULL,   PRIMARY KEY  (`ind`)  )   2 文件d.txt的内容示例:  1,a  2,b  3,c