IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    利用whisper为视频自动生成字幕

    Derobukal发表于 2025-01-02 04:51:33
    love 0

    whisper是一个由openai开发的通用语言识别模型,我们可以使用它来为视频自动创建字幕。

    环境安装

    为了加速,我们需要使用GPU来进行计算,因此需要安装基于CUDA的pytorch。首先我们需要安装Miniconda,这里安装的时候直接点击下一步即可。

    安装完毕之后,我们需要创建一个新的环境,这里我们创建一个名为whisper的环境:

    conda create -n whisper python=3.8conda activate whisper

    1. 安装CUDA

    安装好了Miniconda之后,我们需要安装CUDA,执行nvidia-smi

    $ nvidia-smiThu Jan  2 11:49:53 2025+-----------------------------------------------------------------------------------------+| NVIDIA-SMI 560.94                 Driver Version: 560.94         CUDA Version: 12.6     ||-----------------------------------------+------------------------+----------------------+| GPU  Name                  Driver-Model | Bus-Id          Disp.A | Volatile Uncorr. ECC || Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. ||                                         |                        |               MIG M. ||=========================================+========================+======================||   0  NVIDIA GeForce GTX 1060 6GB  WDDM  |   00000000:01:00.0  On |                  N/A ||  0%   39C    P8             10W /  120W |     505MiB /   6144MiB |      0%      Default ||                                         |                        |                  N/A |+-----------------------------------------+------------------------+----------------------+

    通过这个命令可以看到Driver Version: 560.94和CUDA Version: 12.6,因此我们需要安装12.6版本的CUDA,更加详细的版本对照表在这里。在安装的时候可以选择自定义安装选项,一般来说只要勾选CUDA下的 Development和Runtime即可。

    安装完毕之后执行命令nvcc -V查看CUDA版本:

    $ nvcc -Vnvcc: NVIDIA (R) Cuda compiler driverCopyright (c) 2005-2024 NVIDIA CorporationBuilt on Thu_Sep_12_02:55:00_Pacific_Daylight_Time_2024Cuda compilation tools, release 12.6, V12.6.77Build cuda_12.6.r12.6/compiler.34841621_0

    2. 安装cuDNN

    根据自己下载的CUDA来选择对应版本的cuDNN,下载地址在这里。下载完毕之后解压到CUDA的安装目录下,一般来说是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA{版本号},如果有重名的文件直接替换即可。

    之后进入extras\demo_suite目录,执行如下命令:

    bandwidthTest.exedeviceQuery.exe

    如果出现了PASS的字样,说明安装成功。

    3. 安装pytorch

    切换到我们之前创建的whisper环境,使用如下命令安装CUDA版本的pytorch:

    pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118

    安装之后执行python命令进入python环境,执行如下代码:

    1
    2
    import torch
    torch.cuda.is_available()

    如果显示True则说明CUDA版本的pytorch安装成功。

    4. 安装whisper

    切换到我们之前创建的whisper环境,执行如下命令安装whisper:

    pip install -U openai-whisperpip install setuptools-rust

    安装完毕之后执行如下命令就可以使用whisper了:

    whisper 'C:/Users/raymond/Desktop/voice.aac' --language zh --model turbo

    如上命令表示对C:/Users/raymond/Desktop/voice.aac文件进行中文语言的识别,使用turbo模型。第一次执行该命令会下载模型文件,模型文件较大,下载时请确保网络通畅。执行结果如下

    [00:00.000 --> 00:03.060] 提到肉毒毒素[00:03.060 --> 00:04.540] 你会想到什么[00:04.540 --> 00:10.820] 你真的了解它吗[00:10.820 --> 00:12.540] 2017年[00:12.540 --> 00:14.180] 肉毒毒素以万能药标签[00:14.180 --> 00:15.500] 登上时代周刊方面[00:15.500 --> 00:17.280] 目前它在全球[00:17.280 --> 00:18.960] 已被应用于几十种适应症[00:18.960 --> 00:20.560] 仅在2019年[00:20.560 --> 00:23.000] 接受注射的就已超过620万例[00:23.000 --> 00:24.880] 但不要忘了[00:24.880 --> 00:26.780] 肉毒毒素更是一种神经毒素[00:26.780 --> 00:29.000] 还曾被当作生化武器使用... 省略 ...

    生成字幕

    我们可以使用ffmpeg将音频从视频中提取出来,然后使用whisper生成字幕,最后使用ffmpeg将字幕添加到视频中。

    使用如下命令提取音频:

    ffmpeg -i input.mp4 -vn -acodec copy output.aac

    然后使用whisper生成字幕,我们先在pycharm中创建一个test-whisper项目,并且把python解释器设置为Miniconda创建的whisper环境。创建一个main.py文件,写入如下代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    import whisper
    from whisper.utils import get_writer

    root = 'E:/'

    # 使用turbo模型
    model = whisper.load_model('turbo')
    prompt = '如果使用了中文,请使用简体中文来表示文本内容'

    # 选择声音文件,识别中文,并且打印详细信息
    result = model.transcribe(root + 'output.aac', language='zh', initial_prompt=prompt, verbose=True)
    print(result['text'])

    # 保存字幕文件
    writer = get_writer('srt', root)
    writer(result, 'output.srt')

    如上代码表示使用turbo模型,识别中文,打印详细信息,并且保存字幕文件。执行完毕之后我们可以在E:/目录下看到生成的字幕文件。

    最后我们使用ffmpeg将字幕添加到视频中:

    ffmpeg -i input.mp4 -i output.srt -c:s mov_text -c:v copy -c:a copy output.mp4

    之后我们在播放这个视频的时候就会有字幕了。

    参考

    video-subtitle-generator
    基于Anaconda的pytorch-cuda
    CUDA与cuDNN的安装与配置
    ffmpeg视频合并、格式转换、截图



沪ICP备19023445号-2号
友情链接