Java 互相关:Android AudioRecord为TDoA创建样本数据
在我的Android智能手机一侧,我正在使用AudioRecord.read()录制音频流。对于录音,我使用以下规格Java 互相关:Android AudioRecord为TDoA创建样本数据,java,android,signal-processing,audio-recording,cross-correlation,Java,Android,Signal Processing,Audio Recording,Cross Correlation,在我的Android智能手机一侧,我正在使用AudioRecord.read()录制音频流。对于录音,我使用以下规格 采样频率:44100赫兹 单通道 PCM-16位 我用于AudioRecord.read()的数组大小:100(短数组) 使用这个小尺寸可以让我每0.5ms读取一次(平均值),所以我可以在以后使用这个时间戳进行多边测量(至少我这么认为:-))。如果我能用互相关来确定时差,这可能就过时了?!?(见下文) 另一方面,我有三个扬声器使用WebAudio API和以下规范发出不同
- 采样频率:44100赫兹
- 单通道
- PCM-16位
- 我用于AudioRecord.read()的数组大小:100(短数组)
- 使用这个小尺寸可以让我每0.5ms读取一次(平均值),所以我可以在以后使用这个时间戳进行多边测量(至少我这么认为:-))。如果我能用互相关来确定时差,这可能就过时了?!?(见下文)
- 频率1:17500赫兹
- 频率2:18500赫兹
- 频率3:19500赫兹
- 信号长度:200ms+5ms增益节点的淡入淡出,所以总计210ms
另一个问题:到目前为止,如何确定时差的想法是否正确?以下是我在过去几天里学到的一些经验教训:
- 我可以使用互相关(xcorr)或频率识别技术来确定时差。后者远不精确。所以我把重点放在xcorr上
- 我可以通过在我记录的信号和两个参考信号上应用xcorr来实现时差。我的记录有1000个样本。使用xcorr,我可以识别样本500处的声音A和样本600处的声音B。因此,我知道它们的时间差为100采样(根据采样率可以转换为秒)
我希望到目前为止这是正确的,并涵盖了其他人的一些问题:-)以下是我在过去几天里学到的一些经验教训:
- 我可以使用互相关(xcorr)或频率识别技术来确定时差。后者远不精确。所以我把重点放在xcorr上
- 我可以通过在我记录的信号和两个参考信号上应用xcorr来实现时差。我的记录有1000个样本。使用xcorr,我可以识别样本500处的声音A和样本600处的声音B。因此,我知道它们的时间差为100采样(根据采样率可以转换为秒)