V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
这是一个专门讨论 idea 的地方。

每个人的时间,资源是有限的,有的时候你或许能够想到很多 idea,但是由于现实的限制,却并不是所有的 idea 都能够成为现实。

那这个时候,不妨可以把那些 idea 分享出来,启发别人。
VisionKi
V2EX  ›  奇思妙想

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

  •  
  •   VisionKi · 2019-11-09 10:09:46 +08:00 · 6092 次点击
    这是一个创建于 1866 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    16 条回复    2020-01-19 10:55:16 +08:00
    murmur
        1
    murmur  
       2019-11-09 10:16:01 +08:00   ❤️ 1
    换到频域上看那个频点的强度最大,自己做没意思,现成的软件太多,别人不仅可以识别单音,还得考虑和弦
    andyhuzhill
        2
    andyhuzhill  
       2019-11-09 10:49:39 +08:00   ❤️ 1
    这个很简单阿 把声音录下来 作一个 FFT (快速傅立叶变换) 就可以了
    blindie
        3
    blindie  
       2019-11-09 11:05:46 +08:00   ❤️ 1
    @andyhuzhill 对的。找出最高峰然后查表就知道哪个键了
    lbp0200
        4
    lbp0200  
       2019-11-09 11:50:40 +08:00 via iPhone
    iphone 上有个收费的 APP,我还准备买
    VisionKi
        5
    VisionKi  
    OP
       2019-11-09 14:07:36 +08:00
    @andyhuzhill 我有查到这个 FFT,但是看起来好复杂,我再看看吧
    andyhuzhill
        6
    andyhuzhill  
       2019-11-10 08:56:02 +08:00
    @VisionKi #5
    要弄懂原理的话 得学数字信号处理
    但是你只是用的话 直接找个库 比如 fftw 拿来用就行了
    djyde
        7
    djyde  
       2019-11-10 14:21:05 +08:00
    识别频率。可以了解一下十二平均率。
    codehz
        8
    codehz  
       2019-11-10 15:52:49 +08:00
    除了前面说的和弦之外,还要考虑的的内容就是泛音。。。
    虽然泛音肯定比主音弱,但是加上和弦的话就不能简单分辨了,(再算上底噪。。。)
    这里建议直接把频谱和标记丢 CNN 训练一下解决)
    VisionKi
        9
    VisionKi  
    OP
       2019-11-11 09:39:32 +08:00
    @codehz 我这目前只考虑一个音,就弹哪个键识别出来就行了
    VisionKi
        10
    VisionKi  
    OP
       2019-11-11 09:40:05 +08:00
    @andyhuzhill 好的谢谢
    sobigfish
        11
    sobigfish  
       2019-11-11 12:48:43 +08:00
    这是要做调音 app 么? 可以参考一下调吉他的?(原理应该差不多吧,而且弦乐的频率还有波动 可能更难点)
    slax
        12
    slax  
       2019-11-11 14:41:19 +08:00   ❤️ 1
    键 频率(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
        13
    VisionKi  
    OP
       2019-11-12 09:37:49 +08:00
    @sobigfish 想做个练习五线谱的软件吧
    VisionKi
        14
    VisionKi  
    OP
       2019-11-12 09:38:39 +08:00
    @slax 谢谢大佬,我研究研究
    mybliss
        15
    mybliss  
       2019-11-12 17:31:05 +08:00
    @slax 笋哥大佬牛逼!
    tisswb
        16
    tisswb  
       2020-01-19 10:55:16 +08:00
    物理解决方案如何?比如每个琴键上设置一个光感应器 利用光感变化原理判断琴键是否按下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3108 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:11 · PVG 21:11 · LAX 05:11 · JFK 08:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.