【Python】YouTubeの動画から音声ファイルのみを抜き出す方法

Python

YouTubeの動画から音声ファイルのみを抜き出す方法を調べてサンプルコードを実行したところ「urllib.error.HTTPError: HTTP Error 400: Bad Request」とったエラーになり調べたところ、2024年8月時点においてpytubeパッケージではこのエラーになるそうです。

そこで今回はエラーにならない方法をご紹介したいと思います。

必要パッケージのインストール

pytubefixのインストール

次のコマンドでpytubefixをインストールしましょう。こちらがpytubeパッケージのfix版になります。

pip install pytubefix

moviepyのインストール

次にmoviepyをインストールします。こちらは動画編集を自動化するモジュールです。

pip install moviepy

プログラムコード

次にこちらのプログラムを実行します。YouTube()の中をダウンロードしたいYouTube動画のURLに変更してください。サンプルではOnePiece考察者やまちゃん。さんの考察動画にしています。

from pytubefix import YouTube
from moviepy.editor import *

# YouTube動画をロード
yt = YouTube("https://www.youtube.com/watch?v=2pKHQoAU2X4")

# 最高品質のオーディオストリームを選択
audio_stream = yt.streams.filter(only_audio=True).first()

# オーディオを一時ファイルとしてダウンロード
temp_file = audio_stream.download()

# MoviePyを使用してオーディオをMP3に変換
audio_clip = AudioFileClip(temp_file)
audio_clip.write_audiofile("test.mp3", codec="libmp3lame")

# 一時ファイルを削除
os.remove(temp_file)

実行

実行するとターミナルに進捗が表示されます。

実行結果

本プログラムファイルと同じ階層にtest.mp3が出力されます。

実行してみると

音声を聴くことができました!

さいごに

いかがだったでしょうか。

今回はpytubeパッケージを使用した場合に「urllib.error.HTTPError: HTTP Error 400: Bad Request」のエラーがでないように、pytubefixパッケージを使用してYouTube動画から音声ファイルを抽出する方法をご紹介しました。

今回抽出した音声データをWhisperを用いて文字起こしすることで、自動で動画に付与されている字幕よりも高精度な文字起こしのデータを抽出できるのではないかと思います。

その方法もこちらのサイトにてご紹介したいと思いますので、よろしくお願いいたします!

コメント