AiSrt:借助人工智能翻译、提取和转录你的字幕
一款免费工具,让视频以29种语言变得人人可访问,服务于聋人、听力障碍者以及所有多语言内容爱好者
你有一段带英文字幕的视频,想把它们翻译成法语、西班牙语、阿拉伯语或日语?或者一部完全没有字幕的电影,你想从中导出一个 .srt?我写 AiSrt,正是为了这个。
AiSrt 是一款命令行工具,依靠 AI 来翻译你的字幕文件 .srt,提取视频文件中已经内嵌的字幕轨道,并将视频音频直接转录成字幕。三个功能都在同一个二进制文件里。
翻译时,你可以在五个引擎之间选择。OpenAI、Anthropic(Claude)、Google(Gemini)和 xAI(Grok)的 API,每部电影只要花几分钱。或者使用运行在你自己机器上的 Ollama 服务器:免费、离线、不需要密钥,也不需要账号。你的字幕不会离开硬盘。
如果视频不包含任何字幕,AiSrt 就会使用 Whisper,也就是 OpenAI 的语音识别模型,它会自动把音频轨道转换成 .srt。说真的,我第一次看到一场一小时的演讲在我一行字都没输入的情况下自动生成字幕时,心里还真有点触动。
这个版本的新功能:现在也能读取 Blu-ray 字幕了,它们不是文本,而是图像。AiSrt 会对它们进行解码,将其交给字符识别引擎,然后再让 AI 校对结果。我稍后会再讲这个,这是我最满意的部分。
为什么是 AiSrt?
- 无障碍优先。聋人和听力障碍者应该能够轻松访问视频内容。生成和翻译字幕应该只需要几分钟,而不是耗上一整个晚上。
- 29种语言。阿拉伯语、德语、英语、中文、韩语、丹麦语、西班牙语、芬兰语、法语、希腊语、印地语、希伯来语、匈牙利语、印度尼西亚语、意大利语、日语、马来语、荷兰语、挪威语、波兰语、葡萄牙语、罗马尼亚语、俄语、瑞典语、捷克语、泰语、土耳其语、乌克兰语和越南语。
- 理解上下文的翻译。这就是它和逐字翻译的全部区别:习语、幽默和双关语的处理效果好得多。
- 一个工具,三个功能:翻译、提取、转录。
- 连图像字幕也能处理。Blu-ray 的 PGS 字幕轨道会通过字符识别读取,然后再由 AI 校对,纠正 OCR 看错的内容。
- 五个翻译引擎可选。OpenAI、Claude、Gemini、Grok 或 Ollama,使用你自己的密钥,只需一个选项就能切换。
- 想免费离线使用也可以。在你的机器上安装 Ollama 后,翻译不花钱,不需要密钥,也不会把任何东西发送到别处。对于那些你不想经由第三方服务传输的内容,这很方便。
- 旁边什么都不用安装。这个二进制文件是独立的,不需要下载 .NET runtime,里面全都有。ffmpeg 和 whisper.cpp 也会在 Windows 和 Linux 下需要时自动获取。
- Windows 下支持 NVIDIA 加速。如果 AiSrt 检测到你的显卡,它就会切换到 whisper 的 CUDA 版本,转录速度会明显更快。
安装
前提条件
其实没有任何强制要求。提取和转录不需要密钥,不需要账号,也不会向任何地方发送任何东西。
翻译时,你需要四个付费服务之一的密钥(OpenAI、Anthropic、Google 或 xAI),或者在你的机器上安装Ollama,它是免费的并且支持离线使用。接下来的两个部分分别说明这两种方式,选你方便的就好。
只有一种情况需要额外工具:字幕本身是图像。这时需要Tesseract,由你自己安装。执行一条命令,以后就永远搞定了。
不需要安装 runtime:每个压缩包都包含适用于你系统的独立可执行文件。
- 下载与您的机器相对应的归档文件:Windows x64、Linux x64,或 macOS(Apple Silicon M1 到 M4,或 Intel x64)。
- 将其解压到您选择的文件夹中。
- 可选:将此文件夹添加到您的环境变量
PATH中,这样就能从任意终端调用aisrt。
在 macOS 下,如果系统拒绝启动二进制文件,请在该文件夹中打开终端并执行 chmod +x aisrt,然后执行 xattr -cr aisrt。macOS 版本经过签名和公证,所以原则上您不应该需要这些操作。
在您选择的服务那里申请一个 API 密钥
再说一次:这只是用于翻译。
- 前往 platform.openai.com 并创建账户,或者登录。
- 从右上角的个人资料菜单中进入 API Keys。
- 点击 Create new secret key。
- 给它取个名字,比如 AiSrt,然后确认。
- 马上复制密钥,它之后再也不会显示。
- 将它粘贴到
appsettings.json中,替换"OPENAI_KEY":
{
"OpenAI": {
"ApiKey": "sk-votre-cle-api-ici",
"Model": "gpt-5-mini",
"Temperature": 1
}
}这个文件位于可执行文件旁边。安装 AiSrt 后,在 Windows 下会从 %LOCALAPPDATA%\AiSrt\appsettings.json 读取它,在 Linux 和 macOS 下则从 ~/.config/aisrt/appsettings.json 读取。
小提示:您也可以把密钥单独保存在一个 .env 文件中。在 appsettings.json 中设置 "UseSecretEnvFile": true,指明文件路径,然后在里面写入这一行 OPENAI_KEY=sk-votre-cle-api-ici。我在家就是这么做的,这样可以避免把密钥带在一个我们毫不思考就共享的配置文件里。
费用:OpenAI 按使用量收费,而一条字幕消耗非常少。使用 gpt-5-mini 翻译一整部电影只需几分钱。
如果您更喜欢 Claude、Gemini 或 Grok
从这个版本开始,OpenAI 不再是唯一的付费服务。还有另外三个服务做的事情完全一样,只需使用你自己的密钥:Anthropic 用于 Claude,Google AI Studio 用于 Gemini,以及 xAI 用于 Grok。各处的操作都一样:你创建一个账号,生成一个密钥,把它粘贴到 appsettings.json 里。
每个服务都有自己的配置段,默认模型也已经填好了:
{
"Translation": { "Provider": "anthropic" },
"Anthropic": { "ApiKey": "sk-ant-votre-cle", "Model": "claude-haiku-4-5" },
"Gemini": { "ApiKey": "votre-cle", "Model": "gemini-3.6-flash" },
"Xai": { "ApiKey": "xai-votre-cle", "Model": "grok-4.5" }
}如果想试用某个服务而不碰配置文件,还有 --provider 这个选项:
aisrt "film.srt" -t fr --provider anthropic
aisrt "film.srt" -t fr --provider gemini
aisrt "film.srt" -t fr --provider grok常用名称也可以用,所以 claude、google、grok 和 gpt 和官方名称一样好用。我把它们加进去,是因为我自己每两次就会搞错一次。
有个细节让我花了一个晚上:每个服务都接受两个环境变量名称来存放密钥,比如 ANTHROPIC_API_KEY 或 CLAUDE_API_KEY。我在自己的 .env 文件里填的是模型名称,而不是公司名称,AiSrt 就很客气地告诉我密钥不存在。它明明就在,只是用了它不会查看的名称。
最后一件事,这一点对四个服务都适用:如果密钥是错的,如果账号里没有余额,或者模型不存在,AiSrt 会在开始之前就说出来,并指出需要修改的配置文件行。不会再出现电影翻译到一半时崩溃的情况。
或者:用 Ollama 在自己的电脑上免费翻译
不想创建 OpenAI 账号,也不想让你的文件发给第三方?安装 Ollama,它可以直接在你的电脑上运行语言模型。免费,不限量,模型下载完成后无需互联网连接也能运行。
三个步骤:
# 1. Installer Ollama depuis ollama.com, puis demarrer le serveur
ollama serve
# 2. Telecharger le modele livre par defaut
ollama pull gpt-oss:20b
# 3. Traduire, en local
aisrt "film.srt" -t fr --provider ollama选项 --provider 只对当前命令生效。要是你想让 Ollama 成为默认引擎,就把 "Provider": "ollama" 放进 appsettings.json 的 Translation 部分,这样你以后就不用再操心了。
该选哪个模型? 我测试了好几个,答案让我挺意外。一个本地模型必须严格遵守输出格式,每收到一个块就输出一个翻译块,按顺序,不加评论。有些模型完全做不到这一点:qwen2.5 在字幕中间夹进中文评论,三次测试每次都这样,就算我把它限制得再严格也没用。这个没法用。llama3.1:8b 表现很好,速度大约快十倍。gpt-oss:20b 是我默认提供的模型,因为在我的测试中它从来没有漏掉过一个块,但它明显更重(大约 14 Go),速度也更慢。
我们坦诚面对这个取舍:本地运行免费但慢,质量也还是比不上 gpt-5-mini 的输出。要是你今晚就要看一部电影,三分钱的 OpenAI API 用起来更舒服。要是你想处理完整一季而不用盯着计数器,或者内容比较敏感,Ollama 就有意思了。
有件事让我浪费了不少时间,现在替你省掉:AiSrt 通过 Ollama 的原生 API 与它通信,并为它设置了足够大的上下文窗口。如果走 Ollama 的 OpenAI 兼容层,这个设置会被忽略,模型会不声不响地截断回答,最后生成的文件里就会缺少一些块。这个已经替你处理好了,但这也解释了为什么本地运行时批次更小(10 个块,而不是 40 个)。
在它开始运行之前发生了什么
启动时会执行两项检查,它们帮我避免了不少恼火的情况。
第一个会检查你提供的文件。如果你忘了选项,输入 aisrt film.mkv,AiSrt 会告诉你这是一个视频,并提示你使用 --extract 或 --transcribe。以前,它会把二进制文件当作文本读取,然后原样发送给 AI,AI 则会因为请求大小返回一条让人摸不着头脑的错误信息。顺带一提,如果你给它的字幕不是 .srt 格式的(而是 .ass、.vtt 或 .sub),它会自动用 ffmpeg 转换,然后接着进行翻译。
第二个会在发送任何内容之前,检查翻译引擎是否有响应。密钥无效、账户没有额度、Ollama 服务器没有启动、模型还没下载:每种情况都有自己的提示信息和修复命令。最糟糕的事情莫过于启动六条轨道的提取,出去喝杯咖啡,回来却发现六条一模一样的错误。
使用指南
基本语法
aisrt [<fichier>] [options]所有选项
| 选项 | 描述 | 默认值 |
|---|---|---|
<file> | 要翻译的 .srt 文件,或与 --extract 和 --transcribe 一起使用的视频文件 | 无 |
-t, --target <code> | 目标语言的代码 | fr |
-s, --source <code> | 源语言的代码 | en |
--languages | 显示 29 种语言及其代码 | 无 |
--streams | 列出视频的字幕轨道,不提取任何内容 | 无 |
--extract | 提取视频的字幕轨道,通过交互式选择。图像轨道通过 OCR 读取 | 无 |
--transcribe | 使用 whisper.cpp 将视频音频转录为 .srt | 无 |
-p, --provider <nom> | 翻译引擎:openai、anthropic、gemini、xai 或 ollama | appsettings.json 中的那个 |
--stream <n|all> | 与 --extract 一起使用:要提取的轨道,不经过菜单 | 无 |
-tt, --translate-to <code> | 与 --extract 或 --transcribe 一起使用:翻译结果,不询问任何内容 | 无 |
-m, --model <nom> | 与 --transcribe 一起使用:whisper 模型,不经过菜单 | 无 |
-al, --audio-language <code> | 与 --transcribe 一起使用:视频中所说的语言 | 由 whisper 检测 |
-ni, --non-interactive | 不提出任何问题,应用默认值 | 无 |
--version | 显示版本 | 无 |
-h, --help | 显示帮助 | 无 |
注意不要把复数形式的 --streams 和单数形式的 --stream 混淆,前者只负责列出轨道,后者则选择一条轨道来提取。只差一个字母,效果却大不相同。我犹豫过要不要改名,后来还是算了:这两个名字就是自然而然会想到的名字。
1. 翻译字幕
主要功能,也是我用得最多的功能:
# Traduire de l'anglais vers le français (comportement par défaut)
aisrt "film.srt"
# Traduire de l'anglais vers l'espagnol
aisrt "film.srt" -s en -t es
# Traduire du français vers le japonais
aisrt "film.fr.srt" -s fr -t ja翻译后的文件名会带上目标语言的代码:film.fr.srt、film.es.srt,以此类推。之前的输出文件如果已经存在,会先复制成 .bak.srt,然后再覆盖写入。
翻译会按每批 40 个区块进行,每一批返回后就立即写入磁盘。下面是我翻译一整部电影时的情况:
598 个区块分成 15 批,你可以看到右侧累计的时间:每批大约一分钟,整部电影不到十五分钟。如果在第 13 批时中断,重新运行同一条命令就会从第 13 批继续。
2. 列出视频中的轨道
提取之前,可以先看看文件里有什么:
aisrt --streams "film.mkv"你会得到一张表,其中包含每条轨道的流编号、语言、编码格式和类型,文本或位图。
3. 从视频中提取字幕
许多 MKV 和 MP4 本来就带有字幕。与其重新制作,不如直接把它们取出来:
aisrt --extract "film.mkv"菜单会让你选择一条轨道,或者一次性全部提取。文本格式都支持(SRT、ASS、SSA、WebVTT、mov_text)。PGS 轨道,也就是蓝光里的那些轨道,是图像:现在会通过字符识别来读取它们,下一节会专门讲这个。DVD 和数字电视里的轨道还不能解码,但 AiSrt 会明确告诉你,而不是默默跳过它们。提取完成后,它会直接提议翻译每条轨道,起始语言使用轨道本身的语言。
注意:如果你的机器上还没有 ffmpeg,Windows 和 Linux 下会自动下载。macOS 下,请使用 brew install ffmpeg 安装。
4. 将音频转录为字幕
视频里完全没有字幕?那就用 whisper.cpp 来生成:
aisrt --transcribe "film.mkv"第一次启动时,AiSrt 会问你要使用哪个语音识别模型:
- base.en,约 150 Mo:速度快,识别发音清晰的英语效果不错
- small.en,约 500 Mo:各方面都比较平衡
- medium.en,约 1,5 Go:更准确,但更慢
- base、small、medium:大小相同,但支持多语言
- large-v3,约 3 Go:最准确,支持多语言,也是最慢的
如果你已经知道自己想要什么,可以用 --model 跳过这个菜单。
转录英语以外的内容
以前,AiSrt 默认你给它的是英语,这真是个糟糕透顶的主意:一段法语演讲会在毫无提醒的情况下变成不太靠谱的英语字幕,如果你接着进行翻译,得到的就是从英语重新翻译回来的法语,拿你自己的视频玩了一场传话游戏。
现在,whisper 会检测说的是什么语言,而 AiSrt 会直接读取它的结果,你什么都不用声明,生成的文件也会带上正确的语言代码,如果你知道自己在做什么,也可以使用多语言模型强制指定:
aisrt --transcribe "film.mkv" --audio-language fr --model base生成的文件会叫做 film.fr.srt,如果你接着进行翻译,AiSrt 就知道起点是法语。
有个坑我花了一阵子才弄明白:名称以 .en 结尾的模型只用英语训练,把法语音频给它们,它们不会抗议,反而会一本正经地还给你一堆英语语音,这是那种只有读文件时才会发现的结果,所以 AiSrt 会在启动任何操作之前拒绝这个组合,并列出适用的模型。
在 Windows 和 Linux 下,AiSrt 会自己下载 whisper,在 Windows 下,它还会检测 NVIDIA 显卡并选择 CUDA 版本,速度快得多。
在 macOS 下,还得多走一步,whisper.cpp 项目没有为它发布命令行可执行文件,只有一个给 Apple 开发者使用的 framework:所以没法自动下载任何东西,解决办法就一条命令:
brew install whisper-cpp ffmpegAiSrt 接着会去寻找系统中已经安装的工具,并原样使用它们,我手头没有 Mac 来从头到尾跑一遍这个流程,所以如果你用的是 macOS,遇到问题就给我写信,我很感兴趣。
由图像组成的字幕
从 Blu-ray 中提取一条字幕轨道,你得到的不是文本,而是图像,每句对白一张,格式叫 PGS,光盘存储的不是文字,而是文字的照片,这对于保留电影中的字体和精确位置很方便,但只要想翻译就惨了:没有任何东西可以翻译,只有像素。
到目前为止,AiSrt 只会礼貌地告诉你它不会处理这个,现在它会了。
启动命令时会发生什么
没什么新东西要输入,还是之前的同一条命令:
aisrt --extract "film.mkv"如果您选择的是图像轨道,AiSrt 会连续执行三个步骤,它会用 ffmpeg 从容器中取出原始轨道,它自己解码图像,每条字幕解码一张,同时取回光盘写入的显示时刻,然后把所有内容一次性传给Tesseract,一个字符识别引擎(也就是从图像上重新读取文字的软件)。
Tesseract 的语言文件会自动下载,使用轨道声明的语言,法语轨道获取法语,日语轨道获取日语,您什么都不用选。
Tesseract 得自己安装
这是 AiSrt 不会替您查找的唯一一个依赖,而且这是有意为之,ffmpeg 和 whisper 发布的是我可以妥善下载的独立可执行文件,Tesseract 不是:它使用的是系统安装程序,而每个平台都不一样,一条命令就够了:
# Windows
winget install tesseract-ocr.tesseract
# Linux
sudo apt install tesseract-ocr
# macOS
brew install tesseract有个小插曲让我浪费了半个小时:在 Windows 下,这个安装程序不会把 Tesseract 放进PATH,所以 AiSrt 回复我说找不到这个工具,还建议我运行刚刚才运行过的那条命令,一个没有出口的循环,AiSrt 现在会去安装程序实际放置二进制文件的目录里查找。
AI 重新校对 OCR 读出的内容
字符识别引擎总是会犯同样的错误,把大写字母 I 读成竖线,把 r 后面的 n 读成 m,吞掉一个重音符号,放在整部电影里,最后就会看得出来。
于是 AiSrt 会把识别出的文字发回您的翻译服务,并附上一条明确的指令:纠正读取错误,不要翻译任何内容,不要改写任何内容,不要缩短任何内容,这是校对,不是重写,在我拿来测试的一段电影的 100 条字幕中,有 14 条被纠正,86 条本来就是对的,没有一条被移动,也没有一条是凭空编出来的。
这道保险措施比功能本身更重要,所以我详细说说它,只有在修改结果仍然接近识别内容时,修改才会被接受:如果模型决定翻译一句台词,就会被直接扔掉,而如果返回的文本数量和发送出去的文本数量不完全相同,整批结果都会被放弃,并保留原始文字,我宁愿要一条能看见错字的字幕,也不要一条完美地贴在错误台词上的字幕。
这个校对默认开启,并且使用已经负责翻译的那个服务,您可以在appsettings.json中关闭它,或者交给另一个服务,而如果没有配置任何密钥,也不会发生什么严重的事:OCR 文字会原样写入,AiSrt 会告诉您,提取过程也会正常结束。
如果不去找,我永远也不会发现的 bug
很多光盘会让字幕渐隐渐现,为此,它们不会发送一张新图像,而是复用同一张图像,只改变它的透明度,AiSrt 把这个变化当成了字幕结束。
结果是:一条显示了四秒的字幕会变成三段,第一段持续一秒,另外两段太淡了,无法重新读取,于是被丢弃,我的测试文件里没有一个会渐隐渐现,所以我特意构造了这个情况来看看,之前是三段,之后是一条时长正确的字幕。
现在 AiSrt 会在连续的渲染结果中保留文字最清晰的那一张,渐隐渐现开始时和结束时都是透明的:第一张和最后一张都不是正确选择。
目前还不能正常工作的部分
DVD 和 TNT 的图像字幕还无法解码,与每张图像都独立存在的 PGS 不同,这些格式需要结合文件其他位置存放的信息来读取,这是另一个工程,不是这个工程的扩展,在此之前,AiSrt 会识别出它们并提醒您,而不是默默忽略它们。
从原始视频到翻译字幕的完整流程
# Étape 1 : transcrire l'audio anglais
aisrt --transcribe "conference.mp4"
# donne conference.en.srt
# Étape 2 : traduire en français
aisrt "conference.en.srt" -s en -t fr
# donne conference.fr.srt
# Étape 3 : et en espagnol tant qu'à faire
aisrt "conference.en.srt" -s en -t es
# donne conference.es.srt三条命令,一段没有字幕的视频就能以三种语言呈现。
如果你要把这一切都写进脚本,有个小细节很重要:一切顺利时,AiSrt 返回 0,失败时返回 1,而你自己取消时返回 2。已经写入磁盘的内容会保留下来,下一次启动时翻译会继续进行。
全自动运行,一个问题都不问
上面的三条命令都会提问:要提取哪条轨道,要使用哪个模型,之后是否要翻译。人在屏幕前时很方便,但如果你想在夜间处理完整的一季内容,就没那么方便了。
四个选项可以替代这些问题,这样完整流程就能压缩在一行里:
# Extraire la piste 2, la traduire en francais, sans jamais rien demander
aisrt --extract "episode.mkv" --stream 2 --translate-to fr --non-interactive如果是整个文件夹,在 Windows 下可以这样:
Get-ChildItem *.mkv | ForEach-Object {
aisrt --extract $_.FullName --stream 1 --translate-to fr --non-interactive
}--non-interactive不会自行猜测:每个问题都会采用默认值,并告诉你它采用了哪个值,以及使用哪个选项可以选择另一个值。不过,你明确提供的值绝不会被悄无声息地忽略。如果你要求提取一个只有两条轨道的文件中的第 7 条轨道,它会停下来并列出可用轨道,而不是装作什么事都没发生一样把所有轨道都提取出来。对于脚本来说,明确报错总比得到意料之外的结果好。
如果你在这种模式下按下 Ctrl+C,它会立即停止,不会要求确认。因为不会有人来回答,而一个没有回答的问题会彻底卡住脚本。
支持的语言
| 代码 | 语言 | 代码 | 语言 | 代码 | 语言 |
|---|---|---|---|---|---|
ar | 阿拉伯语 | cs | 捷克语 | da | 丹麦语 |
de | 德语 | el | 希腊语 | en | 英语 |
es | 西班牙语 | fi | 芬兰语 | fr | 法语 |
he | 希伯来语 | hi | 印地语 | hu | 匈牙利语 |
id | 印度尼西亚语 | it | 意大利语 | ja | 日语 |
ko | 韩语 | ms | 马来语 | nl | 荷兰语 |
no | 挪威语 | pl | 波兰语 | pt | 葡萄牙语 |
ro | 罗马尼亚语 | ru | 俄语 | sv | 瑞典语 |
th | 泰语 | tr | 土耳其语 | uk | 乌克兰语 |
vi | 越南语 | zh | 中文 |
输入 aisrt --languages 即可随时找回这份列表。
高级配置
所有设置都在 appsettings.json 中:
- 模型,使用键
Model,如果您更喜欢 OpenAI 的其他模型,而不是gpt-5-mini。 - 批次大小,使用
BatchSize:每次请求发送的区块数量,默认为 40。 - 行长度,使用
MaxLineLength:超过 50 个字符后,AiSrt 会截断这一行,让它在屏幕上保持可读。 - 网络超时,使用
RequestTimeoutMinutes:默认为 10 分钟。 如果您把BatchSize调得很大,也要把它调大。 - 给 AI 的指令,使用
SystemPrompt和UserInstructionPrompt。 这部分就变得有意思了:您可以重写这两段文字,让翻译适应法律、医疗、宗教或技术语境。 我特意把它们从代码中移出来就是为了这个。 - 温度,介于 0.3 的非常字面的翻译和 1.5 的更加自由的翻译之间。 默认为 1。
- 翻译引擎,在
Translation部分中使用Provider:openai、anthropic、gemini、xai或ollama。 这个设置对您的所有命令都有效,而--provider只对当前命令有效。 - Ollama 的设置,在其专属部分中:使用
BaseUrl设置服务器地址,使用Model设置模型,使用BatchSize设置批次大小,使用NumCtx设置上下文窗口大小。 如果您增加第一个,记得也要增加第二个。 - 字符识别,在
Ocr部分中:使用DefaultLanguage设置备用语言,使用PageSegMode设置 tesseract 的分割模式,使用UpscaleFactor设置读取前的图像放大倍数。 后两个值都有范围限制:离谱的数值会被提示并替换,不会导致逐张读取图像失败。 - 校对 OCR 文本,在
Ocr:Proofread中:使用Enabled将其关闭,使用Provider将这项工作交给不同于翻译服务的另一个服务,使用BatchSize设置批次大小。 它的两个提示词可以像翻译的提示词一样重写。
适合谁?
- 聋人和听力障碍人士,他们日常需要字幕才能观看视频。
- 想要触达更多语言受众的内容创作者。
- 他们的在线课程值得拥有比粗略的自动字幕更好的效果的教师和培训师。
- 专业译者,可以在几分钟内快速完成初稿。
- 电影爱好者和剧迷,当然。
- 向国际观众发布视频的协会和非政府组织。
AiSrt 免费且开箱即用。
下载它,试试看,让所有人都能观看你的视频。

Join the conversation
You need an account to comment on this article. Creating one is free and takes under a minute.
No comments yet.