离线字幕提取,基于 Whisper 封装了一个小工具,支持 GPU - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
rerender
V2EX    分享创造

离线字幕提取,基于 Whisper 封装了一个小工具,支持 GPU

  •  
  •   rerender 2023-03-29 08:57:43 +08:00 5729 次点击
    这是一个创建于 931 天前的主题,其中的信息可能已经有所发展或是发生改变。

    制作了这样一个 Windows 上的小工具,用于提取字幕。

    heard-usage

    生成的字幕还可以离线英文翻译为中文:

    srt2srt-usage

    22 条回复    2023-06-14 12:58:55 +08:00
    Greenm
        1
    Greenm  
       2023-03-29 09:09:08 +08:00
    楼主的我没用过,但是同样有一个 windows 上基于 whisper 的竞品: https://github.com/chidiwilliams/buzz
    Greenm
        2
    Greenm  
       2023-03-29 09:10:10 +08:00
    @Greenm 说错了,buzz 是 mac ,windows ,Linux 都支持。
    renmu
        3
    renmu  
       2023-03-29 09:47:51 +08:00 via Android
    提点可能能做出差异化的东西。
    其实你可以支持点别的东西,比如 whisperx ,faster-whisper ,以及一些超参数,反正你是用 Python 起得服务器来实现调用的,应该不会太麻烦。
    whisper 对长音频解析的时候会经常出现多句重复的情况,可以做些简单处理。
    也可以支持转成 ass 。
    不同的音频可能参数会不一样,还可以支持什么参数配置加载。

    ps:whisper 好像对唱歌音频效果不太好,有知道大佬吗
    wudicgi
        4
    wudicgi  
       2023-03-29 09:54:01 +08:00
    赞~~~

    我是半个多月前刚了解到的这个 Whisper, 还打算结合以前做过的 SpleeterMsvcExe 项目做个自动生成歌词的工具
    Whisper 识别出来的字幕,时间戳对齐的不太好,虽然现在有 word aligned 参数,但加上这个参数后识别效果不如不加时的
    结合 Spleeter 对音频文件先分离出 vocals 轨,再按语音强弱把字幕给对齐一下应该就有不错的效果了
    learner
        5
    learner  
       2023-03-29 09:55:15 +08:00
    "whisper 对长音频解析的时候会经常出现多句重复的情况" 这个我也遇到了,大佬有什么解决办法吗?
    learner
        6
    learner  
       2023-03-29 09:55:50 +08:00
    @wudicgi " whisper 对长音频解析的时候会经常出现多句重复的情况" 这个我也遇到了,大佬有什么解决办法吗?
    wudicgi
        7
    wudicgi  
       2023-03-29 09:57:25 +08:00
    另外有一个 whisper.cpp 的项目,可以免除 Python 环境
    https://github.com/ggerganov/whisper.cpp

    缺点是不支持 GPU, 启用 word aligned 参数时比官方原版的效果要差很多
    learner
        8
    learner  
       2023-03-29 09:57:27 +08:00
    @renmu " whisper 对长音频解析的时候会经常出现多句重复的情况" 这个我也遇到了,大佬有什么解决办法吗?( V2EX 的回复功能不太会用……
    wudicgi
        9
    wudicgi  
       2023-03-29 09:59:10 +08:00   1
    @learner 这个从我用过几次的经验来看,换大一些的模型这种现象出现的会少一些
    比如用 medium 模型,和 small, tiny 相比就不容易出这个问题

    其他的因为还没具体去看它是如何对音频进行切片处理的,还不太清楚问题根源
    renmu
        10
    renmu  
       2023-03-29 09:59:48 +08:00 via Android   1
    简单粗暴的方法就是对解析后的 srt 再做个处理,如果前后两句重复,那么直接把后一句删了。
    learner
        11
    learner  
       2023-03-29 10:10:54 +08:00
    @wudicgi 我用了 large 的模型也会出现,我这边试了 1 小时以上的音频基本上是必现的。。。
    learner
        12
    learner  
       2023-03-29 10:11:55 +08:00
    @renmu 这样中间字幕会缺很多,一小时的视频,可能中间有十分钟都没字幕了
    renmu     13
    renmu  
       2023-03-29 10:16:06 +08:00 via Android
    @learner 我这边的情况是在一般只有在没人说话的时候才会不断重复上一句。
    你可以试试 whisperx ,好像情况会好一些,具体我没测试过
    tool2d
        14
    tool2d  
       2023-03-29 10:47:07 +08:00
    @wudicgi 我也在用 whisper.cpp 这个,感觉很方便。

    可惜识别的是繁体,中文多音字也不少,还要手动校验一次,和英语音译体验不好比。如果中文校验能自动化就好了。
    iX8NEGGn
        15
    iX8NEGGn  
       2023-03-29 13:31:41 +08:00 via iPhone
    “生成的字幕还可以离线英文翻译为中文”,这也是 whisper 做的吗?我记得它只支持其他语言翻译成英文
    koast
        16
    koast  
       2023-03-29 14:33:22 +08:00
    @tool2d 繁体的问题可以通过 initial_prompt 来解决,大致是用简体中文给指示就好,在 whisper 的 issue 里有人提到过,效果挺好的
    kernelpanic
        17
    kernelpanic  
       2023-03-29 14:47:40 +08:00
    真复杂,又是 server 又是 npm 的,直接用这个不香吗,https://github.com/Const-me/Whisper ,不用安装,只有几百 kb 大小,再下载个模型 https://huggingface.co/ggerganov/whisper.cpp/tree/main ,直接用,还支持 GPU 加速
    rerender
        18
    rerender  
    OP
       2023-03-29 21:51:27 +08:00
    @iX8NEGGn whisper 那个是语音翻译,这里是指使用 whisper 生成字幕后,对字幕翻译,是另一个工具了,将英文文本的 srt 文件,翻译为中文文本的 srt 文件
    hanguofu
        19
    hanguofu  
       2023-03-30 06:35:17 +08:00
    请问 识别普通话的时候 ,WER 错误率很高吗 ?
    rerender
        20
    rerender  
    OP
       2023-03-30 08:53:00 +08:00   1
    @hanguofu whisper 官方有给一个表,中文是 14.7 ,英文是 4.2 。链接: https://github.com/openai/whisper
    renmu
        21
    renmu  
       2023-03-30 18:01:17 +08:00 via Android
    @learner 那你可以试试获取到重复的时间后,用 ffmpeg 切出来再给他识别一次,之后再拼上去
    candafromcn
        22
    candafromcn  
       2023-06-14 12:58:55 +08:00
    @rerender 字幕翻译是用什么实现的, 网络 api 还是 AI 翻译?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     880 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:17 PVG 05:17 LAX 14:17 JFK 17:17
    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