오늘은 audio data를 다룰 때 많이 쓰이는 feature들에 대해 정리해 보려 한다.
간단한 것들은 새로 배울 때마다 그때그때 내용을 추가할 예정이다.
<자주 사용하는 라이브러리>
librosa : 대표적으로 사용하는 auduio domain 라이브러리이다. MFCC/Mel Spectrogram 등을 추출할 때 사용하며 이외에도 여러 피처를 추출할 때 자주 쓰인다.
(Document) https://librosa.org/doc/latest/index.html
opensmile : pitch, energy, formant 등을 추출할 수 있는 기능을 제공한다. (이러한 피처들이 감정 분석에 중요한 요소라고 한다)
(Document) https://audeering.github.io/opensmile/
parselmouth : Praat software를 위한 라이브러리라고 한다. 자세한 내용은 이 링크 참고 : https://inspirit941.tistory.com/250
*Praat : 간단한 음성분석에서 음성 합성, 시각화 등 복잡하고 전문적인 처리까지 가능한 도구
(Document) https://parselmouth.readthedocs.io/en/stable/
주의! 본인은 이 라이브러리 다운받으려고 pip install parselmouth 수십번 해봤다가 실패했는데, 한참 뒤에서야 pip install praat-parselmouth가 올바른 방법임을 알게 되었다,,,,,, 이 글을 보는 여러분들은 시간 버리지 않길
pyACA : tempo, beat, harmonic elements등의 피처를 추출할 수 있는 기능을 제공한다. (특히 music에서 많이 사용되는 것 같다)
(Document) http://www.alexanderlerch.com/pyACA/docs/html/index.html
Amplitude
What
주어진 시간에서 소리의 강도(세기)를 나타낸다.
Why
다른 여러 feature들을 추출할 때 광범위하게 사용된다.
How
소리는 2차원 상에 시간 축과 진폭 축으로 나타내기 때문에, 자연스럽게 구해진다.
Fundamental Frequency(f0)
(참고 : https://www.studysmarter.co.uk/explanations/english/phonetics/fundamental-frequency/)
What
합성 고조파 중에서 가장 작은 양의 주파수를 의미한다. 즉, 한 음역 부분에서 가장 낮은 음이다.
Why
이 f0을 기반으로 pitch를 구한다.
How
import librosa
import librosa.display
import librosa_yin
import matplotlib.pyplot as plt
# Load audio file
y, sr = librosa.load('audio_file.wav', sr=None)
# Extract the fundamental frequency using pYIN
# 통상적으로 C2가 남자가 낼 수 있는 가장 낮은 음, C7이 여자가 낼 수 있는 가장 높은 음
f0, voiced_flag, voiced_probs = librosa_yin.pyin(y, fmin=librosa.note_to_hz('C2'), fmax=librosa.note_to_hz('C7'), sr=sr)
# Plot the fundamental frequency over time
times = librosa.times_like(f0)
plt.figure()
plt.plot(times, f0, label='F0 estimate')
plt.legend()
plt.xlabel('Time (s)')
plt.ylabel('Frequency (Hz)')
plt.title('Fundamental Frequency over Time')
plt.show()
Formant
(참고) https://blog.naver.com/200613241/221149632021
What
한국어로 '음형대'이다. 소리가 공명되는 특정 주파수 영역을 의미한다.
Why
speech analysis, characterizing vowel sounds, and speaker characteristics 등에 사용된다.
How
https://gist.github.com/inspirit941/9f758f7f748a735e5bcd31a6521f7eab
Prosody
What
한국어로 '운율'이다.
Why
How
Pitch
What
음의 높낮이를 나타낸다.
Why
여러 소리를 각 소리별로 구분해내는 데에 중요한 역할을 한다. 여러 사람이 대화를 할 때 남자 목소리와 여자 목소리가 구분되는 이유라고 생각하면 될 것 같다.
How
https://librosa.org/doc/main/generated/librosa.piptrack.html
https://m.blog.naver.com/gaechuni/221650457087
Spectral Entropy
Spectral Flux (Superflux)
What
Spectral Flux는 오디오 신호의 파워 스펙트럼이 한 프레임에서 다른 프레임으로 얼마나 변하는지를 정량화한 것이다.
그리고 추가로 소개할 Superflux는 기본적인 Spectra Flux 개념의 확장으로, vibrato(음떨림) 이나 rapid, minor spectral changes와 같은 음악 신호에서 흔히 발생하는 변동에 대해 더 강건하게 설계되었다. 특히 더 정확한 시작 감지에 유용하다고 한다.
Why
둘 다 음악 노트나 다른 사운드 이벤트의 시작을 감지하는 데 자주 사용된다.
슈퍼플럭스의 스펙트럴 플럭스에 대한 차별점은 슈퍼플럭스가 변동의 영향을 줄이는 필터를 포함한다는 것이다. 스펙트럴 차이를 계산하기 전에 여러 이전 프레임에 걸쳐 이동 평균(Moving Average, MA)이나 중앙값 필터(Median filter)를 사용하여 스펙트럼 데이터를 평활화(smooth)하는 것 등이다.
How
그러니 Superflux를 사용하는 편이 더 나을 것이다.
https://librosa.org/librosa_gallery/auto_examples/plot_superflux.html