YouTube文字起こし:faster-whisperをGoogle Colabで動かす
コード見にくかったら編集してね。
上からコピペしていってくれれば良いです。
Googleドライブ連携
from google.colab import drive
drive.mount('/content/drive')
必要ライブラリインストール
!pip install --upgrade pip
!pip install pytube
!pip install faster-whisper
!pip install ffmpeg-python
Youtubeから、タイムスタンプなし
model_sizeは動画の長さに応じて適当に。大きいほど文字起こし間違いが少ないが遅い。
#@title Youtubeから、タイムスタンプなし
import sys
from faster_whisper import WhisperModel
import os
import subprocess
from pytube import YouTube
URL = "https://www.youtube.com/watch?v=s3dQaS965Ag" # YouTubeの動画URLを指定
SAVE_DIR = "/content/drive/MyDrive/" # 保存先のディレクトリパスを指定
#def format_timestamp(seconds):
# mins, secs = divmod(seconds, 60)
# return f"{int(mins):02d}:{int(secs):02d}"
def convert_to_wav(audio_path):
output_path = os.path.join(SAVE_DIR, os.path.splitext(os.path.basename(audio_path))[0] + ".wav")
subprocess.run(["ffmpeg", "-i", audio_path, "-ar", "16000", output_path])
return output_path
def download_audio(url):
yt = YouTube(url)
audio_stream = yt.streams.filter(only_audio=True).first()
audio_path = audio_stream.download(output_path=SAVE_DIR, filename="audio")
return audio_path
def transcribe_audio(audio_path):
if not audio_path.endswith(".wav"):
print(f"Converting {audio_path} to .wav format...")
audio_path = convert_to_wav(audio_path)
#model_size = "tiny" #実用的じゃない
#model_size = "base" #実用的じゃない
#model_size = "small" #実用に耐える
#model_size = "medium"
model_size = "large-v3"
model = WhisperModel(model_size, device="cuda", compute_type="float16")
segments, _ = model.transcribe(audio_path)
#segments, _ = model.transcribe(audio_path, language="en") # 英語に翻訳したいなら
#segments, _ = model.transcribe(audio_path, language="ja") # 日本語に翻訳したいなら
transcription = "\n".join(segment.text for segment in segments)
output_path = os.path.join(SAVE_DIR, os.path.splitext(os.path.basename(audio_path))[0] + ".txt")
with open(output_path, "w") as text_file:
text_file.write(transcription)
print(f"Transcription saved to {output_path}")
if __name__ == "__main__":
audio_path = download_audio(URL)
transcribe_audio(audio_path)
接続を切る(処理完了後の節約のため)
#@title 接続切る
from google.colab import runtime
runtime.unassign()
faster-whisper
この記事が気に入ったらサポートをしてみませんか?