音視頻字幕生成:基于 openai-whisper 提取音視頻文件文字

1 whisper
簡(jiǎn)介
Whisper
由 OpenAI 在2022年9月21日開(kāi)源,號(hào)稱其英文語(yǔ)音辨識(shí)能力已達(dá)到人類(lèi)水準(zhǔn)。Whisper
是一種通用的語(yǔ)音識(shí)別模型,它是在不同音頻的大型數(shù)據(jù)集上訓(xùn)練的,也是一個(gè)多任務(wù)模型,可以執(zhí)行多語(yǔ)言語(yǔ)音識(shí)別、語(yǔ)音翻譯和語(yǔ)言識(shí)別。
2 whisper
環(huán)境配置
2.1 安裝 whisper
首先需要安裝 python
環(huán)境。這里需要特別注意版本問(wèn)題,Whisper
當(dāng)前支持的版本范圍為 python 3.8~3.10
,版本過(guò)高會(huì)導(dǎo)致版本檢測(cè)失敗,過(guò)低則安裝腳本執(zhí)行過(guò)程各種報(bào)錯(cuò)。官方當(dāng)前使用的是 3.9.9
版本。
? python@3.9.9下載(阿里云鏡像)[1]
? Macbook 安裝和配置 Python3[2]
2.2 安裝 ffmpeg
whisper
在視頻和語(yǔ)音處理上依賴于 ffmpeg
,所以需要安裝 ffmpeg
并設(shè)置到環(huán)境變量中。
ffmpeg
作為一款開(kāi)源基礎(chǔ)工具,官方的 release 文件都在 github releases
上自動(dòng)構(gòu)建和發(fā)布,國(guó)內(nèi)下載很容易失敗??梢酝ㄟ^(guò)使用包管理工具等方式進(jìn)行安裝。示例:
? FFmpeg releases[3]
? https://lzw.me/search/ffmpeg
2.3 安裝 rust
(按需可選)
如果是非常見(jiàn)的機(jī)型和操作系統(tǒng)(如信創(chuàng)類(lèi)機(jī)型),可能官方?jīng)]有直接提供基于 rust
開(kāi)發(fā)分詞器的預(yù)構(gòu)建文件,此時(shí)就需要實(shí)時(shí)編譯了,那么則安裝 rust
編譯環(huán)境,具體步驟請(qǐng)參考 rust
文檔:
https://www.rust-lang.org/learn/get-started
3 Whisper
的使用
3.1 語(yǔ)言模型
SizeParametersEnglish-only modelMultilingual modelRequired VRAMRelative speed
tiny39 Mtiny.en
tiny
~1 GB~32x
base74 Mbase.en
base
~1 GB~16x
small244 Msmall.en
small
~2 GB~6x
medium769 Mmedium.en
medium
~5 GB~2x
large1550 MN/Alarge
~10 GB1x
默認(rèn)會(huì)使用 small
模型,可使用 --model <size>
指定。若模型數(shù)據(jù)不存在,則會(huì)先自動(dòng)下載并保存在緩存目錄下。緩存目錄的默認(rèn)位置為 ~/.cache/whisper
,也可以通過(guò)參數(shù) --model_dir
指定。
3.2 命令行中使用 whisper
示例

對(duì)于英文類(lèi)音視頻輸出的結(jié)果會(huì)是英文,可以借助在線工具或開(kāi)源庫(kù)、商業(yè) API 等方式,將英文字幕翻譯為中文,從而實(shí)現(xiàn)為無(wú)字幕視頻自動(dòng)生成字幕。一些相關(guān)參考:
? https://www.nikse.dk/subtitleedit/online
? https://github.com/argosopentech/argos-translate
? https://github.com/Helsinki-NLP/Opus-MT
對(duì)于中文資源可能會(huì)包含繁體字,這是沒(méi)有參數(shù)可以支持調(diào)整的。我們可以借助第三方簡(jiǎn)繁體轉(zhuǎn)換工具做一些轉(zhuǎn)換。一些參考:
? 簡(jiǎn)體、繁體、火星文在線互相轉(zhuǎn)換工具[4]
? OpenCC: 中文簡(jiǎn)繁轉(zhuǎn)換開(kāi)源項(xiàng)目[5]
? 功能全面的漢字工具庫(kù)[6]
3.3 在 python
程序中使用 whisper
3.4 在 Node.js 等其他語(yǔ)言中使用 whisper
由于 whisper
安裝配置完成后在全局環(huán)境變量中可用,可以直接以 shell
程序調(diào)用的方式在所有編程語(yǔ)言中使用。以 Node.js
為例:
4 總結(jié)與參考
由于 whisper
能夠提供比較準(zhǔn)確的音視頻語(yǔ)言識(shí)別與提取支持,它給音視頻資源提供了程序化處理的支持。在此基礎(chǔ)上,可以實(shí)現(xiàn)一些音視頻資源處理的上層應(yīng)用。
例如實(shí)現(xiàn)各種語(yǔ)言類(lèi)型音視頻資源的字幕生成?;?whisper
翻譯輸出其原始語(yǔ)言或英文的字幕,再使用其他三方工具翻譯為目標(biāo)語(yǔ)言即可。
再例如實(shí)現(xiàn)對(duì)音頻和視頻的程序化檢索。對(duì)于一些歷史保存的沒(méi)有文本介紹、文本介紹較少或錯(cuò)誤的語(yǔ)音資料,都可以對(duì)其做程序化處理提取文本信息并歸檔入庫(kù),進(jìn)而實(shí)現(xiàn)實(shí)時(shí)檢索功能。
擴(kuò)展參考:
? https://github.com/openai/whisper
? https://github.com/chidiwilliams/buzz
? https://www.npmjs.com/package/whisper-node
? python@3.9.9下載(阿里云鏡像)[7]
? Macbook 安裝和配置 Python3[8]
? https://www.nikse.dk/subtitleedit/online
? https://github.com/argosopentech/argos-translate
? https://github.com/Helsinki-NLP/Opus-MT
? https://blog.csdn.net/nikolay/article/details/128951413
? https://techpro.ninja/whisper-openai-tutorial-with-python-nodejs/
? https://zhuanlan.zhihu.com/p/617770448
引用鏈接
[1]
python@3.9.9下載(阿里云鏡像): https://registry.npmmirror.com/binary.html?path=python/3.9.9/[2]
Macbook 安裝和配置 Python3: https://lzw.me/a/mac-book-install-python3.html[3]
FFmpeg releases: https://github.com/BtbN/FFmpeg-Builds/releases[4]
簡(jiǎn)體、繁體、火星文在線互相轉(zhuǎn)換工具: https://lzw.me/x/s2t/[5]
OpenCC: 中文簡(jiǎn)繁轉(zhuǎn)換開(kāi)源項(xiàng)目: https://github.com/BYVoid/OpenCC[6]
功能全面的漢字工具庫(kù): https://github.com/theajack/cnchar[7]
python@3.9.9下載(阿里云鏡像): https://registry.npmmirror.com/binary.html?path=python/3.9.9/[8]
Macbook 安裝和配置 Python3: https://lzw.me/a/mac-book-install-python3.html