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 · 5665 次点击
    这是一个创建于 2508 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    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
    zxiso  
       2018-02-09 20:17:26 +08:00 via Android
    傅立叶变化。。先把波分开。然后就好找了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2761 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.