С одной стороны с моим Android-смартфоном Я записываю аудиопоток с помощью AudioRecord.read(). Для записи я использую следующие функцииCross Correlation: Android AudioRecord создает образцы данных для TDoA
- SampleRate: 44100 Гц
- одноканальной
- ИКМ-16Bit
- размер массива я использую для AudioRecord.read(): 100 (короткий массив)
- , используя этот небольшой размер, позволяет читать каждые 0,5 мс (среднее значение), поэтому я могу использовать эту временную метку позже для мультилатерации (по крайней мере, я так думаю :-)). Может быть, это будет устаревшим, если я смогу использовать кросс-корреляцию, чтобы определить TDoA?!? (Смотри ниже)
С другой стороны, у меня три громкоговорителя излучающих различные звуки, используя WebAudio API и следующие характеристики
- FREQ1: 17500 Гц
- Freq2: 18500 Гц
- freq3: 19500 Гц
- сигнала длина: 200 мс + замирание и исчезать из узла усиления 5 мс, так что в сумме 210ms
Моя цель - определить разницу во времени прибытия (TDoA) между излучаемыми звуками. Поэтому на каждой итерации я прочитал 100 байт из буфера AudioRecord, а затем хочу определить разницу во времени (если я нашел один из моих звуков). До сих пор я использовал простой частотный фильтр (используя fft), чтобы определить TDoA, но это действительно неудивительно в реальном мире.
До сих пор я выяснил, что я могу использовать взаимную корреляцию, чтобы определить значение TDoA еще лучше (http://paulbourke.net/miscellaneous/correlate/ и некоторые темы здесь, на SO). Теперь моя проблема: на данный момент я думаю, что мне нужно сопоставить записанный сигнал (мой короткий массив) с генерируемым сигналом каждого из моих трех звуков выше. Но я изо всех сил пытаюсь создать этот сигнал. Используя код, найденный в (http://repository.tudelft.nl/view/ir/uuid%3Ab6c16565-cac8-448d-a460-224617a35ae1/ раздел B1.1. GenTone()), не ясно решает мою проблему, потому что это приведет к тому, что массив будет больше, чем мои записанные образцы. И до сих пор я знаю, что для кросс-корреляции нужны два массива одинакового размера для работы. Итак, как я могу сгенерировать массив образцов?
Другой вопрос: размышление о том, как определить TDoA до сих пор правильно?