对于观看非母语小电影的人群,字幕能够帮助观众更好地理解对话和情节发展。
电影字幕的生成,依赖语音转文本(Speech-to-Text,STT)的技术。
随着语音技术和机器学习的发展,语音转文本技术也取得了长足的进步。
而OpenAI的Whisper是目前识别率较高的模型。下面讲展示如何调用Whisper来得到电影的字幕.
Whisper是一种自动语音识别(ASR)系统,它是基于680,000小时的多语言和多任务监督数据进行训练的,使用了大量的多样化音频数据进行训练,并且具有多任务的能力。
Whisper可以识别的语言包括但不限于中文、英语、日语、西班牙语、法语、德语、意大利语、葡萄牙语、荷兰语、俄语和韩语等。
Whisper文件上传目前限制为25 MB,支持以下输入文件类型:mp3、mp4、mpeg、mpga、m4a、wav和webm。为了减少上传文件的体积,可以先提取电影的声音到mp3文件。
FFmpeg是一个开源的跨平台音视频处理工具集,它提供了丰富的功能和命令行工具,用于处理、转码、编辑和流媒体处理等任务
1.1 使用FFmpeg把视频转换成音频:
ffmpeg -i input.mp4 -vn -acodec libmp3lame -q:a 6 output.mp3
这将从 input.mp4 的文件中提取音频,并将其保存为output.mp3文件。
在这个命令中,使用了libmp3lame编解码器来编码音频为MP3格式,并且通过-q:a参数指定了音频质量,值越小质量越低,一般取值范围为0-9,其中0为最高质量。
1.2 调用Whisper生成字幕文件
curl https://api.openai.com/v1/audio/transcriptions \
-H "Authorization: Bearer {替换成你的OpenAI API KEY}" \
-H "Content-Type: multipart/form-data" \
-F file="@output.mp3" \
-F model="whisper-1" \
-F response_format="srt" > output.srt
output.mp3 是上一步生成的音频文件,output.srt 是语音识别出来的字幕文件.
如果在内网连不上OpenAI,可以通过添加 -x proxyHost:proxyProxy 参数来处理.
另外还可以通过指定语音的语言和使用ChatGPT修正字幕的错别字和标点符号.
ChatGPT不支持直接翻译文件,可以考虑通过第三方工具来翻译. 例如:
如何使用ChatGPT翻译文档(PDF/EPUB/DOCX/PPTX/XLSX/SRT)?
CahtGPT翻译的优势主要在于关联上下文,就是可以根据字幕文本相邻句子来优化翻译的效果, 比起机器翻译要更精确和流程一些.