3

只是想知道是否可以通过删除基于特定频率范围的部分来浏览 flac、mp3、wav 等文件并编辑部分或整个文件?

例如,我有一个朋友在背景中用一些打击乐器朗诵一首诗的录音。我可以编写一个 C 程序来遍历整个文件并删除除人声之外的所有内容(人声频率范围为 85-255 Hz,来自我一直在阅读的内容)?

提前感谢您的任何想法!

4

5 回答 5

6

为了解决OP的具体示例:我认为您对人声频率的理解是错误的。也许男性口语的频保持在那个范围内(对于男高音歌唱,或女性讲话或唱歌,或喊叫,甚至基频也会高得多,可能是 500-1000 Hz)。但这并不重要,因为即使基音很低,产生不同元音的泛音也会上升到 2000-4000 Hz 或更高。定义“噪声”辅音(如“t”和“s”)的频率一直到音频范围的顶部,例如 5000-10000 Hz。打击乐填充了相同的音频范围,因此我怀疑您是否可以通过过滤某些频率进出来分离语音和打击乐。

于 2010-05-28T05:41:34.753 回答
4

这当然是可能的,否则数字工作室混音软件将不存在。

您实际上要求的是衰减整个文件的频率范围。在模拟领域,您将应用低通和高通滤波器(或其他一些滤波器组合)来衰减频率。

在软件中,您可以通过编写一种可以减少各种频率输出的数字滤波器来解决这个问题。频率将通过 FFT 计算来识别。

最快的做法是使用音频编辑应用程序并在那里应用更改。

有一个名为PortAudio的音频库可以为在数字级别编辑音频流提供一些支持。它是用 C 编写的,并且有一个 C API。

于 2010-05-28T01:08:12.040 回答
2

如果您想测试音频处理算法,我强烈建议您使用 Supercollider。它是免费的,并且内置了多种音频过滤器。但消除语音可能需要进行大量调整。Supercollider 将允许您编写由各种参数驱动的代码,然后将这些参数连接到一个 GUI,您可以在为其提供实时(或记录)数据的同时对其进行调整。

即使你想编写 C 代码,你也会从使用 Supercollider 中学到很多东西。许多过滤器在 C 中非常容易实现,但您需要编写一定数量的框架代码才能开始使用。

此外,我从这本书中学到了很多关于编写数字音频滤波器的知识。除其他外,它讨论了人类语音的一些特征,以及如何构建过滤器以选择性地增强或剔除特定频率。它还提供工作 C 代码。

于 2010-05-28T01:16:20.790 回答
1

SciPy 可以进行各种信号处理

于 2010-05-28T00:57:30.043 回答
1

您还可以使用 MAX/MSP(但那是付费的)或 PureData(那是免费的)来处理音乐算法,它们是创建 supercollider 的基础。如果您想在实时环境中执行此操作,它们是出色的软件。

于 2010-06-19T00:44:00.080 回答