MFCC 계산에서 DCT 단계의 올바른 해석입니까?


9

이것은 여기서 논의 의 연속입니다 . 나는 거기에 의견을 말하지만 50 명의 담당자가 없으므로 새로운 질문을하고 있습니다.

MFCC 계산 프로세스의 DCT 단계를 이해하는 방법은 다음과 같습니다. 필터의 겹침으로 인해 로그 뱅크 크기 (필터 뱅크에서)의 상관 관계를 분리해야합니다. 기본적으로 DCT는 이러한 로그 스펙트럼 크기로 제공되는 스펙트럼 표현을 부드럽게합니다.

아래 이미지의 파란색 선이 로그 스펙트럼 크기의 벡터로 표현 된 스펙트럼을 나타내고 빨간색 선이 DCT 인증 된 벡터라고 말하는 것이 맞습니까?

DCT- 통합 로그 스펙트럼 크기 (즉, MFCC) 대 단순히 로그 스펙트럼 크기 ???


테스트 용 코드는 어디에서 다운로드 할 수 있습니까?
auraham

아래 이미지는? 게시물에 이미지가 없습니다.
Eric Platon

답변:


16

처음부터 시작하겠습니다. cepstrum을 계산하는 표준 방법은 다음과 같습니다.

C(x(t))=F1[log(F[x(t)])]

MFCC 계수의 경우는 약간 다르지만 여전히 비슷합니다.

프리 엠 퍼시스 및 윈도 잉 후 신호의 DFT를 계산하고 멜 스케일로 분리 된 겹치는 삼각 필터의 ​​필터 뱅크를 적용합니다 (일부 경우 선형 스케일이 mel보다 낫습니다).

여기에 이미지 설명을 입력하십시오

cepstrum 정의와 관련하여 이제 스펙트럼 (감소 스펙트럼)의 엔벨로프를 멜 주파수 스케일로 표시했습니다. 이를 나타내면 원래 신호 스펙트럼과 유사하다는 것을 알 수 있습니다.

다음 단계는 위에서 얻은 계수의 로그를 계산하는 것입니다. 이것은 cepstrum이 보컬 등의 임펄스 응답으로부터 신호를 분리하는 동형 변환이어야한다는 사실 때문입니다. 어떻게?

원래의 음성 신호 는 대부분 성대 의 임펄스 응답 와 관련이 있습니다.s(t)h(t)

s^(t)=s(t)h(t)

주파수 영역에서 컨볼 루션은 스펙트럼의 곱셈입니다.

S^(f)=S(f)H(f)

이는 속성에 따라 두 부분으로 분해 될 수 있습니다 .log(ab)=log(a)+log(b)

또한 임펄스 응답은 시간이 지나도 변하지 않기 때문에 평균을 빼면 쉽게 제거 할 수 있습니다. 이제 밴드 에너지의 로그를 취하는 이유를 알 수 있습니다.

cepstrum 정의의 마지막 단계는 Inverse Fourier Transform 입니다. 문제는 우리는 로그 정보 만 있고 위상 정보는 없다는 것입니다. 따라서 적용 후 복소수 계수를 얻습니다.이 모든 노력이 간결한 표현이 되기에는 그리 우아하지 않습니다. FT의 '단순화'버전 인 이산 코사인 변환을 수행하여 실제 계수를 얻을 수 있습니다! 이 절차는 코 시누 소 이드를 로그 에너지 계수와 일치시키는 것으로 시각화 할 수 있습니다. cepstrum이 '스펙트럼의 스펙트럼'이라고도 기억하십니까? 이것이 바로 우리의 로그 에너지 엔벨로프 계수에서 주기성을 찾는 단계입니다.F1ifft

여기에 이미지 설명을 입력하십시오

이제 여러분은 원래 스펙트럼이 어떻게 생겼는지 이해하기가 어렵다는 것을 알게되었습니다. 또한 우리는 일반적으로 처음 12 개의 MFCC 만 사용하고 있는데, 더 높은 것은 로그 에너지의 빠른 변화를 설명하기 때문에 일반적으로 인식률이 떨어집니다. 따라서 DCT를 수행하는 이유는 다음과 같습니다.

  • 원래 IFFT를 수행해야하지만 DCT에서 실제 계수를 얻는 것이 더 쉽습니다. 또한 우리는 더 이상 전체 스펙트럼 (모든 주파수 빈)을 갖지 않지만 mel 필터 뱅크 내에 에너지 계수를 가지므로 IFFT 사용은 약간 과잉입니다.

  • 첫 번째 그림에서 필터 뱅크가 겹치므로 서로 옆의 에너지가 두 개 사이에 분산되어 있습니다. 가우스 혼합 모델 (Gussian Mixture Models)의 경우이 속성은 좋은 속성이라는 점을 명심하십시오. 여기서 완전 공차 대신 모든 계수 (상관 계수가 상관 됨) 대신 대각선 공분산 행렬을 사용할 수 있습니다 (다른 계수간에 상관 관계 없음).

  • 멜 주파수 계수를 역 상관시키는 다른 방법은이 목적을 위해서만 사용되는 기술인 PCA (Principal Component Analysis)입니다. 운 좋게도 DCT가 신호를 장식 할 때 PCA와 매우 유사하다는 것이 입증되었으므로 Discrete Cosine Transform을 사용하는 또 다른 이점이 있습니다.


일부 문헌 :

Hyoung-노랭 김 니콜라스 모로, 토마스 시코 - MPEG-7 오디오 및 너머 : 오디오 컨텐츠 인덱싱 및 검색


1
IFFT에서 복소수의 절대 값을 가져올 수없는 이유는 무엇입니까? 복소수를 다루기가 훨씬 더 어려운 경우, 왜 우리는 항상 DCT를 수행하는 것이 아니라 cepstrum을 계산할 때 IFFT를 취하는가? 설명 주셔서 감사합니다. 그 수치가 특히 도움이되었습니다.
acannon828

1
@ acannon828 : 편집 한 답변의 마지막 3 점을 참조하십시오. 이제 모든 것이 설명되기를 바랍니다.
jojek

훌륭한 답변 .. 당신이 첨부 할 수있는 모든 문헌.
밥 버트

1
@ 밥 밥 : 거기 간다!
jojek

책 주셔서 감사합니다. 대부분의 것들이 그 설명에있는 것 같습니다. 이 책은 성대에 관한 이론도 다루고 있습니까?
밥 버트

3

DCT를 평활시키는 것보다 스펙트럼을 나타내는 데 필요한 치수 수가 줄어 듭니다. DCT는 처음 몇 개의 계수에서 스펙트럼의 에너지 대부분을 압축하는 경향이 있기 때문에 차원 축소에 좋습니다.


감사. 이것은 @pichenettes가 차원 축소의 의미를 이해하는 데 도움이되었습니다.
acannon828

3

그 배후의 이론적 근거는 필터의 중첩으로 인한 로그 스펙트럼 크기 (필터 뱅크에서)의 상관 관계를 분리하는 것입니다. 기본적으로 DCT는 이러한 로그 스펙트럼 크기로 제공되는 스펙트럼 표현을 부드럽게합니다.

이것은 올바르지 않습니다. 로그 스펙트럼 크기는 겹치기 때문일뿐만 아니라 숫자 시퀀스가 ​​"자연스런 음성 및 소리에서 발생하는"일련의 로그 스펙트럼 크기를 나타 내기 때문에 상관 관계가 있습니다. "의미있는"로그-스펙트럼 크기는 고주파수 등의 전체 에너지 감소와 함께 다소 부드러운 경향이 있습니다. 모든 "의미있는"로그-스펙트럼 크기 벡터의 공간의 크기는 40보다 작거나 사용하는 밴드 수; DCT는 40 채널 데이터를이 작은 공간에 매핑하기위한 차원 축소로 볼 수 있습니다.

기본적으로 DCT는 이러한 로그 스펙트럼 크기로 제공되는 스펙트럼 표현을 부드럽게합니다.

DCT는 스무딩을 수행하지 않습니다. DCT 데이터에서 재구성 할 때 평활화가 나타납니다. 평활화는 DCT에 의한 정보 손실과 그에 따른 계수 잘림으로 인한 것입니다.

그러나 MFCC 계수는 평활 스펙트럼을 저장하지 않습니다. 상관되지 않은 DCT 계수 시퀀스를 저장합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.