我有一段跳绳的音频如何识别里面跳了多少下? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
woshichuanqilz
V2EX    Python

我有一段跳绳的音频如何识别里面跳了多少下?

  •  
  •   woshichuanqilz 2018-02-09 13:12:11 +08:00 6125 次点击
    这是一个创建于 2881 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每次的声音还是比较有规律的, 就是有没有音频模糊匹配的方法,可以识别这个音频里面一共跳了多少下?

    找到了一个这个库, 但是感觉这个库比较大, 有没有比较简单的实现的方法。

    用上面那可库的实现方法就是, 从开始一点一点的截取音频, 直到找到一个匹配, 然后在从新开始截取, 这样不断的循环下去。

    18 条回复    2018-02-09 20:17:26 +08:00
    peterpei
        1
    peterpei  
       2018-02-09 13:15:10 +08:00 via Android
    音频波
    找相似的波普。。
    kingda
        2
    kingda  
       2018-02-09 13:27:08 +08:00
    总时间长度除以单次长度……哈哈~
    mdluo
        3
    mdluo  
       2018-02-09 13:28:08 +08:00   1
    Fingerprinting 是用来做精准匹配音频的,核心算法是特征提取和 Hash 累积匹配,跟你说的 “从开始一点一点的截取音频, 直到找到一个匹配” 相差挺远的。而且 FP 也不是用来做一个没有原始特征的这种模糊识别的算法,你这种需求直接从频谱里找竖向的峰值就好了。

    这个 dejavu 只用了一个 local max 来找特征,算是最 naive 的方法了,实际的比如 Shazam 的 FP 算法要复杂的多。不过你只是找跳绳的声音参考这个的 get_2D_peaks 基本上也足够了。
    blaxmirror
        4
    blaxmirror  
       2018-02-09 13:38:18 +08:00   2
    提供一个思路,如果杂音不明显的话,用软件直接先转成音频的波形图(应该也有库可以完成这一步吧),然后画一条线看看,有多少个波峰超过这条线,就转换成了图形的问题。
    如果能导出音频的波形图数据出来,那也可以说是数学问题了。(可以参考各种 xx 色谱的计算机处理)

    仅供参考
    ai277014717
        5
    ai277014717  
       2018-02-09 13:59:41 +08:00
    可以用机器学习。
    picasso250
        6
    picasso250  
       2018-02-09 14:32:32 +08:00   2
    傅里叶变换

    第一项的周期就是结果.
    douglas1997
        7
    douglas1997  
       2018-02-09 14:38:39 +08:00 via iPhone
    @ai277014717 训练样本呢?
    ai277014717
        8
    ai277014717  
       2018-02-09 15:20:56 +08:00
    @douglas1997 自己在不同环境差异明显最佳,录一些跳绳的声音就可以采集样本。具体怎么计算我也不懂。斯坦福公开课机器学习第一节就有经过机器学习后将 KTV 声音分离的介绍,原理是用两个 mic。
    sitiao
        9
    sitiao  
       2018-02-09 16:52:53 +08:00
    1. 把跳绳的声音一段段切出来,10 段~20 段就可以了,作为模板;模板越多越好;最好选取不同人、不同跳绳的录音;
    2. 模板片段提取 MFCC 系数,每个片段的 MFCC 系数做一下平均,作为整个片段的模板;多个模板可以再以下聚类,缩减一下模板数量,假设最后剩下 N 模板。
    3. 测试片段的 MFCC 特征序列与 N 模板算一下余弦相似度,每个 MFCC 系数与任意一个模板的相似度超过阈值 t1,则标记为 1,未超过的标记为 0 ;
    4. 对测试片段标记为 0~1 的序列做一个 5~10 点平滑,基本就可以用了。

    比较简单粗暴,估计误识别会很高。
    sitiao
        10
    sitiao  
       2018-02-09 16:55:03 +08:00
    @mdluo 说的是对的,那个库适合做音频指纹检索,对这个 case 不太适合。
    onevcat
        11
    onevcat  
       2018-02-09 16:58:49 +08:00
    傅立叶变换就好了啊...信号与处理...想起了那些奋战在“电灯比油灯进步多了”的日子- -
    chenyu8674
        12
    chenyu8674  
       2018-02-09 18:02:57 +08:00
    bogun
        13
    bogun  
       2018-02-09 18:28:16 +08:00
    用这个库要谨慎一点,库的作者已经不维护了,不过他的效率挺好的,通过短时傅里叶变换,然后过滤找到峰值点,在生成指纹,它是用来做音频识别的,跟你的场景不一样,你可以利用它的算法提出单次跳绳的峰值点,然后进行匹配,需要你自己实现。
    contmonad
        14
    contmonad  
       2018-02-09 18:41:09 +08:00 via iPhone   2
    这不能用傅立叶变换吧?跳绳频率不一定是均匀的。我觉得 #4 的方法就可以。这个问题应该不难,很多年前就有波形声音转 midi 的软件了,而这个只相当于把鼓点找出来
    contmonad
        15
    contmonad  
       2018-02-09 18:57:23 +08:00 via iPhone
    gamecreating
        16
    gamecreating  
       2018-02-09 18:59:10 +08:00
    把声音波段弄出来 很轻松
    timetolo
        17
    timetolo  
       2018-02-09 19:12:08 +08:00
    要想非常稳健、鲁棒性很好地去搞定这个看上去并不起眼的问题,可能需要两个研究生去搞定

    第一步就是降噪,环境噪音太大怎么没办?
    第二步,blabla
    zxiso
        18
    zxis  
       2018-02-09 20:17:26 +08:00 via Android
    傅立叶变化。。先把波分开。然后就好找了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3024 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 12:36 PVG 20:36 LAX 04:36 JFK 07:36
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86