MAC使用python下载字幕

安装软件

brew install tesseract

安装pytesseract和pillow

复制代码
pip install pytesseract
pip install pillow

pip install SpeechRecognition

pip3 install soundfile

pip3 install torch 

pip3 install whisper

脚本参考:

python 复制代码
import os
import sys

import cv2
import pytesseract
import speech_recognition as sr
from moviepy.video.io.VideoFileClip import VideoFileClip
from pydub import AudioSegment


def extract_subtitles(video_path, output_dir):
    audio = AudioSegment.from_file(video_path, format='mp4')
    audio.export("audio.wav", format="wav")

    r = sr.Recognizer()
    audio_file = sr.AudioFile('audio.wav')
    with audio_file as source:
        audio = r.record(source)
    text = r.recognize_whisper(audio)

    print(text)


def extract_subtitles_v2(video_path, output_dir):
    r = sr.Recognizer()
    clip = VideoFileClip(video_path)
    clip.audio.write_audiofile('audio.wav')
    sound = AudioSegment.from_file('audio.wav', format='wav')

    def transcribe_audio(sound):
        transcript = ''
        with sr.AudioFile(sound) as source:
            audio_text = r.record(source)
            try:
                transcript = r.recognize_whisper(audio_text)
            except sr.UnknownValueError as e:
                print(e)
        return transcript

    transcription = transcribe_audio(sound)
    print(transcription)


def extract_subtitles_v1(video_path, output_dir):
    vidcap = cv2.VideoCapture(video_path)

    frames = []
    success, image = vidcap.read()

    count = 0
    success = True

    while success:
        frames.append(image)
        success, image = vidcap.read()
        count += 1

    # lang='chi_sim'
    for frame in frames:
        # text = pytesseract.image_to_string(frame, lang='eng')
        text = pytesseract.image_to_string(frame, lang='chi_sim')
        print(text)


def extract_subtitles_v3(video_path, output_dir):
    vidcap = cv2.VideoCapture(video_path)

    frames = []
    success, image = vidcap.read()

    count = 0
    success = True

    while success:
        success, image = vidcap.read()
        text = pytesseract.image_to_string(image, lang='chi_sim')
        print(text)
        count += 1


if __name__ == '__main__':
    current_dir = os.getcwd()
    print("current_dir:", current_dir)
    # current_dir + "/" + "png"
    # current_dir + "/" + "png"
    # args: ['merge.py', 'png', 'png']

    args = sys.argv
    print('args:', args)
    input_dir = args[1]
    output_dir = args[2]
    # extract_subtitles(input_dir, output_dir)
    # extract_subtitles_v1(input_dir, output_dir)
    extract_subtitles_v3(input_dir, output_dir)
相关推荐
树獭非懒10 小时前
AI大模型小白手册|Embedding 与向量数据库
后端·python·llm
唐叔在学习14 小时前
就算没有服务器,我照样能够同步数据
后端·python·程序员
曲幽15 小时前
FastAPI流式输出实战与避坑指南:让AI像人一样“边想边说”
python·ai·fastapi·web·stream·chat·async·generator·ollama
Flittly16 小时前
【从零手写 AI Agent:learn-claude-code 项目实战笔记】(1)The Agent Loop (智能体循环)
python·agent
vivo互联网技术17 小时前
ICLR2026 | 视频虚化新突破!Any-to-Bokeh 一键生成电影感连贯效果
人工智能·python·深度学习
敏编程18 小时前
一天一个Python库:virtualenv - 隔离你的Python环境,保持项目整洁
python
喝茶与编码20 小时前
Python异步并发控制:asyncio.gather 与 Semaphore 协同设计解析
后端·python
zone773921 小时前
003:RAG 入门-LangChain 读取图片数据
后端·python·面试
用户83562907805121 小时前
在 PowerPoint 中用 Python 添加和定制形状的完整教程
后端·python