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)
相关推荐
SmartRadio2 分钟前
ESP32添加修改蓝牙名称和获取蓝牙连接状态的AT命令-完整UART BLE服务功能后的完整`main.c`代码
c语言·开发语言·c++·esp32·ble
且去填词15 分钟前
Go 语言的“反叛”——为什么少即是多?
开发语言·后端·面试·go
知乎的哥廷根数学学派33 分钟前
基于生成对抗U-Net混合架构的隧道衬砌缺陷地质雷达数据智能反演与成像方法(以模拟信号为例,Pytorch)
开发语言·人工智能·pytorch·python·深度学习·机器学习
WangYaolove13141 小时前
Python基于大数据的电影市场预测分析(源码+文档)
python·django·毕业设计·源码
知乎的哥廷根数学学派1 小时前
基于自适应多尺度小波核编码与注意力增强的脉冲神经网络机械故障诊断(Pytorch)
人工智能·pytorch·python·深度学习·神经网络·机器学习
yeziyfx1 小时前
kotlin中 ?:的用法
android·开发语言·kotlin
charlie1145141911 小时前
嵌入式的现代C++教程——constexpr与设计技巧
开发语言·c++·笔记·单片机·学习·算法·嵌入式
古城小栈2 小时前
Rust 网络请求库:reqwest
开发语言·网络·rust
hqwest2 小时前
码上通QT实战12--监控页面04-绘制6个灯珠及开关
开发语言·qt·qpainter·qt事件·stackedwidget
i橡皮擦2 小时前
TheIsle恐龙岛读取游戏基址做插件(C#语言)
开发语言·游戏·c#·恐龙岛·theisle