autosub github地址

安装依赖ffmpeg

使用依赖Google服务 (该项目是将autosub中依赖的google接口改为了baidu的接口,方便国内用户使用 )

使用方法:

autosub “音视频文件” -S “原视频语言” -D “字幕语言” -K “Google API KEY” -F “字幕格式”

如果原视频语言跟字幕语言不一致,则会使用Google Translate进行翻译。

支持输出的字幕格式

1
2
3
4
raw
json
vtt
srt

支持的语言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
af	Afrikaans  AF南非荷兰语
ar Arabic AR阿拉伯语
az Azerbaijani AZ阿塞拜疆
be Belarusian 是白俄罗斯
bg Bulgarian BG保加利亚
bn Bengali BN孟加拉语
bs Bosnian BS波斯尼亚
ca Catalan CA加泰罗尼亚
ceb Cebuano 宿务CEB
cs Czech CS捷克
cy Welsh CY威尔士
da Danish DA丹麦
de German 德德国
el Greek 埃尔希腊
en English EN英语
eo Esperanto EO世界语
es Spanish ES西班牙语
et Estonian 等爱沙尼亚
eu Basque 欧盟巴斯克
fa Persian FA波斯语
fi Finnish 芬兰科幻
fr French fr法语
ga Irish GA爱尔兰
gl Galician GL加利西亚
gu Gujarati 顾古吉拉特
ha Hausa 哈豪萨语
hi Hindi 喜印地文
hmn Hmong 苗族HMN
hr Croatian 小时克罗地亚
ht Haitian Creole 海地克里奥尔人
hu Hungarian 胡匈牙利
hy Armenian HY亚美尼亚
id Indonesian ID印度尼西亚
ig Igbo IG伊博
is Icelandic 是冰岛
it Italian 这意
iw Hebrew IW希伯来语
ja Japanese ja日语
jw Javanese JW爪哇
ka Georgian KA格鲁吉亚
kk Kazakh KK哈
km Khmer 高棉公里
kn Kannada KN卡纳达语
ko Korean ko朝鲜语
la Latin LA拉丁语
lo Lao 罗老
lt Lithuanian LT立陶宛
lv Latvian LV拉脱维亚
mg Malagasy 马达加斯加毫克
mi Maori MI毛利
mk Macedonian MK马其顿
ml Malayalam 毫升马拉雅拉姆语
mn Mongolian MN蒙古
mr Marathi 马拉先生
ms Malay MS马来语
mt Maltese MT马耳他
my Myanmar (Burmese) 我的缅甸(缅甸)
ne Nepali NE尼泊尔语
nl Dutch 荷兰NL
no Norwegian 没有挪威
ny Chichewa 纽约奇切瓦
pa Punjabi PA旁遮普
pl Polish pl波兰语
pt Portuguese PT葡萄牙语
ro Romanian RO罗马尼亚
ru Russian 俄罗斯RU
si Sinhala SI僧伽罗语
sk Slovak SK斯洛伐克
sl Slovenian SL斯洛文尼亚语
so Somali 所以索马里
sq Albanian 阿尔巴尼亚平方米
sr Serbian SR塞尔维亚
st Sesotho ST塞索托语
su Sudanese 苏苏丹
sv Swedish SV瑞典
sw Swahili SW斯瓦希里语
ta Tamil TA泰米尔
te Telugu TE泰卢固语
tg Tajik TG塔吉克
th Thai 日泰
tl Filipino TL菲律宾
tr Turkish TR土耳其
uk Ukrainian 英国乌克兰
ur Urdu UR乌尔都语
uz Uzbek UZ乌兹别克
vi Vietnamese 六越南
yi Yiddish 义意第绪语
yo Yoruba 哟约鲁巴
zh-CN Chinese (Simplified) zh-CN中文(简体)
zh-TW Chinese (Traditional) zh-TW中文(繁体)
zu Zulu 祖祖鲁

将字幕压制到视频上

1
2
3
4
5
ffmpeg  -i 1.mp4 -vf subtitles=1.srt output.mp4 

注意:ffmpeg编译时,应该已启用--enable-libass,不然无法压制字幕

如果压制完后字体有问题,则需要安装yum install fontconfig,且将Windows或mac上的字体拷贝到压制机器的系统里。

项目源码解析

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
extract_audio() 
从源文件中提取出flac格式的音频。

find_speech_regions()
使用python音频库audioop,将音频片段化。
该函数返回列表,包含有每个片段的开始时间和持续时间。

FLACConverter.__call__
按照上一步获取到的片段时间列表,使用ffmpeg把音频文件切割成为一个个小片段。

SpeechRecognizer.__call__
挨个把音频小片段,使用Google API识别出文字。

Translator.__call__
如果命令参数中,源语言跟目标语言不一样,则调用Google API进行翻译