美文网首页
语音信号处理之时域分析-音量

语音信号处理之时域分析-音量

作者: sain_wu | 来源:发表于2019-12-01 16:53 被阅读0次

背景知识

分贝

分贝(decibel, db)是一个对数单位, 通常用于描述声音的等级。

image

假设有两个音源A和B,其中音源B的功率P2是音源A功率P1的两倍, 即 P2/P1 = 2

那么在其它条件相同的情况下(声音的频率, 听的距离),衡量两个声音的等级

10 log (P2/P1) = 10 log 2 = 3 dB  //功率相差两倍的声音,等级相差3db

但有时候我们又看到20倍log(),这是咋回事呢?

20 log使用的单位通常是声压 (sound pressure),功率可以看做是声压的平方,其实它们是对等的:

20 log (p2/p1) dB   =  10 log (p2^2/p1^2) dB   = 10 log (P2/P1) dB

标准声音等级

image

参考声压:20 μPa,认为是人耳能感受的极限

0 db 表示什么?

sound level = 20 log (pmeasured/pref) = 20 log 1 = 0 dB

只是表示待测试的声压刚好等于参考声压20 μPa,并不代表没有声音,可以认为该声压人耳无法感知,但振动还是存在的。同理- 20 dB就表示更微弱的振动了,只有参考声压的1/10

声音和距离的关系

image

假设声源辐射的总能量为P,声音是均匀辐射的额,单位面积接收到的能量为I

I  = P/(4πr2)
那么I 就和距离的平方成反比
I2/I1 = (r1^2)/(r2^2)

换句话说: 如果我们将距离加倍,则声压降低2倍,强度降低4倍,声级降低6 dB

音量

音量代表声音的强度,可由一个窗口或一帧内信号振幅的大小来衡量,一般有两种度量方法:
(1)每个帧的振幅的绝对值的总和:
volume = \sum_{i=1}^n |s_i|
其中s_{i}为该帧的第i个采样点,n为该帧总的采样点数。这种度量方法的计算量小,但不太符合人的听觉感受。
(2)样本平方和取10为底的对数的10倍
volume = 10*log_{10} \sum_{i=1}^n s_i^2
它的单位是分贝(Decibels),是一个对数强度值,比较符合人耳对声音大小的感觉,但计算量稍复杂。

音量计算的Python实现如下:

import math
import numpy as np

# method 1: absSum
def calVolume(waveData, frameSize, overLap):
    wlen = len(waveData)
    step = frameSize - overLap
    frameNum = int(math.ceil(wlen*1.0/step))
    volume = np.zeros((frameNum,1))
    for i in range(frameNum):
        curFrame = waveData[np.arange(i*step,min(i*step+frameSize,wlen))]
        curFrame = curFrame - np.median(curFrame) # zero-justified
        volume[i] = np.sum(np.abs(curFrame))
    return volume

# method 2: 10 times log10 of square sum
def calVolumeDB(waveData, frameSize, overLap):
    wlen = len(waveData)
    step = frameSize - overLap
    frameNum = int(math.ceil(wlen*1.0/step))
    volume = np.zeros((frameNum,1))
    for i in range(frameNum):
        curFrame = waveData[np.arange(i*step,min(i*step+frameSize,wlen))]
        curFrame = curFrame - np.mean(curFrame) # zero-justified
        volume[i] = 10*np.log10(np.sum(curFrame*curFrame))
    return volume


#--------main.py-------
import wave
import pylab as pl
import numpy as np
import volume as vp

# ============ test the algorithm =============
# read wave file and get parameters.
fw = wave.open('aeiou.wav','r')
params = fw.getparams()
print(params)
nchannels, sampwidth, framerate, nframes = params[:4]
strData = fw.readframes(nframes)
waveData = np.fromstring(strData, dtype=np.int16)
waveData = waveData*1.0/max(abs(waveData))  # normalization
fw.close()

# calculate volume
frameSize = 256
overLap = 128
volume11 = vp.calVolume(waveData,frameSize,overLap)
volume12 = vp.calVolumeDB(waveData,frameSize,overLap)

# plot the wave
# 计算时间轴的长度
time = np.arange(0, nframes)*(1.0/framerate)
time2 = np.arange(0, len(volume11))*(frameSize-overLap)*1.0/framerate
pl.subplot(311)
pl.plot(time, waveData)
pl.ylabel("Amplitude")
pl.subplot(312)
pl.plot(time2, volume11)
pl.ylabel("absSum")
pl.subplot(313)
pl.plot(time2, volume12, c="g")
pl.ylabel("Decibel(dB)")
pl.xlabel("time (seconds)")
pl.show()
image.png

参考文献

  1. https://www.animations.physics.unsw.edu.au/jw/dB.htm

  2. http://mirlab.org/jang/books/audioSignalProcessing/basicFeatureVolume.asp?title=5-2%20Volume%20(%AD%B5%B6q)&language=english

  1. http://ibillxia.github.io/blog/2013/05/15/audio-signal-process-time-domain-volume-python-realization/

相关文章

  • 语音信号处理之时域分析-音量

    背景知识 分贝 分贝(decibel, db)是一个对数单位, 通常用于描述声音的等级。 假设有两个音源A和B,其...

  • sinc函数

    从时域到频域 在对信号进行处理的过程中,我们经常使用傅立叶变换。傅立叶变换将信号从时域转到频域,便于分析和处理。 ...

  • OpenCV-Python学习(十):图像滤波之傅里叶变换

    滤波分析又分为 时域分析、频域分析: 时域分析: 直接对信号本身进行分析。 频域分析: 对信号的变化快慢进行分析。...

  • 信号完整性知识点2 -- 时域、频域

    时域就是我们的现实世界,我们所经历的事情都是在时域中发生和处理的,时域是唯一实际存在的域。在信号分析中,时域中时钟...

  • 用FFT实现频谱分析

    频谱分析的目的是通过分析信号的频谱组成,实现对信号特性的分析,便于后续的处理。时域信号一般可分为连续和离散信号,在...

  • 窗函数

    我们录音时看到的往往是时域上的信号,根据不同的语音分析要求,有时候我们需要分析频域上的信号特征,这时候我们就要用到...

  • 加窗

    一次FFT分析截取1帧长度的时域信号,这1帧的长度总是有限的,因为FFT分析一次只能分析有限长度的时域信号。而实际...

  • 语音信号时域短时分析及实现

    音信号时域短时分析及实现 原文链接:http://www.51jrft.com/dzxx/dzkxyjs/592....

  • 无线网络知识点概括

    射频基础知识 信号分析强度方法:时域分析:随时间变化的信号。射频工程师在实验室使用示波器进行测量分析频域分析:随频...

  • Gabor 滤波器

    1. 傅里叶变换 傅里叶变换是线性系统分析的有力工具,提供了一种把时域信号转换到频域进行分析的途径,时域和频域之间...

网友评论

      本文标题:语音信号处理之时域分析-音量

      本文链接:https://www.haomeiwen.com/subject/idszwctx.html