嗯,这是我关于堆栈溢出的第一个问题,所以我对它感到很兴奋:)这里是:我的输入是一个wave文件。现在,我用我的吉他录制了一首曲子。所以这个波文件包含了这个仪器录音。我想做的是,得到每个音符的乐谱(A,B,C等)。我听说过像快速傅立叶变换这样的技术,但考虑到我对如何使用快速傅立叶变换的贫乏知识,我想使用奥比奥库。
因此,aubio提供了:提取音调候选点的自动发痒和提取onset的aubiocut。
我被困住的地方是:如何在使用aubio播放的音符的特定时间上获得频率?据我所知,自动发痒和紫罗兰会有帮助,但我不知道如何在它们之间进行映射。如能提供任何帮助,将不胜感激:)
嗨,皮姆:谢谢你的回答。请你分析一下这个输出好吗?
aubiopitch -i Reverse_Open.wav
1.408 68.9486465454 1.536 81.7372512817 1.664 164.290893555 1.792 164.464691162 1.92 82.6862487793 2.048 328.539306641 2.176 218.885116577 2.304 219.06237793 2.432 219.042160034 2.56 219.133621216 2.688 145.751785278 2.816 146.437744141 2.944 146.199829102 3.072 195.059829712 3.2 194.912689209 3.328 195.724975586 3.456 195.517547607 3.584 247.317428589 3.712 246.764221191 3.84 246.857452393 3.968 145.454727173 4.096 328.569610596 4.224 329.625823975 4.352 329.16619873 4.48 328.906402588 4.608 328.96786499 4.736 329.187835693 4.864 145.741394043
我的音符和频率是:E(82 approx),A(110),D(147),G(197),B(247),E(329.2),它在1.344,1.888,2.4,2.88,3.36,3.872 resp上播放(根据自动发痒,我认为是正确的)。你知道如何从上面的输出中提取出这6个音符和它们的时间吗?
发布于 2013-06-24 23:38:59
自动发痒输出一个元组的列表。每个元组包含两个浮动:
这里有一个吉他声音的例子:
$ aubiopitch -i guitar_Cold_Blood_-_Baby_I_Love_You.wav | head
0.000000 0.000000
0.005805 293.884338
0.011610 386.387207
0.017415 0.000000
0.023220 551.689758
0.029025 3608.569336
0.034830 3588.231201
0.040635 416.824066
0.046440 3606.715576
0.052245 417.116425如果您好奇(请是),您可以获得最新的git版本,并尝试演示脚本demo_pitch.py。
$ ./python/demos/demo_pitch.py bass_Don_Ellis_-_Conquistador.wav您将得到以下情节:

在这个低音线的样本中,在瞬态攻击中提取音高比在稳定状态下更具有挑战性。可以丢弃低于任意阈值(此处0.8)的候选音高(虚线绿线),而可以保留其他候选音高(实心蓝线)。
https://stackoverflow.com/questions/17282268
复制相似问题