속도를 변경하지 않고 노래의 피치를 변경하고 싶다면 이 블로그 게시물을 참조하세요. 피치 변경은 음악가, 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}")
라이브러리 가져오기:
오디오 파일을 조작하기 위해 pydub에서 파일 디렉토리 및 AudioSegment를 사용하기 위해 os를 가져옵니다.
피치 시프트 기능:
itch_shift 함수는 오디오의 샘플링 속도를 조정합니다. 샘플링 속도를 변경하면 피치가 변경됩니다. 이 경우 다음 공식을 사용하여 피치를 반음씩 낮추기 위한 새로운 샘플링 속도를 계산합니다.
new_sample_rate = int(audio.frame_rate * (2.0 ** (반음 / 12.0)))
오디오 파일을 읽고 피치 이동 버전을 저장할 폴더를 정의합니다. 출력 폴더가 없으면 생성됩니다.
os.listdir()을 사용하여 노래 폴더의 각 파일을 반복합니다. 스크립트는 파일을 처리하기 전에 파일이 오디오 파일(.mp3 또는 .wav)인지 확인합니다. 각 파일에 대해:
처리가 완료되면 피치 시프트된 곡이 출력 폴더에 저장되고 확인 메시지가 인쇄됩니다.
python -m pitch_down.py피치 시프트된 파일은 출력 폴더에 저장됩니다.
맞춤화
이 스크립트를 자유롭게 실험해보고 필요에 맞게 어떻게 조정할 수 있는지 알아보세요. 즐거운 코딩하세요!
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3