【问题标题】:frequency analysis of sound声音频率分析
【发布时间】:2019-06-21 20:44:50
【问题描述】:

我用两个麦克风记录鸟儿的叫声。录音最长可达 3 小时,每天听完整个文件很费时间。我想要的是一个脚本,它获取我的原始文件并给我一堆简短的音频文件,每个文件都包含一个鸟叫声。使用我的麦克风,我可以录制 mp3 或 wav。但是脚本应该只接收频率高于 nHz 的哭声。此频率代表固定的背景声音,不应保存。我不知道哪种语言最适合,而且我完全不知道该怎么做。

谢谢大家, 托马斯

【问题讨论】:

  • 虽然是一个非常有趣的项目,但问题是如何在这里尝试解决。不过祝你好运!

标签: frequency-analysis audio-analysis


【解决方案1】:

这应该很容易在多种语言中实现,但 Python 是一个不错的起点。我会为您链接一些相关资源以帮助您入门,然后如果遇到问题,您可以缩小问题范围。

要阅读 .wav 格式的音频文件,请查看 this documentation

要从音频文件中获取数据并将其放入一个 numpy 数组,请参阅this question and answer

Here 是用于计算数据的傅里叶变换(以获取频率内容)的文档。

我建议采用一个移动窗口并计算该窗口内数据的傅里叶变换,然后如果存在高于阈值频率的重要内容,则将结果保存到文件中。 first link 应该有保存音频文件的信息。

您可以了解一些有关使用傅立叶变换对此类应用程序 from this Q&A 的背景知识,如果发现您的问题确实很困难,我建议您查看一些 methods for speech detection

如需更进一步的建议,您可以尝试通过调整采样率来对录音进行频移,以使鸟的声音类似于人类语音,然后使用像 Googles VAD 这样的黑盒工具来挑选鸟叫。不过,我不确定它的效果如何。

【讨论】:

  • 非常感谢。让我们进入编码之夜;)
  • 打开文件并将其放入数组很简单。但我不知道之后该怎么办。我不知道如何从离散傅立叶变换中获得频率,以及如何将匹配声音的呼声转换为新的 wav 文件。你能帮我多一点吗,因为这对我来说真的很复杂,而且你似乎比我更了解它。
  • 您从 fft 中得到的第一个值通常是直流分量(0 频率),随后的值将频率按采样率除以 fft 的大小(您总共有多少个 bin得到)。
  • 不,这对我来说太难了:/ 团队仍然会通过聆听大胆的声音来进行分析。我会为他们设计一个界面来注册他们的数据,这对我来说更容易^^
【解决方案2】:

将长文件分割成感兴趣的部分的问题通常称为(自动)音频分割。如果您愿意输出固定的音频片段(例如 10 秒),您也可以将其视为音频分类问题。 后者是一个很好研究的问题,也适用于鸟类。

DCASE2018 挑战赛有一个关于Bird Detection 的挑战,并且有很多先进的方法。基本上所有性能最好的系统都在对数尺度的梅尔谱图上使用宪法神经网络。梅尔谱图是二维的,所以它基本上变成了图像分类。许多提交的内容都是开源的,因此您可以查看代码并玩弄它们。请注意,它们主要专注于在研究竞赛中取得好成绩,而不是拆分几个文件的实用工具。

如果您想为此构建自己的模型,我建议您使用对图像进行预训练的卷积神经网络,然后对 DCASE2018 数据进行预训练,然后在您自己的数据上进行测试。这应该会提供一个非常准确的系统,尽管需要一些时间来设置。

【讨论】:

    猜你喜欢
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 2011-07-11
    • 1970-01-01
    • 2011-06-10
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多