Временная задержка звукового сигнала

Вот сценарий:

Я сгенерировал сигнал, который: 200 мс при 2 кГц 1000 мс нулей 200 мс при 2 кГц

и я хочу рассчитать временную задержку между ними, а не между двумя синтетическими звуковыми частями. но воспроизводя сигнал на динамике и записывая его с помощью микрофона (добавляет шум)

Fs = 44100

я пробовал: 1. взаимная корреляция 2. вычисление разницы между двумя максимумами окна RMS при размере 8820 выборок. (максимум получаем, когда окно находится на звуковой части.

расстояние между динамиком и микрофоном около 30 см. не могу добиться стабильного результата. Зачем?


person Ran    schedule 03.06.2014    source источник


Ответы (1)


Если вы хотите сделать это точно и последовательно, то один метод, который я использовал в прошлом, состоит в том, чтобы зациклить один канал (например, левый канал) с выхода на вход, а затем использовать другой (то есть правый) канал для проверки синхронизации. . Затем вы можете перекрестно коррелировать между левым (петлевым) и правым (фактическое аудио) каналами. Это устраняет многие потенциальные источники ошибок (задержки буфера, аппаратные задержки, проблемы с программным обеспечением и т. д.), поскольку левый и правый каналы всегда будут «синхронизированы», и вы сможете выполнять измерения с точностью до +/- 1 периода выборки ( +/- 12 мкс при 44,1 кГц).

person Paul R    schedule 03.06.2014
comment
10x для ответа, но зацикливание одного канала и одного через звук даст мне задержку между обоими каналами. я хочу знать задержку между двумя звуковыми частями. и поскольку все они находятся в одном и том же синтетическом сигнале, который я создал, я могу точно знать временную задержку между ними, не так ли? Я не думаю, что аппаратная задержка является проблемой здесь, нет? - person Ran; 03.06.2014
comment
ОК - из вопроса не было ясно, что вы пытались измерить, и я предположил, что вы хотели измерить время для физической звуковой части (время между динамиком и микрофоном). Если вам нужна сквозная задержка, включая все программные и аппаратные факторы в вашей компьютерной системе и звуковой карте, тогда жизнь становится намного сложнее, и она может быть подвержена значительному количеству джиттера, в зависимости от того, какую ОС вы используете. используют, и вышеупомянутые другие факторы. - person Paul R; 03.06.2014
comment
почему я подвергаюсь всему вышеперечисленному? у меня есть 1 сигнал, который я создал, который включает звуковую тишину и звук. если я сыграю на 44100, я ожидаю, что я планирую, нет? затем я записал все вместе, и только в автономном режиме я пытаюсь решить это. - person Ran; 03.06.2014
comment
Если подумать, в вашем цикле есть 3 задержки: (i) программное обеспечение для динамика, (ii) динамик для микрофона и (iii) микрофон для программного обеспечения. (i) и (iii) оба подвержены задержкам из-за (многоуровневой) буферизации, планирования задач, задержки прерывания, аппаратной задержки и различных других проблем. Эти задержки также могут быть подвержены дрожанию, в зависимости от того, как и когда вы инициируете воспроизведение и запись. FWIW, программное обеспечение для аудиоконференций должно иметь дело с этими непредсказуемыми задержками при выполнении эхоподавления, и это нетривиальная проблема. - person Paul R; 03.06.2014
comment
от динамика к микрофону — постоянная задержка, время прохождения звука одинаково для обеих звуковых частей, так что это не проблема. Первая и третья задержки повторяются для обеих частей звука. мы должны помнить, что это один длинный сигнал, я ожидаю, что разрыв в 1 секунду останется 1 секунду. я не жду 1 секунду в коде. но пусть и просто тихо играет в течение 1 секунды между обеими звуковыми частями. - person Ran; 03.06.2014
comment
также, когда я использовал гарнитуру для наушников и комплект микрофона, я получил идеальное совпадение, но когда я заменил наушники на динамик (который не является частью гарнитуры), это начало сходить с ума. - person Ran; 03.06.2014
comment
Похоже, у вас больше проблем, чем просто вышеупомянутые задержки - может быть, ваш метод оценки задержки не очень надежен при наличии фонового шума? Вероятно, вам следует попытаться устранить одну проблему за один раз. - person Paul R; 03.06.2014
comment
Я предполагаю, что если я воспроизведу один сигнал со звуком паузы. и я записываю это с микрофона, разве пауза не останется прежней длины. я утверждаю, что ни одна из вышеперечисленных проблем не существует. (еще раз большое спасибо за ответы) - person Ran; 03.06.2014
comment
Да, пауза между двумя звуковыми пакетами будет одинаковой, конечно, при условии, что все это содержится в одном буфере воспроизведения. Но ведь это не то, что вы пытаетесь измерить? Возможно, вам нужно объяснить, чего именно вы пытаетесь достичь, иначе мы можем попасть в ловушку Проблема XY. - person Paul R; 03.06.2014
comment
это шаг 1, это то, чего я пытаюсь достичь :) я знаю, что это основное, что раздражает. в симуляции все работает, но когда я использую настоящий динамик и микрофон, это не работает - person Ran; 03.06.2014
comment
ОК, похоже, ваш метод оценки задержки не является надежным при наличии шума. Если вы хотите задать вопрос о методе, я предлагаю вам задать новый вопрос на dsp.stackoverflow.com , так как сейчас это кажется вопросом теории DSP, а не проблемой программирования MATLAB. - person Paul R; 03.06.2014