python使用autosub3快速为音视频自动生成字幕
Python 2023-07-06
影片加字幕其实是一件非常耗费时间的事情,尤其是对于打字慢的朋友来说。当然不光为影片加字幕,在其他领域,类似的逐字稿也是工作中避免不了的内容。比如写论文,如果内容中有访谈,就必须要附上逐字稿,又或者是会议的记录等等。本次使用基于Python3的AutoSub库对实时语音进行识别,然后再通过GoogleTranslation的在线API接口对语音识别后的内容进行翻译,这样就可以得到一份双语字幕(逐字稿),这里的双语不只针对国语+英语组合,也可以包含其他国家,包括小语种地区,非常方便。
首先需要安装ffmpeg,这个软件在之前有过介绍,下载地址:ffmpeg.exe,记得添加到系统环境变量。
其后安装autosub,这个库其实就是针对Google的语音识别封装而成的,最早基于Python2,近几年也出现很多“魔改版”,这里推荐尽量安装原版的基于Python3的最新版,而使用pip直接install往往无法安装最新版,所以这里推荐用git版本库地址的方式进行安装,这样可以避免很多坑:
pip install autosub3
安装成功后,输入命令:
autosub -h
就可以看到使用说明:
使用方法非常简单,将你的视频或者音频放入项目文件夹,输入命令
(注意:这是cmd代码,不是python代码)
autosub -S zh-CN -D zh-CN 视频/音频路径
这里假设你视频中的语言是国语,当然也可以是其他国别,这里是支持语言代码:
af Afrikaans
ar Arabic
az Azerbaijani
be Belarusian
bg Bulgarian
bn Bengali
bs Bosnian
ca Catalan
ceb Cebuano
cs Czech
cy Welsh
da Danish
de German
el Greek
en English
eo Esperanto
es Spanish
et Estonian
eu Basque
fa Persian
fi Finnish
fr French
ga Irish
gl Galician
gu Gujarati
ha Hausa
hi Hindi
hmn Hmong
hr Croatian
ht Haitian Creole
hu Hungarian
hy Armenian
id Indonesian
ig Igbo
is Icelandic
it Italian
iw Hebrew
ja Japanese
jw Javanese
ka Georgian
kk Kazakh
km Khmer
kn Kannada
ko Korean
la Latin
lo Lao
lt Lithuanian
lv Latvian
mg Malagasy
mi Maori
mk Macedonian
ml Malayalam
mn Mongolian
mr Marathi
ms Malay
mt Maltese
my Myanmar (Burmese)
ne Nepali
nl Dutch
no Norwegian
ny Chichewa
pa Punjabi
pl Polish
pt Portuguese
ro Romanian
ru Russian
si Sinhala
sk Slovak
sl Slovenian
so Somali
sq Albanian
sr Serbian
st Sesotho
su Sudanese
sv Swedish
sw Swahili
ta Tamil
te Telugu
tg Tajik
th Thai
tl Filipino
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
yi Yiddish
yo Yoruba
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
zu Zulu
也就是说,如果你下载了小语种国家的电影,但是不知道里面在讲些什么,也可以依赖这个库进行语音识别。
识别过程可能会有些慢,这取决于你的视频/音频的体积大小
如果想快一点,可以为autosub库手动加上自己的代理服务,打开autosub源码中的__init__.py文件,大概在99行左右使用requests库请求接口时加上proxies。
try:
resp = requests.post(url, data=data, headers=headers, proxies={
'http': 'http://127.0.0.1:4780',
'https': 'https://127.0.0.1:4780'
})
except requests.exceptions.ConnectionError:
continue
识别结束后,就会将语音转储成为可见的字幕文件:
0
00:00:00,150 --> 00:00:04,380
比如现在线上怎么样是可以访问的的
1
00:00:04,381 --> 00:00:08,520
但是假设我干嘛改了你怎么办
2
00:00:08,521 --> 00:00:09,660
你还得重新打吧
3
00:00:09,661 --> 00:00:15,930
其实并不需要对有点像我们手机应用有些应用
4
00:00:15,931 --> 00:00:17,160
它是更新版本的时候
5
00:00:17,161 --> 00:00:18,660
你说要重复重新安装
6
00:00:20,010 --> 00:00:20,610
没印象
当然了,有些句子或者词汇并不准确,可能需要手工修改一下,为了让你的字幕更加精准,这样的修改工作是避免不了的。