【问题标题】:Determining sound quality from an audio recording?从录音中确定音质?
【发布时间】:2013-06-23 18:33:52
【问题描述】:

有什么方法可以通过算法确定 .wav 或 .mp3 文件的音频质量吗?

基本上,我的用户具有不同的录音设置(即他们来自世界各地,我无法控制他们)将音频录制到 mp3/wav 文件。此时软件应该确定他们的设置是否正确(可悲的是,由于某种原因,他们无法仅通过收听自己的录音来做出决定,因此有时我们会得到基本上无法理解的录音,因为低音量或高噪音)。

我正在检查音量以确保麦克风音量正常;不幸的是,这错过了音量高但清晰度低的情况。我想知道是否可以进行某种标准扫描(最好是在 Python 中)来检测何时存在大量背景噪音。

我意识到一种可能的解决方案是让他们录制完全静音,然后与口语录音进行比较,如果“静音”录音的音量与口语录音的音量太接近,则认为音频“不好”。但这取决于两次都从演讲者那里获得好的样本,这可能是我可以依赖的东西,也可能不是。

所以我想知道是否有一种方法可以扫描音频文件(大约 10 秒长)并识别声音文件是“嘈杂”还是清晰。

【问题讨论】:

    标签: python audio noise


    【解决方案1】:

    不完全是我的领域,但我怀疑如果你得到一个频谱,(也许做一个傅立叶变换),并比较“好”和“嘈杂”的录音,你会发现噪声有助于更高的交叉频谱水平在坏的录音比好。看看 SciPy 中的信号处理部分 - 这可能会有所帮助。

    【讨论】:

      【解决方案2】:

      这完全取决于您的质量问题是什么,从您的问题中不是 100% 清楚,但这里有一些建议:

      在音量高而清晰度低的情况下,我猜问题是用户的输入增益太高了。录制后,您可以简单地检查失真。更好的是,您可以在录制期间使用自动增益控制 (AGC) 来防止这种情况发生。

      如果噪音太大,我假设问题是扬声器离麦克风太远。在这种情况下,史蒂夫的建议可能会奏效,但要使其真正奏效,您需要做大量工作来比较样本记录和开发统计数据,以了解如何进行区分。在实践中,我认为这是太多的工作。我认为更简单且更有可能工作(尽管不一定保证)的更简单的替代方法是创建信号的包络,然后从中创建直方图,并查看直方图与现有的好和坏记录的比较。如果我们只讨论语音,您可以将信号分为三个频带(使用时域滤波器,而不是 FFT),让您了解噪声(高频带和低频带)有多少以及有多少是你关心的声音(中心乐队)。

      不过,我还是会在录音期间使用 AGC,如果 AGC 发现它需要将输入增益设置得太高,那可能是一次糟糕的录音。

      【讨论】:

      • 对不起,我应该在我的问题中说得更清楚;录音质量差异如此之大的原因是因为它是世界各地的随机用户。除非我误解了 AGC,否则那是在用户端,我无法控制。对吗?
      • 还是不清楚。有哪些问题?他们离麦克风太远了吗?背景噪音太大?离麦克风太近?如果您不知道,也许您可​​以发布一些示例。
      • 是的,AGC 假定您对录制过程有一定的控制权。
      • 嗯,主要问题是我们对他们的录制环境的控制为零。他们可能使用了一个糟糕的麦克风,他们可能说话太大声或太小声,可能有太多背景噪音,他们的音频设置可能有问题......等等......所以希望是通过音频检查,我们可以告诉他们他们的录音电平有问题,需要修复。如果我们能够识别出整体问题并根据其糟糕的声音类型提出解决方案,那就更好了。
      • 我也为此提出了一些建议,但效果会差很多。
      【解决方案3】:

      我正在构建一个旨在检测各种不良音频的 API。您可以使用此 API 计算总分,并就如何提高音质向人们提供具体建议。看看:
      https://www.tinydrop.tech/documentation/#loudness-detection

      【讨论】:

        猜你喜欢
        • 2012-05-31
        • 2011-02-26
        • 2014-08-20
        • 1970-01-01
        • 2010-11-29
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多