曲の速度を変えずにピッチを変更したい場合は、このブログ投稿が最適です。ピッチシフトは、ミュージシャン、DJ、オーディオ エンジニアにとって一般的な作業です。このチュートリアルでは、Python と pydub ライブラリを使用して曲のピッチを下げ、このプロセスをフォルダー内の複数の曲に自動的に適用する方法を検討します。
音楽において、ピッチシフトとは、曲のピッチを速くしたり遅くしたりせずに変更する(上げたり下げたり)ことを意味します。これは次の場合に役立ちます:
曲のキーを別のトラックに合わせる
別のキーにチューニングされた楽器の曲を移調します
リミックスまたはマッシュアップの作成
Python ライブラリ pydub を使用してオーディオ ファイルを操作します。 pip を使用してインストールできます:
pip install pydub
さらに、pydub では MP3 などのオーディオ ファイルを処理するために ffmpeg が必要です。ターミナル経由で ffmpeg をインストールできます:
sudo apt install ffmpeg
ここで、フォルダー内の複数の曲のピッチシフトを自動化する Python スクリプトを見てみましょう。このスクリプトは、曲フォルダー内のファイルをループし、半音 (semitone = -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}")
ライブラリのインポート:
ファイルディレクトリを操作するために OS をインポートし、オーディオファイルを操作するために pydub から AudioSegment をインポートします。
ピッチシフト機能:
itch_shift 関数はオーディオのサンプル レートを調整します。サンプルレートを変更すると、ピッチが変わります。この場合、次の式を使用してピッチを半音下にシフトする新しいサンプル レートを計算します。
new_sample_rate = int(audio.frame_rate * (2.0 ** (半音 / 12.0)))
入力フォルダーと出力フォルダー:
オーディオ ファイルを読み取り、ピッチ シフトしたバージョンを保存するフォルダーを定義します。出力フォルダーが存在しない場合は作成されます。
曲をループする:
os.listdir() を使用して、 songs フォルダー内の各ファイルをループします。スクリプトは、ファイルを処理する前に、ファイルがオーディオ ファイル (.mp3 または .wav) であるかどうかを確認します。各ファイルについて:
エクスポートとフィードバック:
処理が完了すると、ピッチシフトされたソングが出力フォルダーに保存され、確認メッセージが出力されます。
オーディオ ファイルが songs フォルダーにあることを確認してから、スクリプトを実行します。
python -m pitch_down.py
ピッチシフトされたファイルは出力フォルダーに保存されます。
このスクリプトは次のように簡単に変更できます。
正の値を渡すことでオーディオのピッチを上げます (例: 半音上げの場合は、pitch_shift(audio, 1))。
.ogg や .flac などの他の拡張子を条件チェックに追加して、さまざまなファイル形式を処理します。
半音引数を調整して、異なる半音数だけシフトします。
このスクリプトは、Python を使用して複数のオーディオ ファイルをピッチシフトするシンプルかつ強力な方法です。 pydub と ffmpeg を使用すると、オーディオ ファイルを一括操作できるため、ミュージシャン、プロデューサー、またはオーディオを扱うすべての人にとって、ピッチ補正やオーディオの準備などのタスクが簡単になります。
このスクリプトを自由に試して、ニーズに合わせてどのように調整できるかを確認してください。コーディングを楽しんでください!
以上がPython を使用して曲のピッチを下げる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。