Python/Python - 오디오
WAV, MP3 파일을 일정 길이(단위 초)의 WAV 파일로 분할
webnautes
2024. 3. 16. 07:41
반응형
WAV 파일 또는 MP3 파일을 일정 길이(단위 초)의 WAV 파일로 분할하는 코드입니다.
2023. 10. 20 최초작성
2024. 3. 16
import os import librosa import soundfile as sf def split_and_save(wav_path, output_dir, segment_length=30): """ - wav_path : 로드할 WAV 파일 또는 MP3 파일의 경로 - output_dir : WAV 파일들을 저장할 디렉토리 경로 - segment_length : 분할할 세그먼트의 길이 (초 단위, 기본값은 30초) """ # 출력 디렉토리가 존재하지 않으면 생성 if not os.path.exists(output_dir): os.makedirs(output_dir) # WAV 파일 또는 MP3 파일 로드합니다. sr을 None으로 하면 원본 샘플링 레이트를 사용한다는 의미입니다. # # 리턴값 : # y는 오디오의 시계열 데이터가 저장되어 있는 넘파이 배열입니다. # sr은 로드된 오디오 파일에 포함된 총 샘플 수를 나타냅니다. y, sr = librosa.load(wav_path, sr=None) # 샘플의 총 길이 계산 total_samples = len(y) # 전체 오디오를 segment_length 초 단위로 나눈 각 세그먼트의 샘플 수 계산 segment_samples = segment_length * sr # 지정된 길이 segment_samples로 분할하여 WAV 파일로 저장 for start_sample in range(0, total_samples, segment_samples): end_sample = start_sample + segment_samples output_path = f"{output_dir}/segment_{start_sample // segment_samples}.wav" # 여기서는 segment로 분할된 오디오 데이터를 WAV 파일로 저장한다. sf.write(output_path, y[start_sample:end_sample], sr) # 사용 예: wav_path = "input_file.wav" output_dir = "output_directory" split_and_save(wav_path, output_dir) |
반응형