반응형
wav 파일을 지정한 샘픒링으로 변환하는 예제 코드입니다.
2024. 3. 16 최초작성
import librosa import soundfile as sf import numpy as np import os from tqdm import tqdm def resample_and_save(input_folder, output_folder, target_sr, ouput_mono): # 폴더 내의 모든 파일을 대상으로 함 for filename in tqdm(os.listdir(input_folder)): # 파일의 확장자가 .wav인 경우에만 처리 if filename.endswith(".wav"): file_path = os.path.join(input_folder, filename) output_path = os.path.join(output_folder, filename) if ouput_mono: # 오디오 파일을 모노로 로드 y, sr = librosa.load(file_path, sr=None, mono=True) # 모노 데이터를 리샘플링 y_resampled = librosa.resample(y, orig_sr=sr, target_sr=target_sr) # 리샘플링된 모노 음성 파일 저장 sf.write(output_path, y_resampled, target_sr) else: # 스테레오로 오디오 파일 로드 y, sr = librosa.load(file_path, sr=None, mono=False) if y.ndim == 2: # 스테레오 처리 y_resampled = np.array([librosa.resample(y[i, :], orig_sr=sr, target_sr=target_sr) for i in range(y.shape[0])]) else: # 모노 처리 y_resampled = librosa.resample(y, orig_sr=sr, target_sr=target_sr) # 리샘플링된 스테레오 음성 파일 저장 # .T를 사용해 y_resampled를 전치함으로써 채널이 마지막 차원에 오도록 조정 sf.write(output_path, y_resampled.T, target_sr) input_folder_path = "test_wav". # wav 파일이 있는 경로 output_folder_path = "test_8000hz" # 지정한 샘플링 레이트로 변환한 wav 파일 저장할 경로 desired_sample_rate = 8000 # 원하는 샘플링 레이트로 if not os.path.exists(output_folder_path): os.makedirs(output_folder_path) # ouput_mono로 출력 파일을 모노 또는 스테레오로할지 결정합니다. resample_and_save(input_folder_path, output_folder_path, desired_sample_rate, ouput_mono=False) |
반응형
'Python > Python - 오디오' 카테고리의 다른 글
TTS 라이브러리 MeloTTS로 한국어 음성 합성해보기 (0) | 2024.07.14 |
---|---|
WAV, MP3 파일을 일정 길이(단위 초)의 WAV 파일로 분할 (0) | 2024.03.16 |