早上好,我在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);
答案 0 :(得分:3)
函数pitch
返回音频矢量audioIn
的基本频率以及这些频率的位置。此功能不会修改其输入,因此当您执行pitch(audioIn,0.3*fs)
时,audioIn
将保持不变。
因此,关于您在audioIn
上执行的操作,您的代码可以总结为:
[audioIn,fs] = audioread('Silae.wav');
sound(audioIn);
默认情况下,函数sound
(不带Fs参数):
声音(y)以默认采样率8192赫兹向扬声器发送音频信号y。
因此,问题是,如果您的输入Silae.wav
文件的频率为44100 Hz,则通过以8192 Hz的频率播放它,您会以应有的速度慢大约5倍的播放速度,从而使声音变得奇怪而深沉。 / p>