librosa 실습
pip install librosa
import IPython.display as ipd # 음원 파일의 소리를 들을 수 있도록 오디오 플레이 화면을 디스플레이
train_path = 'c:\\deep\\'
ipd.Audio(train_path + '002.wav')
소리확인
import librosa
y, sr = librosa.load(train_path + '002.wav')
print(y) #진폭값
print(sr)
y값은 파형의 amplitude(진폭), 소리의 세기, 파동을 특정지을 수 있는 중요량, 최고점의 수직 높이, 골의 깊이
sr값은 sample rate 또는 샘플링 주파수. 아날로그 소리를 디지털 신호로 표현하기 위해서는 아날로그 소리를 잘게 쪼개는게 이 정보를 디지털 정보로 표현한게 sample.
sample rate는 1초당 들리는 sample의 개수를 단위로 나타낸 것.
오디오의 표본비율 또는 1초당 샘플의 빈도수
ex. 44.1KHz --> 1초당 sample의 수가 44100개 들어있음
시간의 순서에 따라 방금 들은 음악의 진폭을 시각화 해보겠음.
import numpy as np
import matplotlib.pyplot as plt
import librosa.display
audio_data = np.array(y)
fig = plt.figure(figsize=(14,6))
librosa.display.waveshow(audio_data[0:100000], sr = sr)
plt.ylabel("amplitude")
plt.show()
2 MFCC
Mel-Frequency Cepstral Coefficient(MFCC)는 오디오 신호에서 추출할 수 있는 특징으로, 소리의 고유한 특징을 나타내는 수치입니다.
Mel은 사람 귀의 달팽이관을 모티브로 따온 값을 뜻함
Frequency는 주파수
Cepstral은 신호에서 어떤 특정 주파수가 강하고 어떤 특정 주파수가 약한지 한 눈에 볼 수 있는 수치
Coefficient는 계수
사람은 소리를 달팽이관을 통해 인식함. 그렇다면 달팽이관은 소리를 어떤 식으로 인식할까?
위의 그림을 보면 달팽이관은 똘똘 말려있지만, 실제로 길게 펴서 보면 달팽이관의 각 부분은 각기 다른 진동수(주파수)를 감지함.
주파수가 낮은 내뎡게엇는 변화를 잘 감지하는데, 주파수가 높은 대역에서는 주파수의 변화를 잘 감지하지 못함.
예를들어, 실제로 사람은 2000Hz에서 3000Hz로 변화하는 소리는 잘 감지하는데 12000Hz에서 13000Hz로 변화하는 소리는 잘 감지하지 못함.
달팽이관의 구조로 살펴보면 달팽이관에서 저주파 대역을 감지하는 부분은 굵지만, 고주파 대역을 감지하는 부분으로 갈수록 얇아짐.
그렇다면, 특징벡터로 그냥 주파수를 쓰기 보다는 이러한 달팽이관의 특성에 잘 맞춰서 특징을 뽑아주는 것이 더욱 효과적인 피처를 뽑는 방법.
그래서 위와 같이 사람 달팽이관 특성을 고려한 값을 Mel값이라고 한다.
소리는 소리의 세기, 높낮이, 음색으로 그 특징을 나타냄. 이것들은 소리의 3요소로 세기, 높낮이, 음색이 사람의 목소리를 비롯하여 모든 소리를 구분할 수 있게 하는 기준.
소리는 공기 속을 전해오는 파동. 다라서 소리를 이해하기 위해서는 파동에 대하여 알아볼 필요가 있음. 파동을 표현할 때는 파동의 진동수, 파장, 진행 속도, 진폭을 말함.
평소에 말을 할 때 에너지를 많이 써서 이야기하면 소리의 진폭이 커져서 목소리가 커짐.
반대로 에너지를 작게 써서 이야기하면 소리의 진폭이 작아져서 작은 목소리가 나옴.
우리가 소리를 낸다는 것은 주변 공기를 크게 떨리게 하는 것.
가청 진동수는 일반적으로 사람이 들을 수 있는 소리의 범위를 말하고 가청 주파수라고도 합니다.
대략 진동수가 20 ~ 20,000Hz영역인데 사람이 아닌 동물도 소리를 감지할 수 있고 각각의 종에 따라서 들을 수 있는 소리와 진동수 영역이 다릅니다. 사람에게는 아무 소리도 들리지 않는데 개나 고양이는 반응하는 경우가 있음. 개와 고양이는 사람이 들을 수 없는 영역의 소리를 들을 수 있기 때문
개는 46,000Hz까지, 고양이 65,000Hz까지 들을 수 있다. 박쥐는 120,000Hz, 돌고래는 150,000Hz의 초음파를 들을 수 있음.
ㅇ주파수란?
주파수란 전파 또는 음파 등의 파장이 반사 및 굴절하여 물결 모양과 같이 방향을 바꾸는 주기적 현상이 1초동안 반복되는 횟수를 말함.
단위가 Hz(헤르츠)로 1초라는 시간 안에 반복적인 행동을 몇 번 하는지를 말함.
어떤 일을 1번 하는데 0.1초가 걸린다고 하면 1초동안 10번의 일을 할 수 있는 것이고 이때의 주파수가 10Hz가 되는 것.
ㅇ주파수로 어떤 일을 할 수 있는가?
1. 핸드폰 통신
2. 라디오
ex. AM라디오 주파수는 FM라디오 주파수보다 Hz가 낮기 때문에 FM주파수에 비해서 넓은 범위를 커버함. AM라디오 531 ~ 1602Hz, FM라디오 87.5 ~ 108 MHz
ㅇ주파수 스펙트럼이란?
햇빛을 프리즘에 통과시키면 일곱 색깔의 무지개로 나누어지는 것처럼 주파수(진동수)가 다른 빛들이 프리즘을 통과할 때 진동수에 따라 다른 각도로 휘어짐.
햇빛이 일곱 색깔로 펼쳐지는 것처럼 소리도 주파수 순으로 펼쳐놓을 수 있는데 이걸 주파수 스펙트럼이라고 함.
ㅇ푸리에의 변환
푸리에의 변환은 임의의 입력신호를 다양한 주파수를 갖는 주기함수들의 합으로 분해하여 표현하는 것.
'Study > class note' 카테고리의 다른 글
딥러닝 / LeNet, cifar10, VGG16 (0) | 2022.04.25 |
---|---|
딥러닝 / 개와 고양이 음성 분류 신경망 코드 (0) | 2022.04.21 |
딥러닝 / 사자, 고양이 분류기 만들기 (0) | 2022.04.21 |
딥러닝 / 사과와 파인애플 분류 신경망 만들기 (0) | 2022.04.21 |
딥러닝 / 신경망 활용 사용자 인터페이스 만들기 (0) | 2022.04.20 |