파이토치

[파이토치] 파이토치로 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

https://ahnjg.tistory.com/93

 

[Pytorch] 음성 신호 전처리 (spectrogram, melspectrogram)

본 게시글은 Dacon에서 JunhoSun님이 공유해주신 음성 신호 기본 정보를 바탕으로 작성되었습니다. 모든 코드와 음성 파일은 Github에서 확인하실 수 있습니다. 목차 Intro Import Data Load Spectrogram, Melspect

ahnjg.tistory.com

 

728x90