MFCC란?
Mel Frequency : 우리의 귀가 작동하는 것과 유사한 소리를 측정하는 방법임. 피아노에서 두 개의 높은 음이 두 개의 낮은 음보다 더 가깝게 들리는 것처럼 Mel Frequency는 사운드를 측정하기 위해 특별한 '스케일'을 사용함.
Cepstral Coefficients : 소리의 '성분'을 찾고 있는 방법. 소리의 고음, 저음, 중간음등
MFCC의 특징
음성 인식, 음악의 장르 분석, 감정 인식 등 다양한 분야에서 MFCC를 활용합니다. 예를 들어 음성을 인식해야 하는데 목소리가 높은 사람이 높은 음으로 '가나다라~' 하는거랑 낮은 목소리로 '가나다라~' 하는거랑 같게 인식이 되어야 하겠죠? 그러니 MFCC는 적합한 특징값이죠.
반대로 음악에서 악기를 연주하면 그 악기의 음표를 그려주는 목적이라고 하면 MFCC는 절대 사용해선 안되겠죠. 음정의 차이를 무시하도록 디자인되었으니까요.
https://brightwon.tistory.com/11
MFCC를 사용하는 이유?
사람은 특정인의 목소리를 들으면 누구인지 알 수 있지만, 컴퓨터는 사람처럼 소리를 이해하지 않기 때문에 알수 없음. 따라서 MFCC를 사용해서 컴퓨터가 다양한 소리의 요소를 이해하도록 함.
(출처)
Mel-Spectrogram python 코드
def mel_spectrogram(file_path):
# Load your audio file
y, sr = librosa.load(file_path, sr=None)
# Compute the Mel spectrogram
n_fft = 2048
win_length = 2048
hop_length = 1024
n_mels = 128
D = np.abs(librosa.stft(y, n_fft=n_fft, win_length = win_length, hop_length=hop_length))
mel_spec = librosa.feature.melspectrogram(S=D, sr=sr, n_mels=n_mels, hop_length=hop_length, win_length=win_length)
# Convert to log scale (dB). We'll use the peak power (max) as reference.
log_S = librosa.amplitude_to_db(mel_spec, ref=np.max)
# Display the spectrogram
plt.figure(figsize=(12, 4))
librosa.display.specshow(log_S, sr=sr, x_axis='time', y_axis='mel')
plt.colorbar(format='%+02.0f dB')
plt.title('Mel spectrogram')
plt.tight_layout()
plt.show()
참고문헌
다카시마 료이치 저/정권우 역. 『파이썬으로 배우는 음성인식 : 음성인식의 기술 발전 동향부터 파이토치를 활용한 딥러닝 실습까지』, 비제이퍼블릭, 01월 2023
'Sound' 카테고리의 다른 글
SDR (Signal-to-Distortion Ratio) (0) | 2023.05.15 |
---|---|
Audio/Sound 데이터의 드럼비트 kick, snare, hi-hat (0) | 2023.05.15 |
음성데이터 샘플링 (Audio Data Sampling) (2) | 2023.05.10 |
음성데이터 음역대별 데이터 추출 기능 (0) | 2023.05.03 |
각 주파수별 소리특성 (0) | 2023.05.02 |