「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python を使用して曲のピッチを下げる方法

Python を使用して曲のピッチを下げる方法

2024 年 10 月 31 日公開
ブラウズ:756

How to Down-Pitch A Song Using Python

曲の速度を変えずにピッチを変更したい場合は、このブログ投稿が最適です。ピッチシフトは、ミュージシャン、DJ、オーディオ エンジニアにとって一般的な作業です。このチュートリアルでは、Python と pydub ライブラリを使用して曲のピッチを下げる方法と、このプロセスをフォルダー内の複数の曲に自動的に適用する方法を検討します。

なぜピッチシフトなのか?

音楽におけるピッチシフトとは、曲のピッチを速くしたり遅くしたりせずに変更する(上げたり下げたり)ことを意味します。これは次の場合に役立ちます:

  • 曲のキーを別のトラックに合わせる

  • 別のキーにチューニングされた楽器の曲を移調する

  • リミックスまたはマッシュアップの作成

必要なツール

Python ライブラリ pydub を使用してオーディオ ファイルを操作します。 pip:
を使用してインストールできます。

pip install pydub

さらに、pydub では MP3 などのオーディオ ファイルを処理するために ffmpeg が必要です。ターミナル経由で ffmpeg をインストールできます:

sudo apt install ffmpeg

ピッチシフトのステップバイステップガイド

次に、フォルダー内の複数の曲のピッチシフトを自動化する Python スクリプトを見てみましょう。スクリプトは、曲フォルダー内のファイルをループし、半音 (半音 = -1) だけピッチを下げ、新しいファイルを出力フォルダーに保存します。

コード

import os
from pydub import AudioSegment

# Function to shift pitch down
def pitch_shift(audio, semitones):
    # Adjust sample rate to shift pitch
    new_sample_rate = int(audio.frame_rate * (2.0 ** (semitones / 12.0)))
    return audio._spawn(audio.raw_data, overrides={'frame_rate': new_sample_rate}).set_frame_rate(audio.frame_rate)

# Input and output folders
input_folder = './songs'
output_folder = './output'

# Ensure the output folder exists
os.makedirs(output_folder, exist_ok=True)

# Loop through all files in the songs folder
for filename in os.listdir(input_folder):
    # Check if the file is an audio file (e.g., mp3 or wav)
    if filename.endswith(".mp3") or filename.endswith(".wav"):
        # Construct the full file path
        input_path = os.path.join(input_folder, filename)
        output_path = os.path.join(output_folder, filename)

        # Load the audio file
        audio = AudioSegment.from_file(input_path)

        # Shift pitch down by a half-step (semitone = -1)
        shifted_audio = pitch_shift(audio, -1)

        # Export the pitch-shifted audio to the output folder
        shifted_audio.export(output_path, format="mp3")
        print(f"Processed and saved: {output_path}")

説明

  1. ライブラリをインポートしています:
    ファイル ディレクトリを操作するために OS をインポートし、オーディオ ファイルを操作するために pydub から AudioSegment をインポートします。

  2. ピッチシフト機能:
    itch_shift 関数はオーディオのサンプル レートを調整します。サンプルレートを変更すると、ピッチが変わります。この場合、次の式を使用してピッチを半音下にシフトする新しいサンプル レートを計算します。

    new_sample_rate = int(audio.frame_rate * (2.0 ** (半音 / 12.0)))

  3. 入力フォルダーと出力フォルダー:
    オーディオ ファイルを読み取り、ピッチ シフトしたバージョンを保存するフォルダーを定義します。出力フォルダーが存在しない場合は作成されます。

  4. 曲をループする:
    os.listdir() を使用して、 songs フォルダー内の各ファイルをループします。スクリプトは、ファイルを処理する前に、ファイルがオーディオ ファイル (.mp3 または .wav) であるかどうかを確認します。ファイルごと:

    • オーディオを読み込みます。
    • pitch_shift機能が適用され、ピッチが半音下がります。
    • ピッチシフトされたオーディオが出力フォルダーにエクスポートされます。
  5. エクスポートとフィードバック:
    処理が完了すると、ピッチシフトされたソングが出力フォルダーに保存され、確認メッセージが出力されます。

スクリプトの実行

オーディオ ファイルが songs フォルダーにあることを確認してから、スクリプトを実行します:

python -m pitch_down.py

ピッチシフトされたファイルは出力フォルダーに保存されます。

カスタマイズ

このスクリプトは次のように簡単に変更できます:

  • 正の値を渡すことでオーディオのピッチを上げます (例: 半音上げの場合は、pitch_shift(audio, 1))。

  • 条件チェックに .ogg や .flac などの他の拡張子を追加して、さまざまなファイル形式を処理します。

  • 半音引数を調整して、異なる半音数だけシフトします。

結論

このスクリプトは、Python を使用して複数のオーディオ ファイルをピッチシフトするシンプルかつ強力な方法です。 pydub と ffmpeg を使用すると、オーディオ ファイルを一括操作できるため、ミュージシャン、プロデューサー、またはオーディオを扱うすべての人にとって、ピッチ補正やオーディオの準備などのタスクが簡単になります。

このスクリプトを自由に試して、ニーズに合わせてどのように調整できるかを確認してください。コーディングを楽しんでください!

リリースステートメント この記事は次の場所に転載されています: https://dev.to/highcenburg/how-to-down-pitch-a-song-using-python-1opc?1 侵害がある場合は、削除するために[email protected]に連絡してください。それ
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3