以编程方式“监听”声音(信号处理?)

10
我熟悉计算机视觉了解它),其中一个应用可以是图像识别,例如光学字符识别。然而,我更感兴趣的是“计算机听力”,我刚刚了解到这被认为是数字信号处理
信号处理最吸引我的是在音乐中的潜在应用。我记得有一段时间前,我看过一个应用程序的预览(抱歉,忘记名字了),它可以听取录制的人弹吉他的声音,并自动将其绘制成时间轴上的实际音符/和弦。使用该程序,用户可以移动它们甚至编辑它们。现在,显然这要复杂得多,但它涉及相同的东西吗?信号处理?我还对音乐可视化器和智能灯光系统的可能应用感兴趣。
我的理解是,对于像MP3这样的压缩音频格式进行处理可能不会产生与包含单独轨道的MIDI相同的结果(也许我误解了)。一个无损格式,如PCM,是否比MP3更好?我对声音处理一无所知,这只是我从迄今为止阅读的内容中推断出来的。
我已经看过this question,其中有很好的答案和链接,涵盖了我很多问题。然而,我发现的大多数链接都是理论性的,虽然我对该主题很感兴趣并且值得一读,但我想知道是否有任何现有的库可以实现这个功能,或者是关于这个主题的文章针对计算机科学/编程,带有示例代码。即使是开源的声音/音乐可视化器或其他开源声音处理代码也很好。
如果我说得不清楚,对不起。就像我说的,我不知道自己在说什么。
4个回答

16
我最感兴趣的关于信号处理的事情是它在音乐中的潜在应用。我记得一段时间以前,我看到了一个应用程序(抱歉,忘记名字了),它可以听取人们弹吉他的录音,并自动将其绘制在时间轴上,显示实际演奏的音符/和弦。简单来说,当你弹奏一根琴弦时,会产生具有特定频率的周期波形。有一个数学技巧(傅里叶变换DFT)可以将波形转换为频谱,它不再按时间呈现强度,而是按波的频率呈现。例如,调音叉发出的完美A音符会产生一个振荡频率为440 Hz的波形。在时间域中,这将呈现为正弦波。在频率域中,它将呈现为一个居中于440 Hz的单个窄峰。
现在,当你弹吉他时,你不会产生完美的正弦波。弹奏 A 音将产生基频 440 Hz,但也会产生许多其他频率(例如 880 Hz,一个八度更高的音,以及许多其他更高或更低的频率),这是由于弦的振动物理、吉他的材料和形状等原因。这些额外的频率被称为谐波,它们与基频混合产生“吉他的声音”(在音乐术语中称为音色)。不同的乐器(比如钢琴)将具有不同的谐波与基频混合,产生不同的音色。
数字信号处理程序所做的是对输入信号进行离散傅里叶变换。通过额外的技巧,它们找到基频和谐波,并根据它们的发现推断出你所演奏的音符。这必须快速发生,因为你可以在演奏时实时找到音符并触发特殊技巧。例如,你可以在吉他上弹奏 A 音,DSP 理解它是 A 音并用钢琴的 A 音替换它,因此从扬声器中获得钢琴的声音。
使用该程序,用户能够移动这些内容并进行编辑。显然,这更加复杂,但是否涉及相同的事情?信号处理?我还对音乐可视化器和智能照明系统的可能应用感兴趣。
是的。一旦你进入频域,事情就变得非常简单了。例如,您可以根据语音频率点亮特定的灯,另一个灯与低音鼓相对应。
我的理解是,在压缩的音频格式(例如MP3)上进行此处理不会产生与包含单独轨道的MIDI相同的结果(也许我误解了)。
它们是两个不同的东西。 MP3是来自声波的压缩格式。基本上,它获取驱动扬声器的内容并将其压缩。思路是相同的:DFT,然后删除不太可能被听到的内容(例如,在高强度声音之后立即出现的高音调不太可能被听到,因此会被删除)。
另一方面,MIDI 是一系列事件的滚动(就像远西部的那些钢琴,带有滚动纸卷)。该文件不包含音乐,而是包含指示 MIDI 播放器在特定时间、使用特定乐器演奏特定音符的指令。 “乐器库”的质量是区分坏 MIDI 播放器(听起来像儿童玩具)和好 MIDI 播放器(听起来逼真,尤其是对于钢琴和小提琴,至于管乐器,我还没有听到真实的声音)的因素之一。
将 MIDI 转换为 MP3 只需通过 MIDI 播放器执行即可。反过来则完全不同,并且更加复杂,这就是你所说的 DSP 发挥作用的地方。
这就像煮一个鱼缸。你得到了一锅鱼汤。但要从鱼汤中回到鱼缸,则更难。

无损格式如 PCM 是否比 MP3 更好?

PCM是一种将模拟信号转换为数字信号的技术。所以你的问题存在一个基本误解,即没有PCM格式(RAW格式非常接近,基本上只包含原始数据)。如果你问是否未压缩的WAV文件(其中包含PCM数据)比MP3好,那么是的,但问题有时是这种更好对人耳到底有多大影响,以及您需要在数据上执行多少后期处理。
如果您喜欢Python,可以看看这个页面:take a look at this page 我也不太了解,但我玩过一点。

6
我的理解是,在压缩音频格式(如MP3)上进行此处理不会产生与包含单独轨道的MIDI相同的结果(也许我误解了)。 MIDI基本上存储乐器信息和音符。还有其他效果(音量、音高弯曲、颤音、攻击速率等)。不是真正的数字信号处理。
未经压缩的格式(如PCM)是否比MP3更好?可能有所改善;这取决于应用程序。 MP3减少了人类不敏感的频率的精度。如果您想做可视化,则MP3可能很好。但是,如果您想确定录音中演奏的乐器类型,则可能存在隐藏在人类不敏感的频率中的有用信息。
我认为科学家和工程师的数字信号处理指南是程序员的一个很好的参考。第8章解释了离散傅里叶变换(用于MP3处理和许多其他地方以分离波的组成频率)。
我用它来帮助制作一个图形程序,让你可以用鼠标绘制波形,然后应用DFT,并让你选择包含多少个频率。这是一个很好的练习。

1
我记得有一段时间前,我看到了一个应用程序的预览(抱歉,忘记名字了),它可以听取吉他演奏的录音,并自动将其绘制在时间轴上,显示出实际演奏的音符/和弦。
你可能也在想Melodyne:http://www.celemony.com/cms/ 尽管新版本的Cubase中的Vari audio也非常相似。 :)

0

我认为你需要明确你正在寻找什么以及你想要做什么。

如果你想学习关于DSPMIDIPCM的知识,那么维基百科和参考资料上有大量信息。

有许多应用程序可用于音频处理。你在问题中描述的是每天在数字录音室(现在几乎所有录音室都是数字录音室)中发生的事情。

如果你打算对吉他声进行一些DSP处理,那么最好有吉他本身的录音(而不是包含鼓或人声的混音轨道)。很明显,分析不带附加噪声的离散信号比分析包含大量“噪声”的信号会得到更好的结果。因此,多轨录音比“MP3”更可取。

典型的MP3包含左右声道(轨道),因此从技术上讲它是多轨录音。当音乐被录制时(至少是专业录制),不同的信号会被记录到不同的轨道上,以便在以后的时间里可以离散地进行编辑和处理。

那么,你想要用这些声音做什么?

正如其他答案所指出的那样,这与MIDI没有任何关系。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接