Расчет высоты звука в MATLAB? - PullRequest
1 голос
/ 05 августа 2010

Вчера я доработал код для определения звуковой энергии дорожки, отображаемой с течением времени, который я в конечном итоге буду использовать как часть моего проекта создания эскизов звука.

Однако мне бы также хотелось, чтобы метод, позволяющий определять высоту дорожки, отображаемой во времени, поэтому у меня есть 2 варианта, на которых можно основывать свое исследование.

[y, fs, nb] = wavread('Three.wav');                  %# Load the signal into variable y

frameWidth = 441;                                    %# 10 msec
numSamples = length(y);                              %# Number of samples in y
numFrames = floor(numSamples/frameWidth);            %# Number of full frames in y
energy = zeros(1,numFrames);                         %# Initialize energy

for frame = 1:numFrames                              %# Loop over frames
  startSample = (frame-1)*frameWidth+1;              %# Starting index of frame
  endSample = startSample+frameWidth-1;              %# Ending index of frame
  energy(frame) = sum(y(startSample:endSample).^2);  %# Calculate frame energy
end

Это правильный код для энергетического метода, и после исследования я обнаружил, что мне нужно использовать дискретное временное преобразование Фурье, чтобы найти текущий шаг каждого кадра в цикле.

Я думал, что этот процесс будет столь же легким, как изменение последних строк кода для включения команды "fft" MATLAB для вычисления дискретных преобразований Фурье, но все, что я получаю, - это ошибки о несбалансированном уравнении.

Помощь будет высоко ценится, даже если это просто общий указатель в правильном направлении. Спасибо.

1 Ответ

1 голос
/ 05 августа 2010

Определение высоты тона лот сложнее, чем просто применение DFT.Это также зависит от природы источника - например, для речи подходят разные алгоритмы, а не музыкальный инструмент.Если это музыкальная дорожка, как, по-видимому, и подразумевает ваш вопрос, то вам, вероятно, не повезло, поскольку нет очевидного способа определения единого значения высоты звука для нескольких музыкальных инструментов, играющих вместе (как бы вы даже определили значение высоты звука ) в этом контексте?).Может быть, вы могли бы быть более точным в отношении того, что вы пытаетесь сделать - возможно, спектр мощности был бы более полезен, чем попытка определить произвольный шаг?

...