wav 파일을 지정한 샘플링 레이트로 변환하기Python/Python - 오디오2024. 3. 16. 07:45
Table of Contents
반응형
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 - 오디오' 카테고리의 다른 글
마이크를 사용하여 녹음하는 Python 예제 (1) | 2024.10.03 |
---|---|
WAV, MP3 파일을 일정 길이(단위 초)의 WAV 파일로 분할 (0) | 2024.03.16 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!