Найти шаг и изменить его в MATLAB - PullRequest
0 голосов
/ 26 января 2019

Доброе утро, у меня проблемы с поиском высоты тона и смещением в MATLAB. Программа компилируется, но когда я пытаюсь озвучить смещенную дорожку, выходит странный звук, и найденная высота звука неверна. В чем проблема?

 [audioIn,fs] = audioread('Silae.wav');
 [f0,idx] = pitch(audioIn,fs);

 subplot(3,1,1)    %2.1.1
 plot(audioIn)
 ylabel('Amplitude')

 subplot(3,1,2)    %2.1.2
 plot(idx,f0)
 ylabel('Pitch (Hz)')
 xlabel('Sample Number')

 [f1,idx] = pitch(audioIn,0.3*fs); 
 subplot(3,1,3)
 plot(idx,f1)
 ylabel('Pitch n (Hz)')
 xlabel('Sample Number n')
 [f1,idx] = pitch(audioIn,3*fs);  %2 o 4
 subplot(3,1,3)
 plot(idx,f1)
 ylabel('Pitch n (Hz)')
 xlabel('Sample Number n')
 sound(audioIn);

1 Ответ

0 голосов
/ 28 января 2019

Функция pitch возвращает основные частоты звукового вектора audioIn и расположение этих частот. Эта функция не изменяет свой вход, поэтому, когда вы делаете pitch(audioIn,0.3*fs), audioIn останется неизменным.

Итак, в отношении того, что вы выполняете на audioIn, ваш код может быть обобщен как:

[audioIn,fs] = audioread('Silae.wav');
sound(audioIn);

По умолчанию функция sound (без аргумента о Fs):

sound (y) отправляет аудиосигнал y на динамик с частотой дискретизации по умолчанию, равной 8192 герц.

Итак, проблема в том, что если ваш входной файл Silae.wav имеет частоту 44100 Гц, при воспроизведении его на частоте 8192 Гц вы будете воспроизводить его примерно в 5 раз медленнее, чем нужно, делая его странным и глубоким звуком.

...