파이토치
[파이토치] 파이토치로 Mel-Spectrogram 생성해보기
mhiiii
2025. 2. 20. 16:45
728x90
PyTorch의 torchaudio.transforms를 사용하여 오디오 파일에서 Mel-Spectrogram을 생성하는 방법
1. 필요 라이브러리 설치
아래 명령어로 설치
pip install torchaudio
728x90
2. 기본적인 Mel-Spectrogram 생성 코드
import torchaudio
import torchaudio.transforms as transforms
import torch
import matplotlib.pyplot as plt
# 1️⃣ 오디오 파일 로드
waveform, sample_rate = torchaudio.load("example.wav") # 파일 경로 입력
# 2️⃣ Mel-Spectrogram 변환기 정의
mel_transform = transforms.MelSpectrogram(
sample_rate=sample_rate, # 샘플링 레이트
n_fft=1024, # FFT 크기
hop_length=256, # 프레임 간 간격 (Stride)
n_mels=80 # Mel 필터 개수
)
# 3️⃣ 오디오 데이터를 Mel-Spectrogram으로 변환
mel_spectrogram = mel_transform(waveform)
# 4️⃣ 결과 출력 (Mel-Spectrogram 시각화)
plt.figure(figsize=(10, 4))
plt.imshow(mel_spectrogram.log2()[0].detach().numpy(), cmap="inferno", aspect="auto")
plt.colorbar(format="%+2.0f dB")
plt.title("Mel-Spectrogram")
plt.xlabel("Time")
plt.ylabel("Mel Frequency Bin")
plt.show()
3. 주요 파라미터 설명
파라미터 | 설명 |
sample_rate | 오디오의 샘플링 레이트, 1초에 몇 개의 데이터를 샘플링할지 |
n_fft | STFT에서 사용할 FFT 크기, 각각의 프레임에서 변환할 샘플 개수 |
hop_length | STFT에서 다음 프레임으로 이동하는 샘플 간격을 의미 ( 프레임 개수 = 전체 샘플 개수 / hop_length ) |
n_mels | Mel 필터 개수 |
References
[Pytorch] 음성 신호 전처리 (spectrogram, melspectrogram)
본 게시글은 Dacon에서 JunhoSun님이 공유해주신 음성 신호 기본 정보를 바탕으로 작성되었습니다. 모든 코드와 음성 파일은 Github에서 확인하실 수 있습니다. 목차 Intro Import Data Load Spectrogram, Melspect
ahnjg.tistory.com
728x90