1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Python]動画ファイルを15分以上なら5分毎に音声ファイルに分割させる

Posted at

動画編集やポッドキャスティングに携わる中で、動画から音声を抽出して、長い動画の場合に音声を特定の長さで分割したいと考えることがよくあります。この記事では、この作業を自動化するためのPythonツールを紹介します。

必要なライブラリ

  • moviepy: 動画ファイルの読み込みと音声の抽出を行うためのライブラリ。
  • pydub: 音声ファイルの分割や操作を行うためのライブラリ。

これらのライブラリは、以下のコマンドで簡単にインストールできます:

pip install moviepy pydub

関数の実装

以下の関数は、動画から音声を抽出し、動画の長さが15分以上の場合は5分ごとに音声を分割する機能を持っています。

from moviepy.editor import *
from pydub import AudioSegment
from typing import List

def extract_and_split_audio_from_video(video_path: str, output_audio_path: str, output_folder: str) -> List[str]:
    """
    動画から音声を抽出し、指定した条件に従って音声を分割する関数

    Parameters:
    - video_path: 入力動画ファイルのパス
    - output_audio_path: 変換した音声ファイルの保存先パス
    - output_folder: 分割された音声ファイルの保存先フォルダ

    Returns:
    - audio_files: 生成された分割された音声ファイルのパスのリスト
    """

    video = VideoFileClip(video_path)
    video_duration = video.duration

    audio = video.audio
    audio.write_audiofile(output_audio_path)

    audio_files = []

    if video_duration >= 900:  # 900秒 = 15分
        audio_segment = AudioSegment.from_wav(output_audio_path)
        n_chunks = int(video_duration // 300)  # 5分 = 300秒

        for i in range(n_chunks):
            start_time = i * 300 * 1000  # pydubはミリ秒を使用するため、1000をかける
            end_time = (i+1) * 300 * 1000
            chunk = audio_segment[start_time:end_time]
            chunk_path = f"{output_folder}/audio_chunk_{i+1}.wav"
            chunk.export(chunk_path, format="wav")
            audio_files.append(chunk_path)

    return audio_files

# 使用例:
# video_path = 'path_to_your_video_file.mp4'
# output_audio_path = 'path_for_extracted_audio.wav'
# output_folder = 'path_for_audio_chunks'
# generated_files = extract_and_split_audio_from_video(video_path, output_audio_path, output_folder)
# print(generated_files)

使い方

上記の関数を使用するには、以下のように動画のパス、出力する音声のパス、分割された音声を保存するフォルダのパスを指定します。

video_path = 'path_to_your_video_file.mp4'
output_audio_path = 'path_for_extracted_audio.wav'
output_folder = 'path_for_audio_chunks'
generated_files = extract_and_split_audio_from_video(video_path, output_audio_path, output_folder)
print(generated_files)

まとめ

動画から音声を抽出し、必要に応じて分割するためのシンプルなPythonツールを紹介しました。このツールは、動画編集やポッドキャスティングのプロジェクトで非常に役立つことでしょう。Happy coding!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?