📜  Python – 从 YouTube 下载字幕(1)

📅  最后修改于: 2023-12-03 15:34:07.373000             🧑  作者: Mango

Python – 从 YouTube 下载字幕

本文将介绍使用 Python 从 YouTube 下载字幕的方法。我们将使用 pytube 库来下载 YouTube 视频,使用 SpeechRecognition 库来将视频中的语音转换为文字,并使用 gTTS (Google Text-to-Speech)库将该文字转换为音频,最后将其储存为 SRT(SubRip Subtitle)文件格式的字幕。

安装所需库

请在终端中运行以下命令来安装所需的 Python 库:

pip install pytube
pip install SpeechRecognition
pip install gTTS
下载视频

使用 pytube 库从 YouTube 下载视频的方法非常简单。假设您想要下载视频的 URL 是 https://www.youtube.com/watch?v=dQw4w9WgXcQ ,则可以执行以下代码:

from pytube import YouTube

# 创建 YouTube 对象
yt = YouTube('https://www.youtube.com/watch?v=dQw4w9WgXcQ')

# 获取所有可用的字幕
subtitles = yt.captions.all()

# 下载视频
yt.streams.first().download()
转换音频

使用 SpeechRecognition 库将视频中的语音转换为文字的方法同样十分简单。假设您已经下载了一个视频,并且已经从中获取了字幕:

import speech_recognition as sr 

# 使用 Google Web Speech API 将音频转换为文字
r = sr.Recognizer()

audio_file = sr.AudioFile('path/to/video.mp4')

with audio_file as source:
    audio = r.record(source)

# 将结果输出为文字
transcription = r.recognize_google(audio)

print(transcription)
转换为字幕

最后一步是将文字转换为 SRT 字幕格式并储存为文件。我们将使用 gTTS 库来将文字转换为音频,并将其作为字幕文件添加到原始视频中:

from gtts import gTTS
from datetime import timedelta

# 将文字转换为音频
tts = gTTS(transcription, lang='en')

# 储存音频文件
tts.save('path/to/audio.mp3')

# 添加字幕
with open('path/to/subtitles.srt', 'w') as f:
    start_time = 0
    end_time = timedelta(seconds=0)
    for i, sentence in enumerate(transcription.split('. ')):
        end_time = timedelta(seconds=start_time + len(sentence.split()) / 2)
        f.write(f"{i+1}\n{start_time} --> {end_time}\n{sentence}\n\n")
        start_time = end_time.seconds + 1

该代码将创建一个 subtitles.srt 文件格式的字幕文件,并将其添加到原始视频中。

结论

使用 Python,我们可以轻松地从 YouTube 下载视频和字幕,并将其转换为 SRT 格式的字幕文件。这项技能在处理大量视频和语音数据时非常有用,对于那些想要深入了解语音转换和字幕创建的人来说尤其如此。