YouTubeの動画から音声ファイルのみを抜き出す方法を調べてサンプルコードを実行したところ「urllib.error.HTTPError: HTTP Error 400: Bad Request」とったエラーになり調べたところ、2024年8月時点においてpytubeパッケージではこのエラーになるそうです。
そこで今回はエラーにならない方法をご紹介したいと思います。
必要パッケージのインストール
pytubefixのインストール
次のコマンドでpytubefixをインストールしましょう。こちらがpytubeパッケージのfix版になります。
moviepyのインストール
次に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を用いて文字起こしすることで、自動で動画に付与されている字幕よりも高精度な文字起こしのデータを抽出できるのではないかと思います。
その方法もこちらのサイトにてご紹介したいと思いますので、よろしくお願いいたします!
コメント