使用 whisper和ffmpeg 烧录视频的中英文双语字幕

使用 whisper和ffmpeg 来烧录中英文双语字幕,可以通过以下几个步骤来修改你的代码。主要修改的地方是生成字幕的方式,将字幕通过 ffmpeg 的命令行工具烧录到视频中。通过生成字幕文件(.srt)然后用 ffmpeg 将字幕直接烧录到视频里。

主要步骤:

  1. 生成英文和简体中文字幕的 .srt 文件
  2. 使用 ffmpeg 将字幕烧录到视频中

代码:

import whisper
import os
from datetime import
import torch
from deep_translator import GoogleTranslator
import subprocess

def extract_audio(video_path, audio_path):
    """从视频中提取音频"""
    try:
        video = VideoFileClip(video_path)
        video.audio.write_audiofile(audio_path)
        video.close()
    except Exception as e:
        print(f"音频提取错误: {
     str(e)}")
        raise

def generate_srt(segments, output_srt):
    """生成SRT格式字幕文件,同时生成中英文双语字幕"""
    # 代理设置
    proxies = {
   
        'http': 'http://127.0.0.1:10800',  # 根据你的代理设置修改端口
        'https': 'http://127.0.0.1:10800'  # 根据你的代理设置修改端口
    }
    # 使用 deep-translator 进行翻译
    translator = GoogleTranslator(source='en', target='zh-CN', proxies
### 使用 Whisper 进行会议讲座的语音转文字处理 Whisper 是由 OpenAI 开发的一个开源自动语音识别 (ASR) 工具,能够高效地将音频转换为文本。以下是关于如何使用 Whisper 处理会议讲座录音的具体方法: #### 安装依赖项 为了运行 Whisper,需要安装 Python 必要的库。可以通过以下命令来设置环境并安装所需工具: ```bash pip install git+https://github.com/openai/whisper.git ``` #### 加载模型 Whisper 提供多种大小不同的预训练模型以适应不同需求。加载模型可以按照如下方式实现: ```python import whisper model = whisper.load_model("base") # 可选参数:"tiny", "base", "small", "medium", 或 "large" ``` 这里选择了 `base` 模型作为示例[^1]。 #### 音频文件输入 要将音频文件传递给 Whisper 并获取其转录结果,可调用 `transcribe()` 方法: ```python result = model.transcribe("audio_file.mp3") print(result["text"]) ``` 上述代码会读取名为 `"audio_file.mp3"` 的音频文件,并将其内容打印出来[^2]。 #### 实现多语言支持 如果目标音频涉及多种语言,则可以在调用时指定可能的语言列表或者让模型自行检测语言种类: ```python options = dict(language="en", beam_size=5, fp16=False) result = model.transcribe("multilingual_audio.wav", **options) ``` 此段代码设定了英语 (`language="en"`) 为目标语言之一,并通过调整其他选项提高准确性[^3]。 #### 批量处理多个文件 对于大型项目或频繁使用的场景下,编写脚本来批量处理所有相关音频可能是更有效的方式。下面是一个简单的例子展示如何遍历目录中的每一个 `.mp3` 文件完成转写工作: ```python import os directory_path = "./audios/" output_directory = "./texts/" if not os.path.exists(output_directory): os.makedirs(output_directory) for filename in os.listdir(directory_path): if filename.endswith(".mp3"): audio_path = os.path.join(directory_path, filename) text_result = model.transcribe(audio_path)["text"] output_filename = f"{os.path.splitext(filename)[0]}.txt" with open(os.path.join(output_directory, output_filename), 'w') as file: file.write(text_result) ``` 该程序会在当前路径下的 `./audios/` 文件夹查找所有的 MP3 形式的音频文档逐一执行转录操作并将最终的结果保存至新的 TXT 文本档中[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘逸高铁侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值