V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
oosjs
V2EX  ›  分享发现

分享一个 github 上面的神器,真的是神器,不是夸张的。而且搜了一下,基本上是属于世界上没有同类开发的独创软件。感兴趣有能力的网友可以继续跟进开发。

  •  
  •   oosjs · 2020-03-12 10:40:31 +08:00 via iPhone · 5380 次点击
    这是一个创建于 1710 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先说明,这个不是我自己的,只是来分享一下。感觉以后有声书的审核力度持续下去,会变得更加有用。

    软件叫 MP3CutAd

    自动去掉 MP3 有声读物里面反复出现的片头、片尾、广告。

    链接(把“点”改一下)
    github 点 com/licstar/MP3CutAd

    现在由于版权或者广电总局审核等原因,一些好的有声书被下架。搞得不少用户重新回到自己下载 mp3 有声书进行收听。类似有的歌曲各大 app 被下架,想听就得自己下 mp3。

    但是 mp3 有声书里面有个问题就是有一些广告,这个软件的作用就是找出 mp3 里面的广告片段之后进行删除。

    用了一下,非常好用,不过原作者已经很多年没有更新了。鉴于本就是 github 上面的开源,不知道有没有感兴趣有能力的作者继续开发。


    MP3CutAd

    自动去掉 MP3 有声读物里面反复出现的片头、片尾、广告。

    使用方法

    下载安装(把“点”改一下 pan 点 baidu 点 com/s/1pJ3VmVx ),或者:

    下载代码,用 VS 打开,会自动安装一些依赖。
    下载 ffmpeg。复制里面的 ffmpeg.exe 和 ffplay.exe 到本项目的 ffmpeg 目录下。
    运行。
    原理

    找到重复出现的广告,然后去掉。

    具体步骤如下:

    使用 ffmpeg 把 MP3 文件转成 wav 格式。(平均 3~5 秒一个文件)
    对 wav 文件做 FFT。(大约 2.5 秒一个文件)
    对 FFT 的结果做 LSH。(大约 2.5 秒一个文件)
    两两对比,找到相似的片段。(大约 0.35 秒对比一组)
    运行时间根据一套有 50 个文件的有声读物实测得到,每个文件包含 20 分钟的录音,测试 CPU 为 i5。 总时长为:450 + 2.550 + 2.5*50 + (1+2+...+49)*0.35 = 15 分钟。

    TODO

    考虑直接对 MP3 做 fft,或许能快点。
    目前是两两对比,找重复部分。考虑修改算法,归纳多处出现的广告,优化边界的识别。
    FFT+cos 距离这种土办法是不是有高大上的替代方法?
    边界判断是不是有高大上的替代方法?
    新生成的 MP3 文件,加上原文件的标题、艺术家、专辑等信息。
    没发现广告的文件,直接复制原文件过去。
    各种重构,各种把参数提到一个地方。
    hljjhb
        1
    hljjhb  
       2020-03-12 10:56:13 +08:00   ❤️ 6
    贴吧?
    oosjs
        2
    oosjs  
    OP
       2020-03-12 10:58:20 +08:00 via iPhone
    @hljjhb 你这种莫名其妙的回复以后就不要回了。
    c00WKmdje2wZLrSI
        3
    c00WKmdje2wZLrSI  
       2020-03-12 11:03:37 +08:00
    要是可以去掉视频的片头片尾就好了,比如澳门线上......
    oosjs
        4
    oosjs  
    OP
       2020-03-12 11:06:08 +08:00 via iPhone
    @c00WKmdje2wZLrSI 他这个是音频啊。视频就靠有没有人继续开发,哈哈。要是好几集都是同样的广告,这个软件是可以对音频进行处理的。
    oosjs
        5
    oosjs  
    OP
       2020-03-12 11:07:01 +08:00 via iPhone
    @c00WKmdje2wZLrSI
    通过音频处理找到广告的时间段,再对视频按时间段切割,就可以了哈哈哈
    lloovve
        6
    lloovve  
       2020-03-12 11:12:37 +08:00 via iPhone
    Mp3 直接 FFT,FFT 要对原始数据做处理才行,直接对 mp3 做没什么意义吧,毕竟不是人声
    sakujo
        7
    sakujo  
       2020-03-12 11:40:54 +08:00
    确实有这个需求
    Kelan
        8
    Kelan  
       2020-03-12 11:42:19 +08:00
    切头去尾有什么技术含量,有些声音广告甚至是叠加在原声上的,得能把广告滤掉才行。
    PbCopy111
        9
    PbCopy111  
       2020-03-12 11:49:14 +08:00
    这里可以直接贴 github 的链接吧。。。毕竟是程序员论坛。。。
    limbo0
        10
    limbo0  
       2020-03-12 12:43:28 +08:00 via Android   ❤️ 2
    标题党
    Nadao
        11
    Nadao  
       2020-03-12 14:07:18 +08:00
    我怎么记得有些播放器带这个功能?
    learningman
        12
    learningman  
       2020-03-12 15:45:38 +08:00
    这个标题实在是太奇怪了
    also24
        13
    also24  
       2020-03-12 15:48:46 +08:00
    召唤一下之前在 /t/638549 里求方案的 @JCZ2MkKb5S8ZX9pq
    Citrullus
        14
    Citrullus  
       2020-03-12 16:00:40 +08:00
    @c00WKmdje2wZLrSI 有画面感了😂
    Meifa
        15
    Meifa  
       2020-03-12 16:10:13 +08:00 via Android
    我想把视频的明星推荐广告去掉
    JCZ2MkKb5S8ZX9pq
        16
    JCZ2MkKb5S8ZX9pq  
       2020-03-12 19:12:26 +08:00
    @also24 谢谢,我会找时间去试一下。
    之前让小朋友帮我手动打了下时间点……

    最近在听厚大法考罗翔,有些 up 喜欢自己贴有声头尾是真的烦。
    loading
        17
    loading  
       2020-03-12 19:29:27 +08:00 via Android
    没查,算法应该可能就是把前面一样的数据全部剪掉。
    oosjs
        18
    oosjs  
    OP
       2020-03-14 07:31:45 +08:00 via iPhone
    @Kelan 别人原作者写了原理,你都看不懂,看来这个贴子真的不适合你
    oosjs
        19
    oosjs  
    OP
       2020-03-14 07:32:14 +08:00 via iPhone
    @PbCopy111
    真搞不懂,没有眼睛的你,干嘛上论坛
    oosjs
        20
    oosjs  
    OP
       2020-03-14 07:33:30 +08:00 via iPhone
    @Nadao 不用怀疑,这只是因为你妄想了。而且看不懂原理,也就看不懂其真正的功能
    oosjs
        21
    oosjs  
    OP
       2020-03-14 07:35:57 +08:00 via iPhone
    @loading 真搞不懂,别人写了原理写了源码。你不愿看就算了,可是为什么还要在这瞎猜呢。
    oosjs
        22
    oosjs  
    OP
       2020-03-14 07:37:52 +08:00 via iPhone
    @lloovve 感觉直接 mp3 做 fft 也行得通啊。wav 做 fft 和 mp3 做 fft 没有本质区别吧
    oosjs
        23
    oosjs  
    OP
       2020-03-14 07:40:09 +08:00 via iPhone
    @limbo0 标题党说的是标题和内容不相关。
    那你说说,我的标题怎么不想关了。标题一个三个意思,有和内容不相关的吗。
    oosjs
        24
    oosjs  
    OP
       2020-03-14 07:52:09 +08:00 via iPhone
    @learningman 有什么好奇怪的。标题三点意思。有和内容不相关的吗
    learningman
        25
    learningman  
       2020-03-14 11:31:59 +08:00 via Android
    @oosjs 标题应该简明扼要的概括内容,而不是使用大量含有情绪色彩的词汇。
    你上百度查:请问能告诉我如何做一道红烧肉吗?
    你看百度理你不
    oosjs
        26
    oosjs  
    OP
       2020-03-14 12:07:17 +08:00 via iPhone
    @learningman
    别人的标题应该怎样还要听你的垃圾规定?
    你还是继续活在你的世界里吧。
    虽然看不懂你举百度的例子有什么意义。但你的行动都基于百度理不理你,也是够了。
    Kelan
        27
    Kelan  
       2020-03-17 17:08:03 +08:00
    脾气这么大干嘛。放轻松一些。自己生气了还让别人也不舒服没什么意思。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1040 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:29 · PVG 03:29 · LAX 11:29 · JFK 14:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.