从标准的泰国舞蹈歌曲中检测cy钹(乐器)的节奏

时间:2013-07-16 20:39:12

标签: python audio thai

我有一首标准的泰国舞曲,它有许多乐器和歌词。我必须把它变成只有cy钹节奏的wav。我只知道我必须使用python。这该怎么做?谢谢。

2 个答案:

答案 0 :(得分:1)

钹节律可能可能主要是在特定混合物的高频率下。我之前从未听过这首曲目,因此我不知道它是否会与该特定乐器相关的频率较低。但是,从直觉来看,这是我最好的猜测......

你需要过滤掉任何较低的频率,如较低的鼓或人声(通常是中音重的乐器),它们不具有钹部分的任何声音内容。如果你看一下频谱分析仪,典型钹的频率将从500Hz开始缓慢上升到5KHz,其中振幅约为5k-15k,直到它停止后15-20k(在原始轨道中滤除高端的情况)。过滤低于500Hz(或可能略高的频率)的任何东西。如果你想要更精确的过滤,你可能想要找到一个信封跟随者,它将在cy钹击中时过滤更多的声音内容。过滤得越多,您可能听到的其他乐器就越少。

此作业需要高通过滤器。您可以在Python中自己编写一个,尽管从以下位置移植DSP算法会更容易:musicdsp.org

或使用Python DSP库: code.google.com/p/pyo/。

在音乐DSP网站上,我想你也可以在算法后找到一个不错的信封。

Python有一个很棒的库,可以在这里读取和写入wav:http://docs.python.org/2/library/wave.html

另外,如果您需要实时测试过滤作业,请考虑PyAudio:http://people.csail.mit.edu/hubert/pyaudio/

此过程不会没有扭结,因为过滤器可能不会过滤除cy钹之外的所有内容。由于混合音频是混合的,因此几乎不可能将各个部分和乐器分离出来。唯一能做到远近接近的是Melodyne。

答案 1 :(得分:0)

第一个想法是实现一个带通滤波器,它将切断其他乐器大多位于其中的低频和中频(http://en.wikipedia.org/wiki/Band-pass_filter)。你可以自己做:

  1. fft you wav-file并获得光谱
  2. 选择您要保留的频段
  3. 将其他所有内容归零(或应用窗口 - 高斯,超高斯等)
  4. 将所有内容转换回来(反向fft)
  5. 听取结果,根据需要更改频段
  6. 你也可以使用scipy library - google来进行信号处理。

    希望这会有所帮助。尝试一下,发布更详细的问题(如果有的话)。