visualization - 以编程方式 'Listening' 到声音(信号处理?)

标签 visualization signal-processing pitch-tracking

我熟悉 Computer Vision (嗯,知道了),其中一个应用可以是图像识别,比如Optical Character Recognition , 我相信。然而,我更感兴趣的是'计算机听力',我刚刚学到的被认为是Digital Signal Processing .

我对信号处理最感兴趣的是在音乐中的潜在应用。我记得不久前我看到了一个应用程序的预览(对不起,忘记名字了),它可以听某人弹吉他的录音,并自动将其与实际演奏的音符/和弦在时间线上绘制出来.使用该程序,用户可以移动这些内容甚至编辑它们。现在,显然这要复杂得多,但它是否涉及相同的事情?信号处理?我还对音乐可视化器和智能照明系统中的可能应用感兴趣。

我的理解是,对 MP3 等压缩音频格式进行处理不会产生与包含单独轨道的 MIDI 相同的结果(也许我误解了)。像 PCM 这样的未压缩格式会比 MP3 更好吗?我对声音处理一无所知,这只是我从目前所读的内容中推断出来的。

我已经看过 this question它有很好的答案和链接,涵盖了我的很多问题。但是,我发现的大多数链接都是理论性的,我确信这些链接都很有趣,鉴于我对这个主题的兴趣,绝对值得一读,但我想知道是否有任何现有的库可以促进这一点,或与此主题相关的面向计算机科学/编程的文章,可能带有示例代码。即使是开源声音/音乐可视化工具或任何其他开源声音处理代码也会很棒。

对不起,如果我没有任何意义。就像我说的,我不知道我在说什么。

最佳答案

The thing that interests me the most about signal processing is the potential application in music. I remember a while ago I saw a preview of an application (Sorry, forgot the name)



也许 cubase ?

which could listen to a recording of someone playing a guitar, and automatically graph it out across a time-line with the actual notes/chords that were played



深度简化,当你弹奏一个音符时,你会产生一个给定频率的周期波。有一个数学技巧(傅立叶变换 DFT)可以将波转换为频谱,它不是根据时间显示强度,而是根据波的频率显示强度。例如,音叉的完美 A 音符会产生 440 Hz 的振荡波。在时域中,这将显示为正弦波。在频域中,它将显示为以 440 Hz 为中心的单个窄尖峰。

现在,当你弹吉他时,你不会产生完美的正弦波。敲击 A 将产生 440 Hz 的基本频率,但也会产生很多额外的频率(例如 880,在更高的 Octave 音程上,但还有很多其他更高和更低的频率),这是由于振动弦的物理特性、 Material 和吉他的形状等。这些额外的频率称为泛音,它们与基音混合以产生“吉他的声音”(在音乐行话中称为音色)。不同的乐器(例如钢琴)将具有不同的泛音与基音混合,从而产生不同的音色。

DSP 程序所做的是对输入信号执行 DFT。通过额外的技巧,他们可以找到基波和谐波,并根据他们的发现推断出您弹奏的音符。这必须很快发生,因为您可以在现场演奏和触发特殊技巧时找到音符。例如,您可以在吉他上敲击 A 音符,DSP 识别出它是 A 并将其替换为钢琴中的 A,因此您可以从扬声器中获得钢琴的声音。

Using the program, the user was able to move these around and even edit them. Now, obviously this is a lot more complicated, but does it involve the same thing? Signal Processing? I am also interested in possible applications in music visualizers and intelligent lighting systems.



是的。一旦进入频域,事情就会变得非常容易。例如,您可以根据语音频率点亮特定的灯,并用低音鼓点亮另一盏灯。

My understanding is that doing this processing on a compressed audio format such as MP3 wont yield the same results as MIDI which contains separate tracks (Maybe I misunderstood).



他们是两个不同的东西。 MP3 是一种来自声波的压缩格式。基本上它需要引导扬声器并对其进行压缩。想法是一样的:DFT,然后去除不太可能被听到的东西(例如,在高强度声音之后的高音不太可能被听到,所以它被去除了)。

另一方面,MIDI 是一个事件卷轴(你知道,就像遥远西部的那些钢琴,带有卷纸卷轴)。该文件不包含音乐。它包含让 MIDI 播放器在特定时间使用特定乐器演奏特定音符的指示。 “乐器库”的质量(除其他外)是将坏的 MIDI 播放器(听起来像一个 child 玩具)与好的 MIDI 播放器(听起来很逼真,尤其是钢琴和 fiddle ,管乐器我仍然必须听到一个现实的)。

它需要从 MIDI 到 MP3,您只需通过 MIDI 播放器进行演奏。反过来做则完全不同,而且要复杂得多,正如您所说,这就是 DSP 发挥作用的地方。

这就像煮鱼缸一样。你得到一个鱼汤。但要从鱼汤回到鱼缸,就难多了。

Would an uncompressed format such as PCM do better than MP3?



PCM 是一种将模拟信号转换为数字信号的技术。所以你的问题有一个根本的误解,即不存在 PCM 格式(RAW 格式是一个接近的电话,基本上只包含原始数据)。如果您问未压缩的 WAV(包含 PCM 数据)是否比 MP3 更好,那么是的,但有时问题是这对人耳来说真正重要到什么程度,以及您必须对该数据执行多少后处理。

know if there are any existing libraries which can facilitate this, or articles pertaining to this subject that geared towards Computer Science/Programming, with perhaps example code. Even open source sound/music visualizers or any other open source sound processing code would be great.



如果你喜欢python,take a look at this page

Sorry if I didn't make any sense. Like I said, I don't know what I'm talking about.



我也没有,但我玩弄了一下。

关于visualization - 以编程方式 'Listening' 到声音(信号处理?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1628071/

相关文章:

Python gmplot 'centerLat' 未定义

javascript - bl.ock 预览中未在 localhost 中出现错误

r - 从 FFT 中有效提取信号频率

android - 使用 Android 应用程序进行信号处理(莫尔斯码解码)

python - 如何打印对象的值?

python - Plotly:如何更改散点图散点图的配色方案?

python - 如何防止 HBar 在 Bokeh 中重叠?

Python MNE - 从数组中读取 EEG 数据

java - 从 .mp3 或 .wav 文件计算频率?

Javascript:如何确定mp3文件的音乐键