Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Сравнение 2 аудио сигналов
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
SerjP
Народ помогите решить проблему
есть 2 аудио сигнала первый чистый ,второй копия первого но с примесью посторонних звуков
требуется измерить средний уровень этих самых посторонних звуков за 1-3 секунды
Подскажите алгоритм
Stanislav
Цитата(SerjP @ May 24 2006, 22:58) *
Народ помогите решить проблему
есть 2 аудио сигнала первый чистый ,второй копия первого но с примесью посторонних звуков
требуется измерить средний уровень этих самых посторонних звуков за 1-3 секунды
Подскажите алгоритм
А что, вычесть один сигнал из другого нельзя?
SerjP
Откровенно говоря об этом я недумал - на сон грядущий будет о чём пораскинуть мозгами
Спасибо за направление
_artem_
Наверно можно двумя методами - вычитание сигналов после нахождения взаимокорреляционной функции , и вычитание спектров - как раз то что останется будет пропорционально уровню шумов . Один вопрос - а уровни первого и первого во втором сигналов одинаковы или нет ?
SerjP
Вкратце моя задумка:
автоматическая коррекция уровня громкости музыки в салоне автомобиля в зависимости от шума двигателя и подвески (смотря где едешь - грунт или асфальт).
Я рассуждаю так : в какой то точке солона установить микрофон и сравнивать уровень сигнала с микрофона и с линейного выхода магнитолы и корректировать последний в зависимости от их разности. Другими словами поддерживать в точке установки микрофона определённый уровень громкости например табличным методом (значение "шума"-A равно значению уровня громкости-В и т д.

Если можно поподробней о вычитании спектров , я пишу на AVR не так давно и с обработкой аналоговых сигналов пока не сталкивался, желательно какой-нибудь пример.
beer_warrior
Может в таком случае проще будет аналоговая схема?
Все-таки AVR не сигнальник и будет работать на пределе.
Для аналога решение будет достаточно тривиальное.
Petka
Цитата(beer_warrior @ May 25 2006, 11:07) *
Может в таком случае проще будет аналоговая схема?
Все-таки AVR не сигнальник и будет работать на пределе.
Для аналога решение будет достаточно тривиальное.


Не согласен. Человеку не требуется построить прецизионный или измерительный прибор. Задача проще, всего лишь неким образом изменять громкость автомагнитолки. Для этого не требуется ничего сложного. В данном случае грамотнее всего поступить так:
1) вычислить или взять некоторую граничную частоту на которой возникает шум. т.к. задача вполне конкетная, то этот шум вполне определённый (шум двигателя, колёс и пр.) и достоточно низкочастотный. подозреваю что одного килогерца хватит.
2) выбрать время реакции на изменение шума, допустим секунды 3
3) выбрать размер окна Фурье. (допустим что бы оно помещалось в половину памяти АВРки).
4) дальше просто вычитать отнормированные спектры и принимать решение.

только не надо говорить что АВРка не потянет Фурье на 128 выборок несколько раз в три секунды....

человеку надо попроще, и что бы работало, а вы ему аналог, DSPшки...
beer_warrior
Тут зависит от посталенной цели - если быстро решить задачу - то может и не получиться, тем более SerjP признается, что пишет недавно.
Если это способ подучиться на конкретной задаче - почему нет ,можно и нужно.
SerjP
Это и способ подучиться и задача одновременно.Меня интересует конкретный пример от чего ,так сказать, танцевать...
Proton
Предлагаю сначала отнормировать оба сигнала, потом вычесть исходный сигнал из зашумлёного и посчитать дисперсию или СКО полученых даных, которая далее сравнивается с порогом. Система регулировки будет поддерживать громкость исходного сигнала такой, чтоб рассчитываемая величина как можно точнее соответствовала этому порогу. При превышении увеличивать, а если меньше - уменьшать громкость исходного сигнала. Величина порога определяется экспериментально.
defunct
Цитата(beer_warrior @ May 25 2006, 10:07) *
Может в таком случае проще будет аналоговая схема?
Все-таки AVR не сигнальник и будет работать на пределе.
Для аналога решение будет достаточно тривиальное.


Не пойдет аналоговая схема, т.к. тогда нельзя будет даже чихнуть ;>
вариант со спектром и накоплением СКО вероятно будет лучше всего.
Stanislav
Простите, но зачем лезть в дебри? Не лучше ли задачу решать прямо, как она поставлена?
По-моему, проще измерить мощности сигналов на выходе магнитолы и в салоне. Это можно сделать как аналоговым, так и цифровым способом. А дальше работать уже с ними (вычесть, поделить одно на другое и др.) - в зависимости от требуемого закона управления. Его же нужно сформулировать в первую очередь, без этого задача не имеет смысла.
_artem_
В обшем случае (2 задних 2 передних колонки) имеется в наличии четыре динамика генерируюший звук являюшийся суммой одинаковой и уникальной (на канал) состовляюших при том что мошность звуыка излучаемого каждым громкоговорителем может быть неодинакова. При установке микрофона в салоне он будет принимать сумму прямых и переотраженных звуковых волн .

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

Наверно можно сделать один цикл калибровки при установке чтобы расчитать затухание и задержку на дистанции динамик-микрофон для рабочих частот с тем чтобы получить эти самые передаточные функции для все динамиков по отдельности. думаю что АЧХ микрофона должна быть известной.
defunct
Цитата(Stanislav @ May 25 2006, 18:20) *
Простите, но зачем лезть в дебри? Не лучше ли задачу решать прямо, как она поставлена?

Вы не хуже меня знаете, что не всегда поставленная в форуме задача соответсвует действительности. smile.gif

вот эта задача, (фактически ПОС):
"автоматическая коррекция уровня громкости музыки в салоне автомобиля в зависимости от шума двигателя и подвески (смотря где едешь - грунт или асфальт)."
на мой взгляд решается проще и точнее если производить оценку спектров чистого сигнала и сигнала принятого с датчика, накапливать СКО по фиксированному числу "опытов" и в соответсвии со значением СКО производить коррекцию громкости.

Если же опираться на мощности сигналов, тогда беседа в автомобиле приведет к росту громкости, что я думаю, наврятли входит в задумку автора.
BVU
Изначально ответ от Stanislav давал самое оптимальное решение. Затем хорошую подсказку сделал beer_warrior - решение аналоговым способом. Я не противник цифровой обработки сигналов, но для AVR подобные задачи не совсем уместные. Однозначно что быстрое и качественное решение дает использование дифференциального входа усилителя (параметр подавления синфазного сигнала) за счет которого задача решается 'в лет'...
Petka
Цитата(BVU @ May 26 2006, 10:16) *
Изначально ответ от Stanislav давал самое оптимальное решение. Затем хорошую подсказку сделал beer_warrior - решение аналоговым способом. Я не противник цифровой обработки сигналов, но для AVR подобные задачи не совсем уместные. Однозначно что быстрое и качественное решение дает использование дифференциального входа усилителя (параметр подавления синфазного сигнала) за счет которого задача решается 'в лет'...


Хм... Видимо Вы плохо представляете что получится если в тупую вычесть один сигнал из другого...
SerjP
Да таких дебатов неожидал -спасибо. Тут родилась ещё одна идея ,если поставить фильтр после микрофона где-то на 500-600 гц(я так думаю весь шум гдето в этом пределе) ,всё что выше откинуть, и просто измерять усреднённый уровень полученого сигнала и на его базе регулировать громкость.

и ещё на тему вышесказанного может кто подскажет каким образом можно "производить оценку спектров чистого сигнала и сигнала принятого с датчика" меня интересует описание метода и очень желательно пример.
defunct
Цитата(SerjP @ May 26 2006, 16:57) *
и ещё на тему вышесказанного может кто подскажет каким образом можно "производить оценку спектров чистого сигнала и сигнала принятого с датчика" меня интересует описание метода и очень желательно пример.


Ммм попытаюсь объяснить, хотя в этом вопросе я не очень разбираюсь, поэтому если где скажу что-то не так прошу уважаемую публику поправить..

По теории любой периодический сигнал можно представить в виде суммы составляющих - периодических сигналов синусоидальной формы (гармоник) разной частоты. Спектр это и есть своего рода разложение сигнала на составляющие, где по оси X у вас будет частота, а по Y - мощность (амплитуда) составляющей. Таким образом, расчитав спектр сигналов можно сравнивать мощности составляющих в интересующем частотном диапазоне.

Но на практике периодические сигналы встечаются редко, поэтому берется некий конечный промежуток времени, оцифровывается сигнал на этом участке времени в конечную выбоку, вся выборка представляется одним периодом сигнала. Далее производится разложение периодического сигнала (период которого - накопленная выборка) на составляющие с помощью преобразования Фурье.

см. методы ДПФ и БПФ.

Метод ДПФ (Дискретное преобразование Фурье) позволяет расчитывать как составляющие всей выборки так и только часть спектра в выбранном диапазоне частот.
Метод БПФ (Быстрое преобразование Фурье) - расчитывает все составляющие выборки и имеет некоторые специальные требования к количеству отсчетов выборки, (кол-во отсчетов должно быть кратно степени двойки).

В любом случае в интернете имеется достаточное количество готовых примеров расчета спектра как с помощью ДПФ так и с помощью БПФ. (www.yandex.ru google и т.п.).
_artem_
SerjP, если хотите по быстрому - экспериментально найдите зависимость от напряжения на выходе усилителя к уровню звука измеряемого на микрофоне в условиях полной тишины . Затем предполагаем что зависимость линейная и измеряя напряжение на выходе усилителя вы можете с определенной точностью ожидать напряжение на микрофоне в отсутствии шума. Так вот, если измеренное напряжение на микрофоне больше чем ожидаемое - присутствует шум , а значит увеличиваем звук пока напряжение на микрофоне не приблизится к ожидаемому. Если нет, то можно снижать.

Или же можно микрофон выташить наружу и мерить шум там а затем по уровню внешних шумов (и предварительно поэкспериментировав со звукопоглошением кузова и обшивки) предположить уровень шума внутри салона . Просто там другой вопрос на повестке - шум может быть или от работы мотора (ставиш микрофон под капотом и/или рядом с глушителем) или от внешнего источника вне автомобиля (ставишь микрофон подальше от перечисленных до этого).
TamTam
Делал регулятор громкости в зависимости от оборотов двигателя, (на скору руку), в последствие забил на это, объясню почему, раздражало что нет обратной сязи и девайс нуно либо выключать либо ездить с плавующей громкостью, но видел в ауди такую систему, он автоматом добавляет громкость и уменьшает ее в зависимости от стиля вождения, потом хотел переделать но так руки и недошли.

Будет прикольно если этот поект довести до ума. яб себе поставил.
SerjP
У немцев в машинах действительно есть такой наворот принцип его действия :от спидометра выведен сигнал в магнитоллу -больше скорость больше громкость. У меня другая задача.
Old1
Цитата(defunct @ May 26 2006, 17:15) *
...
см. методы ДПФ и БПФ.
...

Результат преобразования Фурье представляется в комплексной форме, для того чтобы получить АЧХ необходимо дополнительно вычислять модули чисел, составляющих результат преобразования... А если воспользоваться преобразованием Хартли (дискретным или быстрым), то сразу получим АЧХ в вещественной форме. Если связываться с анализом амплитудного спектра сигнала ИМХО лучше использовать БПХ. Здесь лежит неплохая книжка на эту тему с примерами (правда на Бэйсике и Фортране).
BVU
Цитата(Petka @ May 26 2006, 12:42) *
...
Хм... Видимо Вы плохо представляете что получится если в тупую вычесть один сигнал из другого...

Перед тупым вычитанием сигналы естественно нормируются. А то что я не хочу повторять прописные истины - не значит, что я что-то плохо представляю. smile.gif
Petka
Цитата(BVU @ May 29 2006, 10:18) *
Цитата(Petka @ May 26 2006, 12:42) *

...
Хм... Видимо Вы плохо представляете что получится если в тупую вычесть один сигнал из другого...

Перед тупым вычитанием сигналы естественно нормируются. А то что я не хочу повторять прописные истины - не значит, что я что-то плохо представляю. smile.gif


Под "тупым вычитанием" я подразумеваю вычитание нормированных сигналов(одной амплитуды). Даже если вычитать так, то абсолютно ничего путнего не получится. Обьясню: один сигнал(с микрофона) как минимум имеет задержку. Вычитая даже идентичные гармонические сигналы, но смещённые по времени вы можете получить не только подавление, но и усиление! Кроме того, задержка разных частот в сигнале разная, сказывается АЧХ автомобиля, АС и пр. ИМХО ничего хорошего в "тупом" вычитании в ДАННОМ случае не получится wink.gif
BVU
Цитата(Petka @ May 30 2006, 11:38) *
...
Под "тупым вычитанием" я подразумеваю вычитание нормированных сигналов(одной амплитуды). Даже если вычитать так, то абсолютно ничего путнего не получится. Обьясню: один сигнал(с микрофона) как минимум имеет задержку. Вычитая даже идентичные гармонические сигналы, но смещённые по времени вы можете получить не только подавление, но и усиление! Кроме того, задержка разных частот в сигнале разная, сказывается АЧХ автомобиля, АС и пр. ИМХО ничего хорошего в "тупом" вычитании в ДАННОМ случае не получится wink.gif

А разьве я где-то сказал, что нормирование сигналов определяет только амплитудную составляющую сигнала? Нормирование есть широкое понятие которое Вы так подробно расписали... т.е. какие параметры учитываете такие и нормируете. wink.gif
Petka
Цитата(BVU @ May 30 2006, 11:52) *
Цитата(Petka @ May 30 2006, 11:38) *

...
Под "тупым вычитанием" я подразумеваю вычитание нормированных сигналов(одной амплитуды). Даже если вычитать так, то абсолютно ничего путнего не получится. Обьясню: один сигнал(с микрофона) как минимум имеет задержку. Вычитая даже идентичные гармонические сигналы, но смещённые по времени вы можете получить не только подавление, но и усиление! Кроме того, задержка разных частот в сигнале разная, сказывается АЧХ автомобиля, АС и пр. ИМХО ничего хорошего в "тупом" вычитании в ДАННОМ случае не получится wink.gif

А разьве я где-то сказал, что нормирование сигналов определяет только амплитудную составляющую сигнала? Нормирование есть широкое понятие которое Вы так подробно расписали... т.е. какие параметры учитываете такие и нормируете. wink.gif


так-то оно так, но не надо лукавить, говоря что дифференциальный усилитель в данном случае подойдёт.
BVU
Цитата(Petka @ May 30 2006, 13:46) *
...
так-то оно так, но не надо лукавить, говоря что дифференциальный усилитель в данном случае подойдёт.

Опять Вы меня в чем-то уличить пытаетесь... smile.gif По всей видимости я со скрытым контекстом изложил свою идею. Речь шла не о конкретном фифференциальном усилителе, а об операционном усилителе и его дифференциальном входе. При этом используя способность операционника, как - подавление синфазного сигнала (которое работает именно на фифф. входе) выделить существующее рассогласование между двумя (хоть и похожими, но изменненного определенным воздействием/средой одного из сигналов) сигналами. Именно нахождение величины этой разницы и заключалась в вопросе автора данной темы.
defunct
BVU
Цитата
Нормирование есть широкое понятие которое Вы так подробно расписали... т.е. какие параметры учитываете такие и нормируете. wink.gif

IMHO овчинка выделки не стоит. Дунешь на девайс с таким нормированием и все накроется в тар-тарары. На коленке такое нормирование точно не сделаешь.

спектр в этом плане вещь гораздо более стаблильная и не требующая какого бы то ни было нормирования сигнала.
Petka
Цитата(BVU @ May 30 2006, 14:09) *
Цитата(Petka @ May 30 2006, 13:46) *

...
так-то оно так, но не надо лукавить, говоря что дифференциальный усилитель в данном случае подойдёт.

Опять Вы меня в чем-то уличить пытаетесь... smile.gif По всей видимости я со скрытым контекстом изложил свою идею. Речь шла не о конкретном фифференциальном усилителе, а об операционном усилителе и его дифференциальном входе. При этом используя способность операционника, как - подавление синфазного сигнала (которое работает именно на фифф. входе) выделить существующее рассогласование между двумя (хоть и похожими, но изменненного определенным воздействием/средой одного из сигналов) сигналами. Именно нахождение величины этой разницы и заключалась в вопросе автора данной темы.


Понял я Вас правильно. В этом то и Ваше заблуждение, что сигналы "синфазны". Сигналы ни в коем случае не синфазны! Поймите это! Скорее всего сигнал, принятый с микрофона будет отличаться не только фазой и амплитудой, но он вдобавок будет ещё продифференциирован и, вероятно не один раз...
beer_warrior
Поскольку я косвенный инициатор этой ругни - добавалю свои 5 копеек.
Можно сколько угодно спорить о теории, но...
Имееться практическая задача - отсеять посторонний шум.
Идеальное решение имеем на сигнальнике и с этим в соответствующую ветку.
Есть два неидеальных решения:
Цифровое на AVR возможно но с какими параметрами - кто-н может назвать количество выборок, их частоту и вообще полосу шумового сигнала? А если не хватит пол-мипса и 20 байт памяти? Менять платформу?
Аналоговые, проверенные временем, - не очень точные, зато с возможностью накрутить единичный экземпляр на потребные параметры.Так или иначе 30 лет давили шум именно ими и вроде неплохо получалось. И сигнал нормировался smile.gifС этим тоже в соответствующую ветку.
Здесь на мой взгляд можно обсудить только теоретические аспекты
DSP на AVR, ибо гарантировать, что нужное шумоподавление получиться на AVR
нельзя.
BVU
Цитата(Petka @ May 30 2006, 16:17) *
...
Понял я Вас правильно. В этом то и Ваше заблуждение, что сигналы "синфазны". Сигналы ни в коем случае не синфазны! Поймите это! Скорее всего сигнал, принятый с микрофона будет отличаться не только фазой и амплитудой, но он вдобавок будет ещё продифференциирован и, вероятно не один раз...

Так я и не говорю, что сигналы - синфазны. Просто на ОУ за счет подавления синфазной составляющей входа, на выходе будет разница входных сигналов, которая и необходима для анализа.
Предлагаю дискуссию остановить, т.к. ... говорим об одних и тех же вещах, но почему-то каждый на своем диалекте. smile.gif
Petka
Цитата(beer_warrior @ May 30 2006, 17:02) *
Поскольку я косвенный инициатор этой ругни - добавалю свои 5 копеек.
Можно сколько угодно спорить о теории, но...
Имееться практическая задача - отсеять посторонний шум.
Идеальное решение имеем на сигнальнике и с этим в соответствующую ветку.
Есть два неидеальных решения:
Цифровое на AVR возможно но с какими параметрами - кто-н может назвать количество выборок, их частоту и вообще полосу шумового сигнала? А если не хватит пол-мипса и 20 байт памяти? Менять платформу?
Аналоговые, проверенные временем, - не очень точные, зато с возможностью накрутить единичный экземпляр на потребные параметры.Так или иначе 30 лет давили шум именно ими и вроде неплохо получалось. И сигнал нормировался smile.gifС этим тоже в соответствующую ветку.
Здесь на мой взгляд можно обсудить только теоретические аспекты
DSP на AVR, ибо гарантировать, что нужное шумоподавление получиться на AVR
нельзя.


Я уже писал раньше. Зачем Вы предлагаете DSP? Микроскопом гвозди забивать? У автора конкретная задача, и она легко решаема как на DSP так и на AVR.
defunct
Цитата(beer_warrior @ May 30 2006, 16:02) *
Цифровое на AVR возможно но с какими параметрами - кто-н может назвать количество выборок, их частоту и вообще полосу шумового сигнала? А если не хватит пол-мипса и 20 байт памяти? Менять платформу?
...
Здесь на мой взгляд можно обсудить только теоретические аспекты
DSP на AVR, ибо гарантировать, что нужное шумоподавление получиться на AVR
нельзя.

Решал схожую с автором задачу на AVR. только мне надо было разность фаз мерять для гармонических сигналов 30Hz, а не мощность. AVR справляется с расчетом полного спектра с детализацией 1Гц для выборки 16Khz/8 бит/1024 отсчетов (ДПФ) за разумное время - 2-3 секунд. Поскольку для решения задачи автора весь спектр расчитывать не потребуется, то расчет будет вестись на AVR быстрее (около 1 сек). Т.о. можно будет секунд за 4-5 накопить более менее достоверное значение СКО и осуществлять регулировку. Время рекции на шум 4-5 секунд для такой системы будет, на мой взгляд, более чем достаточно.

извиняюсь запамятовал.. Выборка была не 8192, а 1024.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.