YouTubeの動画から音声ファイルのみを抜き出す方法を調べてサンプルコードを実行したところ「urllib.error.HTTPError: HTTP Error 400: Bad Request」とったエラーになり調べたところ、2024年8月時点においてpytubeパッケージではこのエラーになるそうです。
そこで今回はエラーにならない方法をご紹介したいと思います。
必要パッケージのインストール
pytubefixのインストール
次のコマンドでpytubefixをインストールしましょう。こちらがpytubeパッケージのfix版になります。
moviepyのインストール
次にmoviepyをインストールします。こちらは動画編集を自動化するモジュールです。
プログラムコード
次にこちらのプログラムを実行します。YouTube()の中をダウンロードしたいYouTube動画のURLに変更してください。サンプルではOnePiece考察者やまちゃん。さんの考察動画にしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
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を用いて文字起こしすることで、自動で動画に付与されている字幕よりも高精度な文字起こしのデータを抽出できるのではないかと思います。
その方法もこちらのサイトにてご紹介したいと思いますので、よろしくお願いいたします!
コメント