V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
rerender
V2EX  ›  分享创造

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

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

    制作了这样一个 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   ·   实用小工具   ·   2632 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:56 · PVG 09:56 · LAX 17:56 · JFK 20:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.