【基于pyAudioKits的Python音频信号处理(三)】乐音和噪音

您所在的位置:网站首页 乐音和噪音举例 【基于pyAudioKits的Python音频信号处理(三)】乐音和噪音

【基于pyAudioKits的Python音频信号处理(三)】乐音和噪音

2024-07-14 08:52:36| 来源: 网络整理| 查看: 265

pyAudioKits是基于librosa和其他库的强大Python音频工作流支持。

API速查手册

通过pip安装:

pip install pyAudioKits

本项目的GitHub地址,如果这个项目帮助到了你,请为它点上一颗star,谢谢你的支持!如果你在使用过程中有任何问题,请在评论区留言或在GitHub上提issue,我将持续对该项目进行维护。

import pyAudioKits.audio as ak

音频信号分为乐音与噪音两种类别。其中,发音物体有规律地振动而产生的具有固定音高的音称乐音,而噪音则是发音物体随机振动产生的没有固定音高的声音。本节将分别讨论两种类型的音频信号及各自的性质,并讨论它们之间的联系。

单音

正弦波描述了最基本的简谐振动。一个波形满足固定频率和相位的正弦波就是一个单音。而单音则是最基本的乐音。

monotone=ak.create_Single_Freq_Audio(0.02,440,44100,1) #生成一段长为1s、振幅为0.02、频率为440Hz、采样率为44100的单音 monotone.sound() #播放一下试试 ''' outputs: The power of the audio: 0.00019999999999999996 ''' monotone.plot(0, 10, xlabel="t/ms") #绘制其波形图

在这里插入图片描述

音频的功率 P = ∑ n = 0 N m a x − 1 x 2 [ n ] N m a x P=\frac{\displaystyle\sum_{n=0}^{N_{max}-1}x^2[n]}{N_{max}} P=Nmax​n=0∑Nmax​−1​x2[n]​决定了响度。我们播放音频的时候,它的功率会被显示出来。

import pyAudioKits.analyse as aly aly.power(monotone) ''' outputs: 0.00019999999999999996 '''

功率也可以被表示为增益的形式, 增益( d B ) = 10 l o g 10 功率 增益(dB)=10log_{10}功率 增益(dB)=10log10​功率。

aly.power(monotone, dB = True) ''' outputs: -36.98970004336019 '''

能量 E = ∑ n = 0 N m a x − 1 x 2 [ n ] E=\displaystyle\sum_{n=0}^{N_{max}-1}x^2[n] E=n=0∑Nmax​−1​x2[n]也是音频的一个特征。在音频信号时间无限的情况下,能量定义为 E = lim ⁡ N m a x → ∞ ∑ n = − N m a x N m a x x 2 [ n ] E=\displaystyle\lim_{N_{max}\rightarrow ∞}\sum_{n=-N_{max}}^{N_{max}}x^2[n] E=Nmax​→∞lim​n=−Nmax​∑Nmax​​x2[n],而功率定义为 P = lim ⁡ N m a x → ∞ ∑ n = − N m a x N m a x x 2 [ n ] 2 N m a x P=\displaystyle\lim_{N_{max}\rightarrow ∞}\sum_{n=-N_{max}}^{N_{max}}\frac{x^2[n]}{2N_{max}} P=Nmax​→∞lim​n=−Nmax​∑Nmax​​2Nmax​x2[n]​。此时,能量只对平方和收敛的音频信号有定义,并且此类信号功率为0。这类信号被称为有限能量信号,常常意味着一个只有在有限的时间内有取值的信号,或是随时间衰减的信号。能量无限但功率有限的信号则被称为有限功率信号。由于我们对音频信号进行了加窗截断,因此所有信号都是时间有限的,能量和功率均有限且以 N m a x N_{max} Nmax​为比例。

aly.energy(monotone) #计算能量 ''' outputs: 8.819999999999999 '''

由于在 N m a x N_{max} Nmax​较大时,能量可能是一个很大的数值,我们也可以计算增益的形式,称为对数能量。

aly.energy(monotone, dB=True) #计算对数能量 ''' outputs: 9.454685851318196 '''

单音的功率与其对应正弦波的振幅有关。

monotone=monotone*2 #将振幅变成原来的两倍 monotone.sound() #播放一下试试 ''' outputs: The power of the audio: 0.0007999999999999998 '''

可以看见功率变成了原来的4倍,听起来响度也变大了。

振幅的改变也可以写成增益的形式。 增益( d B ) = 20 l o g 10 新振幅 原振幅 = 10 l o g 10 新功率 原功率 增益(dB)=20log_{10}\frac{新振幅}{原振幅} = 10log_{10}\frac{新功率}{原功率} 增益(dB)=20log10​原振幅新振幅​=10log10​原功率新功率​

monotone=monotone.amplify(5) #增益5dB monotone.sound() #播放一下试试 ''' outputs: The power of the audio: 0.008000000000000002 In order to protect your hearing, the amplitude is limited. '''

功率变为了原来的10倍。同时触发了sound函数的听觉保护机制。

下面我们创建一段频率更高的正弦波。

monotone2=ak.create_Single_Freq_Audio(0.02,880,44100,1) #生成一段长为1s、振幅为0.02、频率为880Hz、采样率为44100的单音 monotone2.sound() #播放一下试试 ''' outputs: The power of the audio: 0.0002 '''

频率决定了音高。 f = 440 H z f=440Hz f=440Hz被称为中央A,频率上翻一倍被称为一个八度。

十二平均律中,每个半音在频率上翻了 2 1 / 12 2^{1/12} 21/12倍。每个半音的距离就是钢琴的黑白键上两个键之间的距离,从do到升do,各白键之间的差音为全全半全全全半,而每个全音中的半音被分到了黑键上。

任意两个音之间的距离称为音程,音程的单位是度,相同单音之间音程为1度,之后每差一个音级增加1度。

monotone2=monotone2.pitch_shift(-12) #降调12个半音 monotone2.sound() #播放一下试试 ''' outputs: The power of the audio: 0.0001967911023878219 '''

monotone2原来的频率为880Hz,降调12个半音后,可以听见音高就和440Hz的monotone一致了。

频率可以使用自相关函数来进行研究。自相关函数 ρ [ k ] = ∑ m = − ∞ ∞ x [ m ] x [ m + k ] \rho[k]=\displaystyle\sum_{m=-∞}^∞x[m]x[m+k] ρ[k]=m=−∞∑∞​x[m]x[m+k]表示一个波形偏移 k k k个采样点前后的结构相似性。

由于我们将音频信号进行了截断,因此自相关函数的计算公式为 ρ [ k ] = ∑ m = − ∞ ∞ x ′ [ m ] x ′ [ m + k ] , k ∈ { − N m a x + 1 , − N m a x + 2 , . . . , N m a x − 2 , N m a x − 1 } \rho[k]=\displaystyle\sum_{m=-∞}^∞x'[m]x'[m+k],k\in\{-N_{max}+1, -N_{max}+2, ..., N_{max}-2, N_{max}-1\} ρ[k]=m=−∞∑∞​x′[m]x′[m+k],k∈{−Nmax​+1,−Nmax​+2,...,Nmax​−2,Nmax​−1},其中 x ′ [ n ] = { x [ n ] , 0 ≤ n < N m a x 0 , O t h e r s x'[n]=\begin{cases}x[n],&0≤nσ2,0,​τ=0Others​,即自协方差函数当且仅当时间差 τ \tau τ为0时等于方差,其余时刻协方差都为0。若白噪音每一时刻均独立服从零均值高斯分布 N ( 0 , σ 2 ) N(0,\sigma^2) N(0,σ2),则称为高斯白噪音。

当一个随机过程任意有限维分布函数只与时间差有关,即随机过程 { X ( t ) , t ∈ T } \{X(t),t\in T\} {X(t),t∈T}若满足:对任意 n ∈ N n\in N n∈N,任选 t 1 , t 2 , . . . , t n ∈ T t_1,t_2,...,t_n\in T t1​,t2​,...,tn​∈T,以及任意h,当 t i + h ∈ T , i = 1 , 2 , . . . , n t_i+h\in T,i=1,2,...,n ti​+h∈T,i=1,2,...,n时,n维随机变量 ( X ( t 1 ) , X ( t 2 ) , . . . , X ( t n ) ) (X(t_1),X(t_2),...,X(t_n)) (X(t1​),X(t2​),...,X(tn​))和 ( X ( t 1 + h ) , X ( t 2 + h ) , . . . , X ( t n + h ) ) (X(t_1+h),X(t_2+h),...,X(t_n+h)) (X(t1​+h),X(t2​+h),...,X(tn​+h))具有相同的分布函数,则称该过程为平稳随机过程。平稳随机过程的定义非常严格,平时我们使用的一般是宽平稳随机过程的定义:前两阶矩与t无关而自相关函数只与时间间隔有关的随机过程称为宽平稳过程。高斯白噪音同样也是典型的平稳随机过程。

对于平稳随机过程而言,定义随机过程 X ( t ) X(t) X(t)的时间均值 < X ( t ) > = lim ⁡ T → ∞ ∫ − T T X ( t ) d t =\displaystyle\lim_{T\rightarrow ∞}\int_{-T}^TX(t)dt =T→∞lim​∫−TT​X(t)dt,时间相关函数为 < X ( t ) X ( t + τ ) > = lim ⁡ T → ∞ ∫ − T T X ( t ) X ( t + τ ) d t =\displaystyle\lim_{T\rightarrow ∞}\int_{-T}^TX(t)X(t+\tau)dt =T→∞lim​∫−TT​X(t)X(t+τ)dt,若 P { < X ( t ) > = E { X ( t ) } = μ X } = 1 P\{=E\{X(t)\}=\mu_X\}=1 P{=E{X(t)}=μX​}=1,则称该过程的均值具有各态历经性,若 P { < X ( t + τ ) X ( t ) > = E { X ( t + τ ) X ( t ) } = R X ( τ ) } = 1 P\{=E\{X(t+\tau)X(t)\}=R_X(\tau)\}=1 P{=E{X(t+τ)X(t)}=RX​(τ)}=1,则称该过程的自协方差函数具有各态历经性。各态历经的随机过程可以使用时间均值来估计期望,还可以使用自协方差函数在时间上的积分来估计在概率密度上的积分,因此可以使用各态历经平稳随机过程的一次足够长的实现来估计其一二阶矩。

对应于各态历经的随机过程的模拟音频信号,我们只需要将其一次实现表示为足够长时间的数字音频信号,就可以根据采样得到的样本,来估计其均值、方差和自协方差函数。

噪音同样也有能量、功率,其计算方法和意义与乐音是一致的。对于高斯白噪音而言,其功率就等于方差 σ 2 \sigma^2 σ2。

如果某个音频信号当中混杂着噪音,使用信号和噪音的功率我们可以定义信噪比: s n r = 10 l o g 10 P 信号 P 噪音 ( d B ) snr=10log_{10}\frac{P_{信号}}{P_{噪音}}(dB) snr=10log10​P噪音​P信号​​(dB)。

monotone_without_wn = ak.create_Single_Freq_Audio(0.02,440,44100,1) monotone_with_wn = monotone_without_wn.addWgn(10) #Add Gaussian white noise with a signal-to-noise ratio of 10 dB to the monotone monotone_with_wn.sound() ''' outputs: The power of the audio: 0.0002200717840069502 ''' monotone_with_wn.plot(0, 0.01)

在这里插入图片描述

wn = monotone_with_wn - monotone_without_wn #减去单音,只留下白噪音 wn.sound() ''' outputs: The power of the audio: 1.9942616922205676e-05 ''' wn.plot(0, 0.01)

在这里插入图片描述

np.mean(wn.samples), np.var(wn.samples) ''' outputs: (-8.061218163239382e-06, 1.99425519389674e-05) '''

可以看见白噪音的均值接近于0,而方差等于功率。

aly.autocorr(wn).plot(-440,441,xlabel="k")

在这里插入图片描述

白噪音的自相关函数当且仅当 k = 0 k=0 k=0时显著大于0。

考虑这样一个随机过程通式: X t = c 0 + ∑ k = 1 ∞ [ a k s i n ( 2 π k T t ) + b k c o s ( 2 π k T t ) ] + α t , − ∞ < t < ∞ X_t=c_0+\displaystyle \sum_{k=1}^∞ [a_k sin(\frac{2\pi k}{T} t)+b_k cos(\frac{2\pi k}{T} t)]+\alpha_t,-∞



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭