[Python] mp4から音声を抽出してmp3に変換する方法
PythonでMP4から音声を抽出してMP3に変換するには、moviepyやpydubなどのライブラリを使用します。
まず、moviepyを使う場合、VideoFileClipでMP4ファイルを読み込み、audio.write_audiofile()でMP3形式で音声を保存できます。
pydubを使う場合は、ffmpegをインストールし、AudioSegmentでMP4ファイルを読み込んでMP3に変換します。
どちらの方法でも、ffmpegが必要な場合があるため、事前にインストールしておくことが推奨されます。
MP4から音声を抽出してMP3に変換する方法
必要なライブラリのインストール
音声を抽出してMP3に変換するためには、以下のライブラリが必要です。
| ライブラリ名 | 説明 |
|---|---|
| moviepy | 動画編集用のライブラリ |
| pydub | 音声処理用のライブラリ |
| ffmpeg | 動画・音声変換ツール |
これらのライブラリをインストールすることで、MP4から音声を抽出し、MP3形式に変換することができます。
moviepyのインストール方法
moviepyはPythonのパッケージとして提供されています。
以下のコマンドを実行してインストールします。
pip install moviepypydubのインストール方法
pydubも同様に、以下のコマンドでインストールできます。
pip install pydubffmpegのインストール方法
ffmpegは、OSに応じてインストール方法が異なります。
以下は一般的なインストール方法です。
- Windows: FFmpegの公式サイトからバイナリをダウンロードし、PATHに追加します。
- macOS: Homebrewを使用してインストールします。
brew install ffmpeg- Linux: パッケージマネージャを使用してインストールします。
sudo apt-get install ffmpegmoviepyを使った音声抽出とMP3変換
moviepyを使用してMP4から音声を抽出し、MP3形式に変換する方法を説明します。
moviepyの基本的な使い方
moviepyを使うためには、まずライブラリをインポートします。
from moviepy.editor import VideoFileClipMP4ファイルの読み込み
MP4ファイルを読み込むには、VideoFileClipを使用します。
video = VideoFileClip("sample.mp4")音声の抽出
音声を抽出するには、audioプロパティを使用します。
audio = video.audioMP3形式での保存
抽出した音声をMP3形式で保存するには、write_audiofileメソッドを使用します。
audio.write_audiofile("output.mp3")実行結果は以下のようになります。
音声がoutput.mp3として保存されました。pydubを使った音声抽出とMP3変換
pydubを使用してMP4から音声を抽出し、MP3形式に変換する方法を説明します。
pydubの基本的な使い方
pydubを使うためには、まずライブラリをインポートします。
from pydub import AudioSegmentMP4ファイルの読み込み
MP4ファイルを読み込むには、AudioSegment.from_fileを使用します。
audio = AudioSegment.from_file("sample.mp4")音声の抽出
pydubでは、MP4ファイルを読み込む際に自動的に音声が抽出されます。
MP3形式での保存
抽出した音声をMP3形式で保存するには、exportメソッドを使用します。
audio.export("output.mp3", format="mp3")実行結果は以下のようになります。
音声がoutput.mp3として保存されました。ffmpegを直接使った音声抽出とMP3変換
ffmpegを直接使用してMP4から音声を抽出し、MP3形式に変換する方法を説明します。
ffmpegの基本的な使い方
ffmpegを使用するためには、コマンドラインで以下のコマンドを実行します。
ffmpeg -i sample.mp4 -q:a 0 -map a output.mp3コマンドラインでのMP4からMP3への変換
上記のコマンドを実行することで、MP4ファイルから音声を抽出し、MP3形式で保存できます。
実行結果は以下のようになります。
音声がoutput.mp3として保存されました。Pythonからffmpegを呼び出す方法
Pythonからffmpegを呼び出すには、subprocessモジュールを使用します。
import subprocess
subprocess.run(["ffmpeg", "-i", "sample.mp4", "-q:a", "0", "-map", "a", "output.mp3"])実行結果は以下のようになります。
音声がoutput.mp3として保存されました。応用例
複数のMP4ファイルから一括で音声を抽出する
複数のMP4ファイルから音声を一括で抽出するには、ファイル名のリストを作成し、ループを使って処理を行います。
複数ファイルの処理方法
以下のサンプルコードでは、指定したディレクトリ内のすべてのMP4ファイルから音声を抽出し、MP3形式で保存します。
import os
from moviepy.editor import VideoFileClip
# MP4ファイルが格納されているディレクトリ
input_directory = "videos"
output_directory = "audio"
# ディレクトリ内のすべてのMP4ファイルを処理
for filename in os.listdir(input_directory):
if filename.endswith(".mp4"):
video = VideoFileClip(os.path.join(input_directory, filename))
audio = video.audio
audio.write_audiofile(os.path.join(output_directory, filename.replace(".mp4", ".mp3")))実行結果は以下のようになります。
すべてのMP4ファイルから音声が抽出され、MP3形式で保存されました。ループを使った一括変換
上記のコードでは、os.listdirを使用してディレクトリ内のファイルを取得し、forループで各ファイルを処理しています。
この方法で、任意の数のMP4ファイルを一括で変換できます。
音声のフォーマットを他の形式に変換する
抽出した音声をMP3以外の形式に変換することも可能です。
以下に、WAV形式とOGG形式への変換方法を示します。
WAV形式への変換
WAV形式に変換するには、write_audiofileメソッドの引数を変更します。
audio.write_audiofile("output.wav")実行結果は以下のようになります。
音声がoutput.wavとして保存されました。OGG形式への変換
OGG形式に変換する場合も同様に、write_audiofileメソッドの引数を変更します。
audio.write_audiofile("output.ogg")実行結果は以下のようになります。
音声がoutput.oggとして保存されました。抽出した音声の編集
抽出した音声を編集することも可能です。
以下に、音量の調整とトリミングの方法を示します。
音量の調整
音量を調整するには、+または-演算子を使用して音声の音量を変更します。
# 音量を5dB上げる
audio = audio + 5実行結果は以下のようになります。
音量が5dB上がりました。トリミング(不要部分のカット)
音声をトリミングするには、subclipメソッドを使用します。
以下の例では、最初の10秒から20秒の部分を抽出します。
trimmed_audio = audio.subclip(10, 20)
trimmed_audio.write_audiofile("trimmed_output.mp3")実行結果は以下のようになります。
音声がtrimmed_output.mp3として保存されました。音声のメタデータを追加する
抽出した音声にメタデータを追加することも可能です。
以下に、タイトルやアーティスト情報の追加方法を示します。
タイトルやアーティスト情報の追加
pydubを使用して音声のメタデータを追加することができます。
以下のコードでは、タイトルとアーティスト情報を設定します。
from pydub import AudioSegment
audio = AudioSegment.from_file("output.mp3")
audio.export("output_with_metadata.mp3", format="mp3", tags={"title": "サンプルタイトル", "artist": "サンプルアーティスト"})実行結果は以下のようになります。
音声にメタデータが追加され、output_with_metadata.mp3として保存されました。ID3タグの編集
ID3タグを編集するには、mutagenライブラリを使用します。
以下のコードでは、ID3タグを編集する方法を示します。
from mutagen.mp3 import MP3
from mutagen.id3 import ID3, TIT2, TALB, TPE1
audio = MP3("output.mp3", ID3=ID3)
audio.tags.add(TIT2(encoding=3, text="新しいタイトル"))
audio.tags.add(TALB(encoding=3, text="新しいアルバム"))
audio.tags.add(TPE1(encoding=3, text="新しいアーティスト"))
audio.save()実行結果は以下のようになります。
ID3タグが更新されました。まとめ
この記事では、MP4から音声を抽出してMP3に変換する方法について、必要なライブラリのインストールから具体的なコード例、さらには応用例まで幅広く解説しました。
音声の抽出や変換だけでなく、複数ファイルの一括処理や音声のフォーマット変換、さらには音声編集やメタデータの追加に至るまで、さまざまな技術を学ぶことができました。
これを機に、実際に自分のMP4ファイルを使って音声抽出や変換を試してみることをお勧めします。