英文视频添加中英双语字幕(基于Whisper语音识别和Google翻译)
第一步:安裝配置環(huán)境,這一步重要介紹安裝的環(huán)境依賴(lài),可以看完第二章再來(lái)看一遍
(1)Whisper環(huán)境配置
可以參考以下博客的內(nèi)容講顯卡驅(qū)動(dòng),CUDA和cudnn的安裝比較詳細(xì),我建議能用GPU加速就盡量使用,Whisper速度有點(diǎn)慢如何在你的電腦上完成whisper的簡(jiǎn)單部署_Wayne_WX的博客-CSDN博客?Windows使用whisper前需要進(jìn)行的一些環(huán)境配置https://blog.csdn.net/m0_52156129/article/details/129263703
我的ffmpeg是使用conda安裝的,命令如下(注意:需要安裝到自己創(chuàng)建的conda環(huán)境):
conda install -c conda-forge ffmpeg-python激活創(chuàng)建的conda環(huán)境,這里我的環(huán)境名是whisper
conda activate whisper檢查ffmpeg是否安裝成功?
ffmpeg -version顯示結(jié)果如下表明安裝成功,ffmpeg非常重要,在我們的處理后續(xù)也有應(yīng)用?
?(2)安裝以下依賴(lài)
? 可以將文件夾里mp4格式視頻批量轉(zhuǎn)換成mp3,多次測(cè)試發(fā)現(xiàn)Whisper處理mp3速度快些,缺啥安裝啥,慢地話(huà)可以換個(gè)國(guó)內(nèi)源
from moviepy.editor import * import os import filetype import argparse(3)Google翻譯環(huán)境依賴(lài)
兩種方法,可以使用googletrans
pip install googletrans==4.0.0rc1或者requests
pip install requests第二步:編寫(xiě)腳本主要有兩步
(1)批量將MP4格式視頻轉(zhuǎn)換成MP3
這里其實(shí)可以使用ffmpeg來(lái)做,我一開(kāi)始用的moviety庫(kù),后來(lái)發(fā)現(xiàn)ffmpeg也可以
參考了這里,代碼很詳細(xì)寫(xiě)地很好Python3 批量提取視頻中的音頻_python提取視頻中的音頻_流星蝴蝶沒(méi)有劍的博客-CSDN博客Python3 批量提取 視頻中的音頻https://blog.csdn.net/qq_44009311/article/details/124818112
?轉(zhuǎn)換好的Mp3文件便可以進(jìn)行語(yǔ)音識(shí)別提取了
(2)使用Whisper進(jìn)行語(yǔ)音轉(zhuǎn)文字并制作srt文件
首先你可以在MP3文件所在的文件夾內(nèi)打開(kāi)cmd,conda激活環(huán)境,使用
whisper 文件名.mp3也可以生成字幕文件,如果你只是要求英文字幕的話(huà)可以到此為止了,Whisper不支持翻譯成中文,只支持轉(zhuǎn)錄源語(yǔ)言或者將源語(yǔ)言翻譯成英文,如果獲取純中文字幕或者中英雙語(yǔ)字幕,你需要繼續(xù)看下去
1.了解Whisper的transcribe和Srt文件的格式
回想openai給出的官方python測(cè)試代碼
import whispermodel = whisper.load_model("base") result = model.transcribe("audio.mp3") print(result["text"])result具有眾多屬性,包括識(shí)別的文本,以及文本的開(kāi)始時(shí)間start和結(jié)束時(shí)間end,其他的對(duì)于我們本次任務(wù)沒(méi)有幫助故不介紹,那么我們這樣就可以輸出識(shí)別的每一句話(huà)的開(kāi)始和結(jié)束時(shí)間以及內(nèi)容
import whisper model = whisper.load_model("base") result = model.transcribe("13.mp3") for segment in result["segments"]:print(segment['start'])print(segment['text'])print(segment['end'])?這樣,輸出結(jié)果如上圖所示
另外需要了解srt文件的格式
第一行:編號(hào)(從0開(kāi)始)
第二行:起始時(shí)間,比我們常見(jiàn)的時(shí)分秒HH:MM:SS又多了一個(gè)逗號(hào)和三位數(shù)的毫秒單位
往后都是字幕部分,但是字幕到下一條字幕之間一定有空格。
?兩者對(duì)比可知,我們可以通過(guò)Whisper獲取字幕的文字內(nèi)容以及起始時(shí)間,核心時(shí)起始時(shí)間格式的轉(zhuǎn)換。然后可以使用f.write()的方法逐行寫(xiě)入srt文件即可
2.轉(zhuǎn)換時(shí)間格式
Whisper輸出的時(shí)間格式是帶小數(shù)點(diǎn)的,我們可以這樣來(lái)想:
第一步:使用字符串分割以小數(shù)點(diǎn)為分界點(diǎn),小數(shù)點(diǎn)左邊是秒,秒可以參考這里,轉(zhuǎn)換成時(shí)分秒的格式
Python時(shí)間轉(zhuǎn)換:X秒 --> 時(shí):分:秒_python 時(shí)分秒_zhu6201976的博客-CSDN博客Python 秒轉(zhuǎn)時(shí)分秒 思路實(shí)現(xiàn)https://blog.csdn.net/zhu6201976/article/details/126750272
第二步:小數(shù)點(diǎn)右邊的不足一秒的部分換成三位數(shù)毫秒
第三步:然后二者再進(jìn)行字符串相加即可
3.調(diào)用谷歌翻譯的兩種方法
參考這里即可,使用的時(shí)候要科學(xué)上網(wǎng)3種谷歌多語(yǔ)言翻譯接口的調(diào)用方法(Python)_谷歌翻譯接口_DooDoo~的博客-CSDN博客在日常的生活和工作中,我們經(jīng)常會(huì)需要使用到翻譯工具。在諸多翻譯工具中,我個(gè)人更青睞谷歌翻譯,因此在這里整理通過(guò)Python調(diào)用谷歌翻譯接口的3種方式。https://blog.csdn.net/qq_40039731/article/details/126239369
有一個(gè)問(wèn)題,多次嘗試發(fā)現(xiàn),對(duì)于長(zhǎng)視頻,翻譯字幕需要調(diào)用google翻譯非常多次,服務(wù)器會(huì)不穩(wěn)定導(dǎo)致報(bào)錯(cuò),建議使用ffmpeg或者SolveigMM Video Splitter軟件裁剪,ffmpeg慢些但是方便,個(gè)人推薦
進(jìn)入代裁剪視頻文件夾內(nèi)激活whisper環(huán)境,輸入如下命令即可裁剪視頻,-ss對(duì)應(yīng)的是起始時(shí)間?
有時(shí)間的可以看下這個(gè)做下最基本的入門(mén):
FFmpeg 最最強(qiáng)大的視頻工具 (轉(zhuǎn)碼/壓縮/剪輯/濾鏡/水印/錄屏/Gif/...)_嗶哩嗶哩_bilibili
有人說(shuō)可以長(zhǎng)視頻轉(zhuǎn)換成mp3使用ffmpeg裁剪,分別得到srt文件再合成一個(gè),但是這樣時(shí)間格式比較繁瑣,建議長(zhǎng)視頻直接裁剪幾個(gè)部分即可
4.寫(xiě)入文件存儲(chǔ)以及一個(gè)批處理思路
批處理文件夾內(nèi)眾多mp3文件可以使用,前提是你的mp3都已經(jīng)不太長(zhǎng),長(zhǎng)的mp3可能在谷歌翻譯時(shí)報(bào)錯(cuò),導(dǎo)致循環(huán)無(wú)法繼續(xù)執(zhí)行
#自己的Mp3文件所在的文件夾路徑inpath = r'E:\MP3'#讀取所有的mp3格式文件路徑mp3folder = glob.glob(os.path.join(inpath, "*.mp3"))for mp3 in mp3folder:excute('small',mp3)(3)字幕與視頻合成或使用播放器打開(kāi)外掛srt文件(推薦)
可以使用Potplayer播放器,我都放在了下載鏈接里,安裝即可可以打開(kāi)srt文件并方便地調(diào)整字幕的顏色、字體大小,位置等,到這里我們的工作就完成啦!
?注:下載內(nèi)容包括
(1)MP4文件批量轉(zhuǎn)換MP3文件代碼
(2)讀入MP3文件獲取SRT文件的代碼(兩個(gè)分別對(duì)應(yīng)兩種調(diào)用谷歌翻譯的方法)
(3)視頻剪輯SolveigMM Video Splitter軟件和Potplayer播放器
總結(jié)
以上是生活随笔為你收集整理的英文视频添加中英双语字幕(基于Whisper语音识别和Google翻译)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: PHP Class - 图片水印
- 下一篇: 干货 | 数字经济创新创业——数字技术创