作者:MeshCloud脉时云公有云架构师王彬
背景介绍:
借助 Cloud Translation,您的网站和应用可以通过 API 以编程方式动态翻译文本。Translation 使用 Google 预训练或自定义机器学习模型来翻译文本。默认情况下,Translation 使用 Google 预训练的神经机器翻译 (NMT) 模型,Google 会在有更多训练数据或更好的技术推出时更新半正规节奏
优势:
Cloud Translation 可以翻译 100 多种语言对的文本。如果您不知道源文本的语言,Cloud Translation 可以为您检测该文本
Cloud Translation 可无缝扩缩,并且每天可允许不限数量的字符翻译。但是,每个请求和请求速率的内容大小存在限制。此外,您还可以使用配额限制来管理预算
Cloud Translation 版本
Cloud Translation 提供以下两个版本:
- Cloud Translation 基本版 (v2)
- Cloud Translation 高级版 (v3)
这两个版本都支持语言检测和翻译。它们也使用同一 Google 预训练模型来翻译内容。Cloud Translation 高级版包含批量请求、AutoML 自定义模型和术语表等功能。例如,如果您希望始终翻译特定于您的用例的术语,可以使用术语表执行此操作。
您使用的版本取决于您使用的客户端库或服务端点的版本。
如果您正在规划新项目,请使用 Cloud Translation 高级版构建应用,以利用新功能和改进的服务。Cloud Translation 基本版仍然可用,但不支持使用术语表、请求批量翻译或使用 AutoML 模型等新功能。
使用 Cloud Translation 基本版翻译文本
准备工作:
如要开始使用 Cloud Translation,您需要一个启用了 Cloud Translation API 的项目以及能进行身份验证调用的凭据
1.创建服务账号
在 Google Cloud 控制台中,转到创建服务帐号页面
点击创建服务账号
如需提供对项目的访问权限,请向服务帐号授予 Cloud Translation > Cloud Translation API Admin 角色
点击继续并创建
2.创建服务帐号密钥:
在 Google Cloud 控制台中,点击您创建的服务帐号的电子邮件地址。
点击密钥。
点击添加密钥,然后点击创建新密钥。
点击创建。JSON 密钥文件将下载到您的计算机上。
点击关闭
3.在您的环境中使用服务帐号密钥文件
#linux或者Macos
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
#将 KEY_PATH 替换为包含您的服务帐号密钥的 JSON 文件的路径
#windows
#对于 PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH"
#将 KEY_PATH 替换为包含您的服务帐号密钥的 JSON 文件的路径
#对于命令提示符:
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
#将 KEY_PATH 替换为包含您的服务帐号密钥的 JSON 文件的路径。
4.验证
您可以通过 REST 方法调用基本版 translate 方法来发出 Cloud Translation 基本版请求
HTTP 方法和网址:
POST https://translation.googleapis.com/language/translate/v2
请求 JSON 正文:
{
"q": "The Great Pyramid of Giza (also known as the Pyramid of Khufu or the Pyramid of Cheops) is the oldest and largest of the three pyramids in the Giza pyramid complex.",
"source": "en",
"target": "es",
"format": "text"
}
将请求正文保存在名为 request.json 的文件中,然后执行以下命令:
curl -X POST
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)"
-H "Content-Type: application/json; charset=utf-8"
-d @request.json
"https://translation.googleapis.com/language/translate/v2"
字幕翻译与转换
已经创建了原始语⾔的字幕,你可以使⽤ Cloud Translation API ⽣成其他语⾔的字幕。为此,你
可以使⽤包含的实⽤程序 translate_txt.py 和 txt2srt.py。
translate_txt.py
1、查询并打印 Translation API 可以互译的语⾔列表。
2、使⽤ batch_translate ⽅法调⽤ API。
3、使⽤ Cloud Storage 中的源⽂本⽂件作为输⼊。
4、指定源⽂本⽂件的原始语⾔。
5、指定翻译操作的⽬标语⾔。
6、指定翻译⽂本⽂件和描述性 index.csv ⽂件的输出桶。
txt2srt.py
1、读取翻译输出⽂件 index.csv 以识别翻译后的输出⽂本⽂件。
2、打开原始语⾔ SRT 字幕⽂件以读取每个字幕条⽬的时间。
3、对于每个翻译的⽂本⽂件,执⾏以下操作:
– ⽤翻译后的⽂本替换原始语⾔字幕的正⽂。
– 将翻译后的字幕写⼊ SRT 输出⽂件。
环境准备:
1.如要开始使用 Cloud Translation,您需要一个启用了 Cloud Translation API 的项目以及能进行身份验证调用的凭据
2.创建一个新的用于翻译的服务账号
gcloud iam service-accounts create ml-dev
--description="ML APIs developer access"
--display-name="ML Developer Service Account"
3.授权服务账号ML 开发权限
gcloud projects add-iam-policy-binding mec-test-344202
--member serviceAccount:wb-dev@mec-test-344202.iam.gserviceaccount.com
--role roles/ml.developer
4.授予服务账号项目Viewer权限
gcloud projects add-iam-policy-binding $PROJECT_ID
--member serviceAccount:ml-dev@$PROJECT_ID.iam.gserviceaccount.com
--role roles/viewer
5.将存储对象管理员⾓⾊授予服务帐户,以便它可以将对象上传到 Cloud Storage 或从中下载对
象
gcloud projects add-iam-policy-binding $PROJECT_ID
--member serviceAccount:ml-dev@$PROJECT_ID.iam.gserviceaccount.com
--role roles/storage.objectAdmin
6.创建服务找好JSON Key ⽂件,⽤于服务账号调⽤API认证:
gcloud iam service-accounts keys create ./ml-dev.json
--iam-account ml-dev@$PROJECT_ID.iam.gserviceaccount.com
#注:文件会下载在当前目录下
7.将您的服务帐户 JSON 密钥导出到 shell 环境变量,以便实⽤程序可以使⽤ Cloud AI 服务进⾏
⾝份验证:
export GOOGLE_APPLICATION_CREDENTIALS=ml-dev.json
8.安装要求的Python modules:
pip3 install -r requirements.txt
### requirements.txt ###
google-cloud-speech==2.16.2
google-cloud-translate==3.0.0
srt==3.0.0
9.创建链各个Bucket ⽤于存储中间⽂件,⼀个⽤于输⼊,⼀个⽤于输出。注意bucket 需要唯一
BUCKET_IN=[YOUR_FIRST_BUCKET]
BUCKET_OUT=[YOUR_SECOND_BUCKET]
## 创建两个对象存储:
gsutil mb gs://$BUCKET_IN
gsutil mb gs://$BUCKET_OUT
使⽤翻译API以及转换TXT2SRT ⽂件:
调⽤Translation API 服务并指定⽬标语⾔列表:
python3 translate_txt.py --project_id $PROJECT_ID --source_lang en
--target_lang ko,hi --input_uri gs://$BUCKET_IN/en.txt
--output_uri gs://$BUCKET_OUT/
注⽀持的语⾔,通过python3 translate_txt.py -h 查看,参考:
Supported Languages: af am ar az be bg bn bs ca ceb co cs cy da de el en eo es
et eu fa fi fr fy ga gd gl gu ha haw hi hmn hr ht hu hy id ig is it
iw ja jw ka kk km kn ko ku ky la lb lo lt lv mg mi mk ml mn mr ms
mt my ne nl no ny or pa pl ps pt ro ru rw sd si sk sl sm sn so sq
sr st su sv sw ta te tg th tk tl tr tt ug uk ur uz vi xh yi yo zh-CN zh-TW zu
复制⽬标翻译语⾔的⽂件到本地:
gsutil cp gs://$BUCKET_OUT/* .
从翻译的TXT ⽂件创建SRT ⽂件:
python3 txt2srt.py --srt en.srt --index index.csv
验证转换后的SRT ⽂件:
$ cat zh-CN.srt
1
00:00:00,000 --> 00:00:00,700
这是⼀个例⼦,
2
00:00:00,700 --> 00:00:01,800
⽂本⽂件。
相关参考文档:
https://cloud.google.com/translate/docs/languages?hl=zh-cn
- https://cloud.google.com/translate/docs/advanced/translate-text-advance?hl=zh-cn
- https://cloud.google.com/translate/docs/setup?hl=zh-cn