Amazon Transcribe 语音转字幕 每个月60分钟免费 最大5GB文件免费

最近一直在找免费生成字幕并翻译的网站。发现了 Amazon Transcribe 语音转文字,每个月60分钟免费,最大5GB文件免费。

1. Amazon Transcribe

https://aws.amazon.com/transcribe/

还不是AWS用户的话,请自行注册,操作界面可以改成中文,应该没有难度。注意是界面语言改中文,不是去注册中国AWS用户。

Amazon Transcribe首页,语音转文字服务入口
Transcription jobs页面点Create job新建转录任务
注意选择语言,或者选择让Amazon自动识别。
填任务名与General model,语言选English US
本页面需要从AWS S3存储服务里面选择要转换的语音文件(mp3 / mp4 ……)
注意S3存储服务要和Amazon Transcribe服务在同一个区域。
在Amazon Transcribe页面右上角,确认一下当前区域。
确认区域为US East (Ohio) us-east-2

2. 音视频文件上传至AWS S3存储服务
S3控制台点橙色创建存储桶按钮
注意选择区域与Amazon Transcribe服务一致
桶名a.line.cross.the.sky,区域同样选us-east-2
滚到页面底部,“创建存储桶”
滚到页面底部再次点创建存储桶完成建桶
存储桶创建成功,点查看详细信息
接下来上传文件有两种方法:
一、直接在Web页面上传
二、命令行(AWS CLI)上传

3.1 直接在Web页面上传
桶内点橙色上传按钮准备传语音文件
上传界面里点添加文件选择音视频
选好文件后点橙色上传按钮开始上传
3.2 命令行(AWS CLI)上传
我是用vps下载的视频,所以视频文件本来就在vps上,连接AWS的速度也快,所以我用命令行的方式上传到s3

安装AWS CLI
apt-get install -y unzip libc6 groff less
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
AWS CLI需要IAM用户
IAM控制台点添加用户,用于AWS CLI认证
注意勾选“编程访问”
新建IAM用户usr1并勾选编程访问
添加“AmazonS3FullAccess”策略
给用户挂AmazonS3FullAccess策略
一路“下一步”到用户创建成功,页面不要关了,马上查看私有访问密钥。(这个页面关了就再也看不到私钥了)

AWS CLI 命令行认证权限
aws configure
把刚刚生成的用户的ID和私钥填过来
aws configure填入访问密钥ID与私有访问密钥
剩下的不用管直接回车。
Default region name [None]: 
Default output format [None]: 
然后就可以用命令行上传文件了,比如:
aws s3api put-object --bucket 你的S3存储桶名称 --key 你准备放在S3的文件名 --body 你的VPS上的文件名

4. 现在可以继续操作Amazon Transcribe了
Input从S3中选择要处理的影音文件,Output让Transcribe的处理结果放到我们自己的存储桶里。“下一步”。
任务里选输入文件和输出目录,点Browse S3
后续页面的设置都不用管,一路“下一步”。
等处理完后,打开job
任务a_line_cross_the_sky_2显示Complete
打开转换结果(.json文件)
任务详情里找到输出的JSON文件位置
你可以通过右上角的“对象操作”来下载
S3对象操作菜单里选下载
你也可以找到KEY(键),
对象属性里复制S3 URI或记下KEY下载
用AWS CLI命令行来下载,比如:
aws s3api get-object --bucket 你的S3存储桶名称 -key S3上文件的KEY 你准备保存到VPS的文件名
====
到目前为止,得到的.json文件还不是字幕文件。它的结构是下面这个样子的。
转录结果JSON结构:transcripts文本与items时间轴

====
可以用这个github repo把json转换为srt文件

不过转换很粗暴,所以效果很一般。

====
翻译工作交给 Google Translate
效果很一般,不过免费又不限制文本长度。
注意:文件后缀不包括 .srt,我们需要先改成.txt才行。
把json改名成txt后用Google翻译文档功能翻译

Google Translate会把英文的半角符号都转换为中文的全角形式。对于srt文件来说不是一件好事情。
所以你可能最后需要用一些其它工具,比如:excel的vba
Sub 按钮1_Click()
  Dim curLine As Integer
  
  curLine = 3
  
  Do While Worksheets(1).Cells(curLine, 1).Value <> ""
    Worksheets(1).Cells(curLine, 1).Value = Worksheets(2).Cells(curLine, 1).Value
    
    curLine = curLine + 4
 Loop
  
End Sub
====
提醒:
把你AWS上面创建的各种Transcribe任务和S3存储都删除干净。以免一不小心产生费用。

评论