Chatgpt被开发出来许多奇奇怪怪的用途。异次元软件那边收集了一堆基于其API的第三方程序,小众软件那边也收集了许多。我这里是找到一个叫做 bilingual_book_maker
的python程序,能调用openai API机翻整本外文书生成双语的epub,但是因为这个东西是python程序,要用命令行去调用,等作者做成exe又遥遥无期,用起来比较困难,所以我写个教程来简单地使用这个工具。
在进入这篇教程之前,首先我要列出一张清单,确认你有这些东西:
- 有待翻译的外文书,txt或者epub都行,但是不可以是pdf
- github账号
- git客户端,可以是命令行,但如果你是小白我推荐用github desktop
- 文本编辑器,理论上来说windows自带的记事本也可以,但是还是推荐你用VSCode、Sublime Text之类的
- 已经绑卡的openai账号
如果这些你都有了,那我们可以进入正文。
如果没有,那请直接从网页右侧的目录跳转到文章最后一节,那是一个简化方案。
如果你有openai账号,但是觉得我这个路子又是搞github又是修改配置文件特别麻烦,那可以跳到这篇文章的倒数第二章,那个方法省事,就已经封装成一个程序了。
0.首先你需要给openai账号绑定银行卡
这个虽然在前文的那个列表里也提到了,但是因为很麻烦,所以再提一嘴。网上给的教程基本都是用的depay的虚拟卡,我用的也是这个法子,但是我得先说一句,这个法子给的虚拟卡非常坑爹,如果你有条件还是最好找国外的哥们搞张卡,不然真的太坑了。
使用depay虚拟卡绑定openai的流程如下
- 注册dapay账号,这里可以使用我的邀请码
715205
- 给depay提交非常恶俗的个人信息之后,可以开一张虽然免费但是月费巨高的卡
- 给depay充值虚拟币(没错,depay只能先充值虚拟币再兑换成美元)
- 为了搞虚拟币,你还得注册一个虚拟币交易平台,比如说欧易,这里你还可以使用我的邀请码
85118482
- 在交易平台上面买USDT,等待24小时候后把币冲到depay账户上,转换成USD再冲到卡里,在经过漫长的等待和N手抽手续费之后,终于实现卡的解锁
- 最后在openai的billing页面绑卡,这一步需要用浏览器的无痕模式,挂美国节点,然后账单地址随便填写一个美国的地址(我填了谷歌总部,但是可能填一个免税州地址更好一点)
这样子你就得到了一个绑卡的openai账号。绑卡对于openai至关重要,因为不绑卡的账号api响应速度奇慢无比,基本没法实现翻译一本书的任务。
1.从人家的项目仓库里偷活
首先我们找到人家的项目仓库地址,点击人家右上角的Fork按钮,进行一个活的偷。
然后用github desktop这个工具把偷来的活拷贝到本地。准备工作完成。下一步就要开始编辑人家的文件了。
2.设置API key
我们先进网页,按照如图所示的步骤添加一个名为 OPENAI_API_KEY
的secret,内容则是在openai的API管理页面设置好的API。
3.放入需要翻译的文件,编辑workflows文件
之前把人家的仓库偷活偷到了本地。现在要做的事情是
- 首先把人家的test_books文件夹删掉,这个是人家测试翻译是否正常用的文件夹,我们用不着
- 把需要翻译的书放在根目录下,记下文件名。
比如说我这个目录的文件结构就是
│ .dockerignore
│ .gitignore
│ disclaimer.md
│ Dockerfile
│ LICENSE
│ make_book.py
│ prompt_template_sample.json
│ prompt_template_sample.txt
│ README-CN.md
│ README.md
│ requirements.txt
│ setup.py
│ Sex_and_the_Failed_Absolute.epub
│
├─.github
│ └─workflows
│ make_test_ebook.yaml
│
└─book_maker
│ cli.py
│ obok.py
│ utils.py
│ __init__.py
│ __main__.py
│
├─loader
│ base_loader.py
│ epub_loader.py
│ helper.py
│ srt_loader.py
│ txt_loader.py
│ __init__.py
│
└─translator
base_translator.py
caiyun_translator.py
chatgptapi_translator.py
deepl_translator.py
google_translator.py
gpt3_translator.py
__init__.py
这里别的都不用在意,唯一需要注意的就是 Sex_and_the_Failed_Absolute.epub
,这个是我打算要翻译的书,记下来文件名,等下用得着。
然后找到 \.github\workflows\make_test_ebook.yaml
这个目录下的这个文件,直接从我这个已经改好的文件依样画葫芦。代码不想看没关系,会改几个关键词就行。
- name: translate
run: |
python3 make_book.py --book_name "Sex_and_the_Failed_Absolute.epub" --language zh-hans
- name: Rename and Upload ePub
if: env.OPENAI_API_KEY != null
uses: actions/upload-artifact@v2
with:
name: epub_output
path: "Sex_and_the_Failed_Absolute_bilingual.epub"
这里可以看到还提到了之前要翻译的那本书的名字,每次翻译不同的书都要改这个文件,改成和你要的那个文件相同。
都改好了之后,在github desktop上把这些本地的修改推送到网上。
那之后就可以去睡一觉,起来再看有没有翻译成功了。
3.5.为什么使用持续集成
顺便说一下这个的正经玩法是在本地用python跑,我因为搞不来本地的python运行环境所以是白嫖的微软服务器来跑这个。好处在于:
- 人家的服务器本来就在国外,不用担心openai被墙的问题
- 本地跑这个程序需要python的运行环境,我弄不来
- 本地跑这个程序需要一直开机,而这个可以睡前种菜第二天醒来收菜
4.翻译成功
如果报错了的话估计提前就给你发邮件了,如果第二天还没报错,那估计就是好的。
可以用如图所示下载到翻译好的文件。
最后开始品鉴东欧郭楠又说了什么怪话。
替代方案其一:Calibre插件 Ebook Translator
相当简化了流程,填好api key设置好代理基本就是傻瓜式的了。
6.替代方案其二:风声雨声
我搞这个搞了超久才搞定,虽然这个流程已经简化过很多遍了,但是如果你还是嫌麻烦,可以用风声雨声这个人家已经搭建好的服务。记得用我的邀请码:65BC5C
。