공부하고 준비한대로 발표가 되지 못해서 아쉬웠습니다...
이 페이지에서는 개략적인 설명을 하겠지만 프로젝트를 진행하면서 각 부분에 대해서 자세하게 설명하겠습니다.
PPT파일 딸랑 하나 올리는것보다 이쪽이 더 낳을것 같네요.
1
영어발음평가 시스템 개발부분을 맡게 됐습니다.
2
영어발음 학습 앱입니다. 학습자가 영어단어를 검색하고 이 발음을 TTS로 이루어진 음성으로 듣게됩니다.
발음평가를 실행하여 학습자의 발음을 녹음합니다.(여기까지는 일반적인 앱과 같습니다.)
TTS의 발음과 사용자 입력 음성간의 분석을 통하여 발음을 비교하고 수치적인 평가와 시각적인 파형을 출력해 줍니다.
음성이 저속으로 재생되면서 상태표시바가 움직이기 때문에 어느 지점에서 어떤식으로 발음이 다른지 알 수 있습니다.
피드백을 받았는데 특징추출 후의 단순한 파형매칭으로는 학습자에게 도움이 안됩니다. 음성학적인 접근에서 억양(pitch), 강세(intensity), 지속시간(duration), 음색(timbre) 특징의 매칭 비교가 필요합니다.
3.
분석부의 개략적인 흐름입니다. 음성신호가 입력된 후 잡음처리 및 전처리를 한 후, MFCC기법으로 특징을 추출합니다. DTW기법으로 특징 유사도를 평가한 후 평과결과 및 파형을 출력합니다.
4.
음성의 분석전에 두 신호의 빅에서 장해가 되는 잡음을 제거해야 합니다. 외부 잡음의 제거 기법으로 널리 사용되는 스펙트럼 차감법을 이용할 것입니다.
5.
스펙트럼 차감법은 '시간영역의 신호'를 '주파수영역 의 신호'로 변환 후 입력신호 스펙트럼 크기와 잡음 스펙트럼 크기를 추정하고 추정된 입력신호 스펙트럼 크기에서 잡음 스펙트럼 크기를 차감합니다.
그래프를 보면 음성인식분야의 경우 잡음제거를 했을 때의 인식률이 월등히 높다는 것을 알 수 있습니다.
6.
MFCC에 들어가기 전에 기침등의 가벼운 잡음을 제거합니다.
zcr(zero cross rate:영교차율)과 ster(short term energy rate:단기에너지율?)의 임계값을 설정하여 이를 벗어나는 값을 제합니다.
이를 통해 인간의 청각시스템이 1kHz이상의 스펙트럼 영역에 민감하다는 것을 어느정도 보상 가능합니다.
7.
MFCC를 통한 특징추출의 개략적인 진행입니다.
MFCC는 음성을 작은 구간으로 나누고 각각의 구간에서 특징을 추출하는 방법으로 MFCC의 mel은 인간의 귀가 갖는 비선형적인 주파수 특성(log)를 나타내는 단위입니다.
입력된 음성신호는 Pre-emphasis를 통하여 '음성부분'을 강화시키고, windowing과 STFT를 통해 시간.주파수영역의 파워스펙트로그램을 얻습니다. 이를 Mel filter Bank에 통과시킴으로 오디오스펙트로그램을 얻은 후 로그화를 통해 Envelope와 백색잡음을 분리하고 이에DCT(Descrete Cosine Transform)을 거쳐 '큐프렌시'영역의 MFCC를 구한다. 여기에 'liftering'을 하여 가중치를 보상한 후 에너지와 델타(속도) 및 더블델타(가속) 특징을 통해 특징추출을 보조합니다.
8.
Pre-emphasis : 전송 주파수의 특정 부분을 사전에 강조합니다. 이를 통하여 신호 대 잡음비, 주파수 특성, 일그러짐 특성을 개선하고 '포만트'를 강조합니다.
고역통과로 신호주파수가 높은쪽을 강하게 변조합니다. 사람의 발성구조에 숨겨진 고주파 성분의 보상과 '고주파 포만트의 중요도'를 강조합니다.
9.
FFT를 사용하면 주파수 도메인에 대하여 신호를 처리하게 됩니다. 그러나 이 경우에는 시간적인 변화가 많이 반영되지 않을 수 있기에, windowing과 함께 STFT를 통하여 스펙트럼 성분이 변하지 않는 짧은 순간의 연속을 분석하여 시간영역에 따른 정보도 함게 얻게됩니다. 이렇게 시간-주파수 도메인에 근거한 Spectrogram을 구하게 됩니다.
10.
STFT한 결과는 프레임당 샘플량이 많습니다. 이 많은 데이터 양에서 적절한 파라메터를 뽑아주어야 합니다. Mel-scale filter bank에 통과시켜 음성신호의 주파수 대역을 다수개의 대역통과 필터에 의해 분할하여 필터뱅크 에너지를 구합니다. 이것이 Audio Spectrogram 입니다. 멜주파수와 주파수는 1kHz 이상부터 로그함수의 관계를 가지고 이는 청각기관의 주파수에 따른 반응과 유사합니다.
11.
앞에서 구한 Audio Spectrogram 에서 log화를 시키면 곱해져 있는 두 성분의 분리가 가능합니다.
log화를 통하여 음성신호를 엔빌로프와 백색잡음으로 나눕니다. 이 엔빌로프에 대하여 DCT를 곱해줌으로 Mel-주파수 도메인을 '큐프렌시'도메인으로 표현하게 됩니다.
이 과정에서 DCT에 의한 과도한 압축에 의해 저순위의 캡스트럼 계수에 과도한 가중치가 주어질 수 있는데요. 이를 liftering을 통하여 보상할 수 있습니다.
이후 Delta와 Double-Delta특성을 구하여 특징추출을 더 정확히 하는데, 이 부분은 실험을 하면서 설명해야겠습니다.
12.
발음평가부분입니다. DTW로 발음평가를 하기전에 끝점추출을 통해 시작부분과 끝부분을 검출합니다.
실시간 음섬검출에서, 고립단어 등에서 상당히 중요합니다.
영교차율과 구간에너지를 통하여 끝점을 추출합니다만 실시간 영역에서는 부적한 면이 있다고 하니 이에 맞는 변형이 필요하다고 합니다.
13.
발음평가 부분입니다. 음성인식에서는 사용자 입력음성과 비교하여 가장 거리가 짧은 참조패턴을 찾아내는데 사용되었으나 이와같이 대사상이 되는 참조패턴이 명백한 상태에서 패턴간의 거리를 측정하여 발음 유사도 평가에 반영한다는 것이 애초의 목표였습니다. 그러나 피드백을 받은 후, 억양, 강세등의 음성학적 특징을 따로 골라내어 발음평가를 하도록 합니다. 각 음성학적 요소에 가중치를 줍니다. 이부분이 굉장히 미묘하고 복잡한 부분입니다. 단순히 DTW를 사용해서는 단순 매칭이 될 수 밖에 없으며 성대모사가 목표가 아니니까요. 발음(강세, 억양, 속도, 높이, 음색)을 반영해야 하는것입니다.
1. 입력된 발음이 대상과 같은 의미를 지니는 지를 먼저 판별합니다. 여기에서는 STT가 사용될 수도 있습니다.
2. 위와 같은 의미로 엔빌로프의 비교를 행합니다.
3. 강세 억양등 각각의 음성학적 특징벡터를 추출하고 서로 비교하도록 합니다.
-----------------------------------------------------
아직 여러가지 면에서 부족하고 진행중에 방향을 바꾸는 부분이 생길거라 생각합니다. 이는 프로젝트를 진행하면서 반영하도록 하겠습니다.
'Project > 음성평가시스템' 카테고리의 다른 글
과제진행순서 (0) | 2013.08.08 |
---|---|
Flow_chart (0) | 2013.08.07 |
괜찮은 음성분석 소프트웨어 [Praat] (0) | 2013.08.07 |
개발환경준비 (0) | 2013.08.06 |
프로젝트로 음성평가 시스템을 만들어야 합니다. (0) | 2013.08.06 |