본문 바로가기

Domain Knowledge

(9)
다채널 음성인식을 위한 Multi-channel speech processing(Spatial information/ Beamformer) Beamformer를 알기위해 시작한 공부가 multi-channel speech processing의 전반적 내용에 대한 궁금증으로 이어졌다. 지금까지는 single channel에서의 processing에 대해서만 다뤄왔는데, 2개 이상의 마이크를 이용한 speech signal을 어떻게 처리하는 지에 대해, 내가 공부해보려고 정리하는 포스팅이 될 것이다. multi-channel speech recognition(다채널 음성인식)은 어떤 흐름으로 진행되는지 살펴보고, 다채널음성인식을 위한 전처리의 내용을 집중해서 살펴볼 것이다. 본 포스팅은 이 논문을 정리하였다. Multi-channel speech processing 어디에 쓰는가? 채널=마이크갯수 라고 생각하면 된다. 내가 받는 signal이 ..
Normalized log mel-spectrogram의 python 구현 import os import numpy as np import librosa import librosa.display import matplotlib.pyplot as plt min_level_db= -100 def normalize_mel(S): return np.clip((S-min_level_db)/-min_level_db,0,1) def feature_extraction(path): y = librosa.load(path,16000)[0] S = librosa.feature.melspectrogram(y=y, n_mels=80, n_fft=512, win_length=400, hop_length=160) # 320/80 norm_log_S = normalize_mel(librosa.power_t..
MFCC(Mel Frequency Cepstrum Coefficient)의 python구현과 의미 MFCC의 python 구현 python의 librosa 라이브러리를 이용해 쉽게 구현할 수 있다. import matplotlib.pyplot as plt import librosa.display import librosa import numpy as np path = 'sample1.wav' sample_rate=16000 x = librosa.load(path,sample_rate)[0] S = librosa.feature.melspectrogram(x, sr=sample_rate, n_mels=128) log_S = librosa.power_to_db(S, ref=np.max) mfcc = librosa.feature.mfcc(S=log_S, n_mfcc=20) delta2_mfcc = libro..
LPC(Linear Prediction Coding, 선형예측부호화)와 formant estimation LPC에 대한 소개 음성신호처리에서 강력한 음성분석기법중 하나가 바로바로 Linear predictive analysis이다. 이 기법은 음성의 생성모델의 파라미터 (그 중 vocal tract 필터)를 예측하는 좋은 방법이다.(이에 대해 아래에 자세히 설명예정) 이 기법은 여러분야에 쓰일 수 있는데 첫째로 낮은 bit rate로 전송(통신)을 하기위한 신호의 한가지 표현으로 쓰일 수도 있고. 압축하여 저장하는데에 쓰일 수도 있다. 또한 automatic speech나 화자인식에 쓰일 수있다. 이번 포스팅에서는 실제적인 음성application에 널리 쓰이는 Linear predictive analysis에 대해 소개할 것이다. Linear prediction방법은 LPC 즉, speech를 coding..
Pitch detction(ACF, AMDF, Cepstrum) 유성음의 pitch 음성은 유성음과 무성음으로 구분할 수 있다. 유성음은 소리가 vocal tract를 타고 울려서 나오는 소리이므로 준 주기적인 성질이 나타나는데 이러한 준 주기적인 파형의 기본 주파수를 pitch라고 한다. 음성신호에서 Pitch는 40~400Hz 사이에 존재한다. Autocorrelation method [Autocorrelation을 통한 Pitch검출 방법] Autocorrelation은 어떤 신호가 잡음과 함께 있을 때 그 신호의 주기검출에 주로 이용된다. 따라서 autocorrelation을 이용하면 음성신호의 주기를 쉽게 확인할 수 있다. 유성음의 준 주기적 파형의 기본 주파수를 pitch라 한다. Pitch는 음성신호의 샘플링 주파수를 autocorrelation의 fir..
Speech production and perception(음성의 생성과 인지) Speech Chain speech coding이나 speech recogntion등의 speech를 처리하는 실질적인 시스템을 만들기 위해서는 실제로 인간이 어떻게 speech를 통해 서로 communication하는지 아는 것은 매우 중요하다. 결국 우리는 인간이 하는 음성의 인식과정을 기계가 모사하도록 만들고싶기 때문이다. 우리가 말하고 그 말을 듣고 이해하는 과정을 알아보도록 하자. 음성이 생성되어 전달되는 과정을 네트워크의 5계층처럼 단계별로 나누어 표현할 수 있겠다. ​Linguistic level: 어떤 생각이나 아이디어를 표현하기 위해서 어떤 sound로 말을 할지 basic sound를 선택하는 레벨 Physiological level : vocal tract의 구성요소들이 언어학적 발화..
음성신호처리에서 frame 생성시 overlap을 하는 이유 동아리에서 논문세미나를 하다가 speech를 전공하지 않으시는 분들에게 왜 frame을 overlap하냐는 물음을 받았다. 음성신호를 연구하는 사람들이라면 overlap을 당연하게 받아들이겠지만, 어떻게 말로 표현해야할지 고민이 되어서 간단히 정리해두기로 한다. (사실 이 링크 한글번역임) 그리고 왜 frame 단위의 처리를 하는 지에 대해서 내가 쓴 포스팅을 이 링크에서 확인할 수 있다. window 와 frame 음성신호는 stationary하지 않지만 생각보다 그렇게 빠르게 변하지도 않는다. 이때 신호를 stationary한 작은 청크로 잘라서 처리하면 되겠다는 생각을 할 수 있다. 윈도잉(windowing)은 신호를 어느부분을 볼 지 정하는 창이다. 이를 이용해 신호를 작은 청크로 자른다. 이 청..
STFT(Short-Time Fourier Transform)와 Spectrogram의 python구현과 의미 음성신호처리에서 아주 기본적인 feature로 spectrogram이 존재한다. spectrogram을 많이 쓰지만 왜 짧은 시간으로 나눠서 Fourier transform을 하는 지에 대해 생각하지 않고 쓰는 경우가 많다. Python에서 함수 한 줄로 구할 수 있는 spectrogram의 구현을 먼저 알아보고 후에 그 의미도 알아보자. STFT 와 Spectrogram python 구현 Spectrogram은 위와 같은 그림으로 표현할 수 있다. x축은 시간 축(단위: frame), y축은 주파수를 의미한다. 그리고 각 시간당 주파수가 가지는 값을 값의 크기에 따라 색으로 표현하여 3차원을 2차원으로 표현하게 된다. 즉, 시간의 흐름을 가지는 푸리에 변환이라고 생각할 수 있다. 각각의 frame(짧은..