使用 MATLAB,我创建了一个 WAV 文件,其中包含 50 毫秒的 1KHz 纯音。我在两个相距 2m 的扬声器上同时播放这种音调。在其中一个扬声器的正前方放置一个麦克风,因此距离另一个扬声器 2m。
麦克风因此记录 1KHz 音调,延迟约 6ms(声速 ±343m/s,相距 2m)
使用录制的声音和原始声音,我想计算扬声器之间的实际时间延迟
% Create pure tone: 1000Hz, 150ms
Fs = 48828.125;
Freq = 1000; %Hz
duration= 50; %ms
N = round( duration / 1000 * Fs );
Fn = Fs/2;
sig = cumsum( ones( 1, N ) ) - 1;
sig = sig / Fs;
snd = sin( 2 * pi * Freq * sig);
% Possible recording: Time delay of 6ms
timedly = round( 6 / 1000 * Fs ); % 6ms time delay between speakers
rec = [snd zeros(timedly,1)'] + [zeros(timedly,1)' snd] * 0.75; % second speaker will be recorded softer
rec = rec + randn( 1, length(rec) ) * 0.2; % Add some noise
plot( rec )
我正在考虑根据原始声音文件创建一个过滤器并将其应用于录制的声音。这有意义吗,还是我应该从另一个方向搜索解决方案?