跳至正文

基于 Gemini 构建多媒体转录翻译系统

引言

随着互联网的发展,视频内容的数量呈爆炸式增长,对于多语言观众来说,能够快速准确地将视频内容转录并翻译成多种语言变得尤为重要。

Gemini 不仅在多模态任务上展现了卓越的能力,而且在语言翻译方面也取得了令人瞩目的成就,为用户提供了一种接近甚至超越传统人工翻译的服务体验。

stream-translator-gpt 是一个基于 Whisper 模型和 LLM 大语言模型的开源项目,旨在为用户提供一个简单易用的工具,用于实时或离线处理视频音频的转录和翻译。

本文档将详细介绍如何使用 stream-translator-gpt + Gemini 来实现这一目标。

系统架构

stream-translator-gpt 支持直播流、在线文件、本地文件、本机音频设备等多种方式获取音频流,它基于人声检测优化了音频切片逻辑,引入了GPT API / Gemini API,以支持除英语之外的语言翻译。

环境准备

在开始之前,请确保您的环境中已经安装了必要的依赖项。以下是环境准备的具体步骤:

  • 安装FFmpeg:FFmpeg 是处理音视频文件的关键工具。请按照官方指南安装,并将其添加到系统的 PATH 环境变量中,以确保可以从命令行访问。
  • 安装CUDA(可选):如果您计划使用 GPU 加速处理,请访问 NVIDIA 官网下载适合您系统的 CUDA 版本。注意,如果使用的不是 CUDA 11.3 版本,则需要相应调整 requirements.txt 文件中的 cu113 参数。可以通过运行 nvcc –version 来验证安装的CUDA版本。
  • 创建Python虚拟环境:推荐在一个干净的Python虚拟环境中进行开发,避免与其他项目发生冲突。使用以下命令创建并激活虚拟环境:
python -m venv venv
source venv/bin/activate  # Linux/MacOS
.\venv\Scripts\activate  # Windows

安装 stream-translator-gpt

接下来,我们将从GitHub 仓库克隆 stream-translator-gpt 项目,并安装所需的 Python 包。执行以下命令:

git clone https://github.com/fortypercnt/stream-translator.git
cd stream-translator
pip install -r requirements.txt

请注意,安装过程中会自动下载并配置 Whisper 模型及相关依赖。如果您希望使用更高效的 faster-whisper 模型,可以根据官方说明进行额外设置

配置 API 密钥

使用此 API 密钥是为了调用 Gemini API 进行媒体字幕的翻译。如果您仅需要进行视频转录,不需要视频翻译,则您可以忽略此步骤。 为了调用 Gemini 的 API 服务,您需要获取一个有效的 API 密钥。在 Google AI 工作室 https://aistudio.google.com/ 中点击几下即可创建密钥。您需要在后续的命令行中使用 Gemini API 密钥。

使用方法

  • 视频转录

视频转录是利用视频中的音频转成视频文字,最常用的使用场景就是制作视频字幕。

要对在线视频文件进行转录,可以使用以下命令(本文选 Youtube 中的一个视频作为测试):

translator.py " https://www.youtube.com/watch?v=r1dytEjbUqo " \
--model large  \
--output_timestamps \
--output_file_path ./por.srt

这里,https://www.youtube.com/watch?v=r1dytEjbUqo 是 youtube 的视频网址。您也可以使用任何在线播放协议,如 hls 如 dash 的在线播放视频做为测试。

–model large 表示使用 Wisper切分音频模型大小。根据需求,您可以选择其他型号如 small、medium 或 large,这些模型提供了不同的速度与准确性权衡。

–output_timestamps 这里是打印音频相对于视频的起止时间,如果需要生成字幕文件,这个是必须的。

–output_file_path 这里指定字幕文件的存放路径,直接使用 srt 后缀即可。只需将SRT 文件和视频文件放在同一个目录中,并且文件名和视频文件名一致,大多数播放器都默认可以支持外挂字幕

  • 视频翻译

要对在线视频文件进行翻译,可以使用以下命令:

stream-translator-gpt "https://www.youtube.com/watch?v=r1dytEjbUqo" \
--model large \
--gpt_translation_prompt "Translate to Chinese" \
--google_api_key AIzaSyC-CsDPFMFtOfAxw40o10imNMbUqI_xxxx \
--hide_transcribe_result \
--output_timestamps \
--output_file_path ./result.srt

–gpt_translation_prompt 这里是 GPT 的翻译提示词,您可以根据自己的需求,使用相应的提示词,以使翻译结果更符合自身的需求。比如在一些搞笑的节目当中,使用一些娱乐元素等。大语言模型翻译对比使用 GCP Cloud Translation 好处在于,它可以不用指定源视频语言,只需指定翻译的目标语言即可。这个特性对于源视频语言不确定的场景非常方便!

  • 高级功能

除了基本的转录和翻译外,stream-translator-gpt 还提供了若干高级选项来优化用户体验:

  • 自定义间隔时间:通过 –interval 参数设置调用语言模型的时间间隔,默认值为 5 秒。较短的间隔可以获得更快的结果,但可能会增加总成本;反之则相反。
  • 历史缓冲区大小:利用 –history_buffer_size 参数控制是否使用先前的音频/文本作为上下文条件化模型。非零值有助于提高长期对话的一致性。
  • 搜索宽度:–beam_size 控制解码时考虑的候选数量。较大的数值通常能产生更好的结果,但也增加了计算开销。
  • 最佳候选数:当采样温度不为零时,–best_of 决定了生成多少个候选结果供最终选择。
  • 质量优先级:–preferred_quality 允许用户指定偏好哪种流质量选项,例如 best 或 worst。对于某些特定类型的视频,可能需要调整此参数以获得最佳效果。
  • 禁用VAD:如果遇到不必要的静音片段检测问题,可以尝试添加 –disable_vad 标志来关闭 Silero VAD(语音活动检测)。
  • 直接URL输入:对于已经拥有直播流URL的情况,可以直接传递给 FFmpeg 而不是通过 streamlink 获取,方法是在命令后加上 –direct_url 选项。

启用Faster-Whisper:为了进一步提升性能,特别是对于大规模部署场景,建议启用 faster-whisper。首先按照其[安装指南]完成本地模型转换,之后在命令行中加入 –use_faster_whisper 和相关设备及量化类型设置

结论及改进

通过以上步骤,您应该已经掌握了如何使用 stream-translator-gpt 对视频进行高效且准确的转录和翻译。无论是个人创作者还是企业用户,这个强大的工具都能显著简化工作流程,节省时间和资源。

对于点播或本地文件,您可以使用此方案方便的转录和翻译,但是对于直播或流媒体,虽然本方案也支持字幕生成,但字幕和视频的同步仍是比较难解决的问题,希望能和大家一起探讨更好的解决方案!

发表回复