2014-11-05 3 views
0

나는 스피치의 로컬 맥시마를 찾는 데 사용되는 MATLAB 코드를 가지고있다. 나는 원래의 음성과 로컬 맥시마를 같은 그래프에 그려 냈다. 그러나 로컬 최대 값을 연결하여 음성의 엔벨로프를 동일한 그래프에 표시하기 위해 선형 보간을 수행하려고합니다. 어떻게해야합니까?스피치에서 감지 된 로컬 맥시마를 보간하는 방법은 무엇입니까?

% just some test data 
a=randn(1,1000); 
peaks = localMaximum(a,[100]); 

figure; plot(a); hold on; plot(peaks,a(peaks),'ro'); 

% values where to interpolate 
x = 1:length(a); 
% interpolate 
v = interp1(peaks,a(peaks),x,'linear'); 
% visualize 
plot(x,v,'g-'); 

그런데 왜 보간 :

a=wavread('F3.wav'); 
    peaks = localMaximum(a,[100]); 
figure; plot(a); hold on; plot(peaks,a(peaks),'ro'); 

localMaximum가

답변

1

이 시도 http://www.mathworks.com/matlabcentral/fileexchange/14498-local-maxima---minima

감사의 기능은 다음과 같습니다 여기에 코드입니다. 입력 음성 전체/반파 정류 동작이며 로우 패스 필터를 통과

plot(peaks,a(peaks),'g-'); 
+0

고마워요 @ 스탄, 대답은 정말로 매우 높이 평가됩니다. 보간의 아이디어는 기사를 읽은 후에옵니다. 사실 나는 봉투를 보여주고 싶다. 내 상황에 맞는 코드가 작동합니다. 그러나 피크를 어떻게 표시 할 수 있습니까? 다음 줄을 추가했지만 오류가 "인덱스 초과 행렬 크기"를 나타냅니다. 나는이 코드를 "plot (peaks, a (peaks), g - '), hold (hold), plot (peaks, a (peaks,'ro '))을 추가한다; – user3471465

+0

Ops 미안, ok @ steffen .. 나는 어디에서 코드가 잘못 추가되었습니다 ... 브래킷입니다 .. 그러나, 정말 감사드립니다. 신의 축복이 있습니다! – user3471465

0

엔벌 로프를 계산하는 또 다른 (단순) 방법 : 동일하게 시각화 할 수있다. 필터의 컷오프 주파수는 엔벨로프가 원하는 "구불 구불하게/매끄럽게"를 결정합니다.

이 방법은 피크 찾기 및 보간보다 계산적으로 더 효율적일 수 있습니다.

+0

감사합니다 @Akshay Rao. – user3471465

관련 문제