Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从音频信号计算响度?_Python_Signal Processing_Audio Processing - Fatal编程技术网

Python 如何从音频信号计算响度?

Python 如何从音频信号计算响度?,python,signal-processing,audio-processing,Python,Signal Processing,Audio Processing,我有一个音频信号,我想从中检测出响亮的时刻 我的问题是,我不确定下面给出的算法/代码是否正确 我在许多帖子上读到,“响度”的概念很复杂,取决于个人。我还读到,它可以用光谱图、A加权和RMS来近似。我是音频处理的新手,但根据我所读的内容,我编写了以下算法: 使用STFT计算光谱图 将其转换为dB 应用A加权 计算有效值 我使用Librosa编写的相应代码是: #加载输入音频 y、 sr=librosa.load(路径,sr=22050) #计算频谱图(幅度) n_fft=2048 跃点长度=1

我有一个音频信号,我想从中检测出响亮的时刻

我的问题是,我不确定下面给出的算法/代码是否正确

我在许多帖子上读到,“响度”的概念很复杂,取决于个人。我还读到,它可以用光谱图、A加权和RMS来近似。我是音频处理的新手,但根据我所读的内容,我编写了以下算法:

  • 使用STFT计算光谱图
  • 将其转换为dB
  • 应用A加权
  • 计算有效值
我使用Librosa编写的相应代码是:

#加载输入音频
y、 sr=librosa.load(路径,sr=22050)
#计算频谱图(幅度)
n_fft=2048
跃点长度=1024
spec_mag=abs(librosa.stft(y,n_fft=n_fft,hop_length=hop_length))
#将频谱图转换为dB
spec_db=librosa.振幅_至_db(spec_mag)
#计算A加权值
freqs=librosa.fft\u频率(sr=sr,n\u fft=n\u fft)
a_权重=librosa.a_权重(频率)
a_权重=np。展开_dims(a_权重,轴=1)
#将A-weghting应用于频谱图,单位为dB
等级库dba=等级库db+a\U权重
#计算“响度”值
响度=librosa.feature.rms(S=librosa.db\u至\u振幅(spec\u dba))
我进展顺利吗? 这个算法正确吗? 我使用Librosa正确吗


谢谢您的帮助。

您对获得的结果有什么具体问题吗?如果不是,这可能不是问你这个开放式多问题的正确论坛。如果问题不清楚,很抱歉。我的主要问题是要知道我使用的算法是否正确和合理。我的结果可以被认为是好的,但可能我没有正确地应用权重(加法而不是乘法),这可能会导致严重的检测问题。我会重新解释这个问题。我不是专家,但我认为你只能将你的信号电平与其他值进行比较,得到相对放大(+dB)或衰减(-dB)。要获得响度,您必须有一些参考点。谢谢您的回答@VPfB。在将振幅转换为dB时,我可以定义一个参考值:
librosa.amplication\u到\u dB(spec\u mag,ref=np.max)
。通过这样做,输出曲线仅与比例透视图不同(相同形状不同比例)。如果您关心响度的谨慎、标准定义,那么是的,这是一个深刻的主题。看看类似或的东西。如果你只是非正式地寻找“这个信号什么时候响亮”,那么在滑动窗口下计算RMS是合理的。