按下钢琴一个键,程序如何识别出是哪个键

2019-11-09 10:09:46 +08:00
 VisionKi

音频对比吗,还是频率,对音频处理这块不熟悉,有没有什么好的实现方案,或者支持的库

5897 次点击
所在节点    奇思妙想
16 条回复
murmur
2019-11-09 10:16:01 +08:00
换到频域上看那个频点的强度最大,自己做没意思,现成的软件太多,别人不仅可以识别单音,还得考虑和弦
andyhuzhill
2019-11-09 10:49:39 +08:00
这个很简单阿 把声音录下来 作一个 FFT (快速傅立叶变换) 就可以了
blindie
2019-11-09 11:05:46 +08:00
@andyhuzhill 对的。找出最高峰然后查表就知道哪个键了
lbp0200
2019-11-09 11:50:40 +08:00
iphone 上有个收费的 APP,我还准备买
VisionKi
2019-11-09 14:07:36 +08:00
@andyhuzhill 我有查到这个 FFT,但是看起来好复杂,我再看看吧
andyhuzhill
2019-11-10 08:56:02 +08:00
@VisionKi #5
要弄懂原理的话 得学数字信号处理
但是你只是用的话 直接找个库 比如 fftw 拿来用就行了
djyde
2019-11-10 14:21:05 +08:00
识别频率。可以了解一下十二平均率。
codehz
2019-11-10 15:52:49 +08:00
除了前面说的和弦之外,还要考虑的的内容就是泛音。。。
虽然泛音肯定比主音弱,但是加上和弦的话就不能简单分辨了,(再算上底噪。。。)
这里建议直接把频谱和标记丢 CNN 训练一下解决)
VisionKi
2019-11-11 09:39:32 +08:00
@codehz 我这目前只考虑一个音,就弹哪个键识别出来就行了
VisionKi
2019-11-11 09:40:05 +08:00
@andyhuzhill 好的谢谢
sobigfish
2019-11-11 12:48:43 +08:00
这是要做调音 app 么? 可以参考一下调吉他的?(原理应该差不多吧,而且弦乐的频率还有波动 可能更难点)
slax
2019-11-11 14:41:19 +08:00
键 频率(HZ) 精确值   键 频率(HZ) 精确值
a0 27.500 27.5000000000   f4 349.228 349.2282314330
a#0 29.135 29.1352350949   f#4 369.994 369.9944227116
b0 30.868 30.8677063285   g4 391.995 391.9954359817
c1 32.703 32.7031956626   g#4 415.305 415.3046975799
c#1 34.648 34.6478288721   a4 440.000 440.0000000000
d1 36.708 36.7080959897   a#4 466.164 466.1637615181
d#1 38.891 38.8908729653   b4 493.883 493.8833012561
e1 41.203 41.2034446141   c5 523.251 523.2511306012
f1 43.654 43.6535289291   c#5 554.365 554.3652619538
f#1 46.249 46.2493028389   d5 587.330 587.3295358348
g1 48.999 48.9994294977   d#5 622.254 622.2539674442
g#1 51.913 51.9130871975   e5 659.255 659.2551138258
a1 55.000 55.0000000000   f5 698.456 698.4564628660
a#1 58.270 58.2704701898   f#5 739.989 739.9888454233
b1 61.735 61.7354126570   g5 783.991 783.9908719635
c2 65.406 65.4063913251   g#5 830.609 830.6093951599
c#2 69.296 69.2956577442   a5 880.000 880.0000000000
d2 73.416 73.4161919793   a#5 932.328 932.3275230362
d#2 77.782 77.7817459305   b5 987.767 987.7666025123
e2 82.407 82.4068892282   c6 1046.502 1046.5022612025
f2 87.307 87.3070578582   c#6 1108.731 1108.7305239076
f#2 92.499 92.4986056779   d6 1174.659 1174.6590716697
g2 97.999 97.9988589954   d#6 1244.508 1244.5079348884
g#2 103.826 103.8261743950   e6 1318.510 1318.5102276516
a2 110.000 110.0000000000   f6 1396.913 1396.9129257321
a#2 116.541 116.5409403795   f#6 1479.978 1479.9776908467
b2 123.471 123.4708253140   g6 1567.982 1567.9817439272
c3 130.813 130.8127826503   g#6 1661.219 1661.2187903200
c#3 138.591 138.5913154884   a6 1760.000 1760.0000000002
d3 146.832 146.8323839587   a#6 1864.655 1864.6550460726
d#3 155.563 155.5634918610   b6 1975.533 1975.5332050247
e3 164.814 164.8137784564   c7 2093.005 2093.0045224050
f3 174.614 174.6141157165   c#7 2217.461 2217.4610478153
f#3 184.997 184.9972113558   d7 2349.318 2349.3181433396
g3 195.998 195.9977179909   d#7 2489.016 2489.0158697770
g#3 207.652 207.6523487900   e7 2637.020 2637.0204553033
a3 220.000 220.0000000000   f7 2793.826 2793.8258514644
a#3 233.082 233.0818807590   f#7 2959.955 2959.9553816935
b3 246.942 246.9416506281   g7 3135.963 3135.9634878545
c4 261.626 261.6255653006   g#7 3322.438 3322.4375806401
c#4 277.183 277.1826309769   a7 3520.000 3520.0000000006
d4 293.665 293.6647679174   a#7 3729.310 3729.3100921453
d#4 311.127 311.1269837221   b7 3951.066 3951.0664100497
e4 329.628 329.6275569129   c8 4186.009 4186.0090448103
注:半音程倍数值:1.0594630943593。 音分倍数值(半音程=100 音分):1.00057779
VisionKi
2019-11-12 09:37:49 +08:00
@sobigfish 想做个练习五线谱的软件吧
VisionKi
2019-11-12 09:38:39 +08:00
@slax 谢谢大佬,我研究研究
mybliss
2019-11-12 17:31:05 +08:00
@slax 笋哥大佬牛逼!
tisswb
2020-01-19 10:55:16 +08:00
物理解决方案如何?比如每个琴键上设置一个光感应器 利用光感变化原理判断琴键是否按下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/617828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX