使用MATLAB,我创建了一个包含1KHz纯音50ms的WAV文件。这个音调我同时在两个扬声器上播放,彼此相距2米。在其中一个扬声器的正前方放置一个麦克风,距离另一个扬声器2米远。
麦克风因此记录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 )
我正在考虑根据原始声音文件创建一个过滤器并将其应用于录制的声音。这是否有意义,或者我应该从另一个方向搜索解决方案?