在 EC2 以 Cloud Init 安裝 OpenAI Whisper 模型,支援多國語並以 GPU 加速 AI 模型自動辨識字幕,可直接嵌入字幕到影片中

以 OpenAI Whisper 配合 EC2 的 GPU 加速,高效地使用 Whisper AI 模型辨識高品質的影片、錄音高品質字幕辨識,並編譯支援 CUDA 加速的 ffmpeg 來節省後續轉檔、嵌入字幕的時間

前陣子因為一些需求需要幫某些影片上字幕,後來發現有 Whisper 這個好東西,幾分鐘內就可以產生正確度極高的字幕檔案;由於 Whisper 本身是免費的,唯一的費用來自 EC2 ,要節省費用可以直接在 EC2 開一台 g5.xlarge 的 Spot Instance 幾分鐘就跑完,非常方便划算省時,EC2 可以用完就丟直接砍掉。

使用須知

在此我以 g5.xlarge 主機進行測試,約 10 分鐘可以完全安裝完畢;不只 Whisper 支援 NVIDIA GPU 加速,連 ffmpeg 都編譯好 GPU 版本完全榨乾 GPU 的性能;在使用時需選擇帶有 pytorch 的 Amazon Linux 2023 的 AMI,可以省去安裝 NVIDIA 驅動、CUDA 等時間。

想要最省錢的話,建議選 us-east-1 等大區域資源充足費用比起 ap-northeast-1 等區域便宜不少,並且啟動 EC2 時勾選 Spot Instance 可以節省更多費用但缺點可能隨時被終止,由於臨時性的上字幕不是什麼需要長久穩定執行的服務尚可接受,還請自行研究一下 Spot Instance 的機制。

userdata

#!/bin/bash -xe

dnf install wget git nasm libassuan-devel freetype-devel fribidi-devel fontconfig-devel python3 python3-pip -y
dnf install google-noto-sans-cjk-ttc-fonts -y
dnf install kernel-devel-$(uname -r) kernel-headers-$(uname -r) -y

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PATH="/opt/pytorch/bin:/opt/pytorch/cuda/bin:$PATH"

cd /root/
git clone https://github.com/libass/libass.git

cd libass
./autogen.sh
./configure --prefix=/usr/local
make -j$(nproc)
automake --add-missing
make install
ldconfig
pkg-config --modversion libass


cd /root/
git clone https://git.videolan.org/git/x264.git
cd x264
./configure --enable-shared --prefix=/usr/local
make -j$(nproc)
make install
ldconfig


cd /root/
git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git
cd nv-codec-headers
make install


cd /root/
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg/
cd ffmpeg
./configure \
  --enable-nonfree \
  --enable-gpl \
  --enable-openssl \
  --enable-cuda-nvcc \
  --enable-nvenc \
  --enable-libx264 \
  --enable-libass \
  --extra-cflags=-I/usr/local/cuda/include \
  --extra-ldflags=-L/usr/local/cuda/lib64 \
  --disable-static \
  --enable-shared

make -j$(nproc)
make install
ldconfig


## Whisper
sudo -u ec2-user /opt/pytorch/bin/pip install --upgrade pip
sudo -u ec2-user /opt/pytorch/bin/pip install openai-whisper
sudo -u ec2-user /opt/pytorch/bin/pip uninstall pynvml -y
sudo -u ec2-user echo 'export PATH="/opt/pytorch/bin:/opt/pytorch/cuda/bin:$PATH"' >> ~ec2-user/.bashrc

在開機時請記得打開 Advanced details 選項直接在 User data 中貼入並啟動;Spot Instance 也是在這邊選取。 想看安裝進度的話,SSH 連入後執行以下指令即時輸出進度:

tail -f /var/log/cloud-init-output.log

使用方式

都已經使用 GPU 機型了,建議直接開到 large-v2 甚至 large-v3 可以獲得更佳的精準度:

whisper 影片名稱.mp4  --model large-v2

Whisper 還支援翻譯功能,指令參數請自行參考 Github 的說明

使用 ffmpeg 嵌入字幕

上面已經編譯了 GPU 版的 ffmpeg 並安裝字體了,可以直接使用以下指令把字幕嵌入影片中,這個 FontSize=28 適合 1080P 的影片,若更高畫質的影片請自行調整字體大小:

ffmpeg -hwaccel cuda -i 影片.mp4 -vf "subtitles=字幕.sbv:force_style='FontName=Noto Sans CJK TC,FontSize=28,Outline=2'" -c:v h264_nvenc -preset slow -c:a copy 影片字幕版.mp4

本機 Linux 使用

當然如果不想用 EC2 的話,也是可以在本機 Linux 環境中使用的,過程大同小異,但需要手動安裝一下 CUDA,過程中應該會自己幫您安裝好 NVIDIA 驅動;建議可以選 Fedora、Rocky 支援 dnf 套件庫的發行版,這樣你就可以直接無痛使用上面的 userdata ,載下來手動安裝。

updatedupdated2025-12-312025-12-31