我用两个麦克风记录鸟儿的叫声。录音最长可达 3 小时,每天听完整个文件很费时间。我想要的是一个脚本,它获取我的原始文件并给我一堆简短的音频文件,每个文件都包含一个鸟叫声。使用我的麦克风,我可以录制 mp3 或 wav。但是脚本应该只接收频率高于 nHz 的哭声。此频率代表固定的背景声音,不应保存。我不知道哪种语言最适合我,我完全不知道该怎么做。
谢谢大家,托马斯
我用两个麦克风记录鸟儿的叫声。录音最长可达 3 小时,每天听完整个文件很费时间。我想要的是一个脚本,它获取我的原始文件并给我一堆简短的音频文件,每个文件都包含一个鸟叫声。使用我的麦克风,我可以录制 mp3 或 wav。但是脚本应该只接收频率高于 nHz 的哭声。此频率代表固定的背景声音,不应保存。我不知道哪种语言最适合我,我完全不知道该怎么做。
谢谢大家,托马斯
将长文件切割成感兴趣的部分的问题通常称为(自动)音频分割。如果您愿意输出固定的音频片段(比如 10 秒),您也可以将其视为音频分类问题。后者是很好研究的问题,也适用于鸟类。
DCASE2018 挑战赛有一项关于鸟类检测的任务,并且有许多先进的方法。基本上所有性能最好的系统都在对数尺度的梅尔谱图上使用宪法神经网络。梅尔谱图是二维的,所以它基本上变成了图像分类。许多提交的内容都是开源的,因此您可以查看代码并玩弄它们。请注意,它们主要专注于在研究竞赛中取得好成绩,而不是拆分几个文件的实用工具。
如果您想为此构建自己的模型,我建议您使用对图像进行预训练的卷积神经网络,然后对 DCASE2018 数据进行预训练,然后在您自己的数据上进行测试。这应该会提供一个非常准确的系统,尽管设置起来需要一段时间。
这应该很容易在各种语言中实现,但 Python 是一个不错的起点。我将为您链接一些相关资源以帮助您入门,然后如果遇到问题,您可以缩小问题范围。
要阅读 .wav 格式的音频文件,请查看此文档。
要从您的音频文件中获取数据并将其放入 numpy 数组,请参阅此问题和答案。
这是用于计算数据的傅立叶变换(以获取频率内容)的文档。
我建议采用移动窗口并计算该窗口内数据的傅立叶变换,然后如果有高于阈值频率的重要内容将结果保存到文件中。第一个链接应该包含有关保存音频文件的信息。
你可以从这个问答中获得一些关于在这种类型的应用程序中使用傅里叶变换的背景知识,如果你的问题真的很困难,我建议你研究一些语音检测方法。
对于更多的建议,您可以尝试通过调整采样率来改变录音频率,使鸟的声音类似于人类语音,然后使用像谷歌 VAD这样的黑盒工具来挑选鸟叫。不过,我不确定这会有多好。