使用 Python 减去/比较两个音频文件之间的差异

Posted

技术标签:

【中文标题】使用 Python 减去/比较两个音频文件之间的差异【英文标题】:Subtract/compare differences between two audio files using Python 【发布时间】:2021-07-19 23:35:39 【问题描述】:

我的目标是获取两个长度相同的 .wav 文件,一个带有噪声 + 语音的原始文件,一个经过改进的语音处理并比较两者。这应该让我知道两个波形文件的区别是处理过程中去除的噪声。

我想这样做是为了练习我的 Python 编码技能,同时也是为了测试语音处理程序的效率。到目前为止,我已经找到了可以做到这一点的程序,但我真的很想在 python 中构建我自己的简单版本。我考虑过的一些库是audiodiff 和librosa,但它们似乎不包含减法函数。

我有几个程序可以实现这一点,但我想创建一个简单的版本,并能够随着时间的推移随着我的需求扩展而对其进行自定义。

【问题讨论】:

How to create a Minimal, Reproducible Example,这样问的方式:-) 如果你发现了一些程序,那么你应该添加有问题的链接(不在评论中) 对于给定的短时间窗口,检查纯语音文件中的频率。使用频谱减法来衰减噪声 + 语音文件中相应时间窗口中的所有其他频率。 你有什么问题? 您可能想在 Data Science stack exchange 上问这个问题。作为一个编程问题,它有点缺乏细节 【参考方案1】:

估计语音剪辑质量的任务称为语音质量估计。一个稍微简单的任务公式是语音清晰度,它只衡量理解语音的难易程度,而不是语音信号的主观“质量”。 这些是语音信号处理中的既定任务,并且有行业标准以及前沿研究。此类方法(通常称为客观指标)考虑了人类的听觉系统和对语音的感知,以便对一组人类如何评估听力测试中的结果做出良好的估计。由于人类感知的复杂性,好的方法不仅仅是音频的差异。

如果您可以访问原始语音(没有噪音),那么您可以使用基于完整参考的方法。早期的 ITU 标准是 PESQ,截至 2021 年的最新标准是 POLQA。开源实现的一个很好的指标是VISQOL。

如果您无法获得没有噪音的原始语音,则必须使用无参考/单端/非侵入式方法。 ITU 标准是P.563。目前有很多研究使用深度神经网络来更好地解决这个任务。例如NISQA、Gamper2019

更多详情请见https://github.com/jonnor/machinehearing/tree/master/audio-quality

【讨论】:

以上是关于使用 Python 减去/比较两个音频文件之间的差异的主要内容,如果未能解决你的问题,请参考以下文章

python时间序列(2)

一共有10个男生,让相邻的两个男生之间站一个女生,一共可以站进多少女生

Python:找出整数列表是不是一致

python 使用两个Bruker元素定量输出文件,从另一个中减去一个的计数。

减去两个 DateTime 对象 - Python [重复]

比较两个 JSON 结果并生成新条目的新 JSON (Python)