Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: постоянная времени цифровой АРУ
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Andy111
Добрый день. Есть реализация цифрового логарифмического АРУ для речи из книги Лайонса (постоянная времени такого АРУ не зависит от амплитуды входного сигнала). Возможно вопрос банальный, но тем не менее хотелось бы узнать из каких соображений выбирать постоянную времени речевого АРУ для получения наилучшего результата. Видел разные значения от 0.05с до 0.1с, хотелось бы получить более конкретные значения)
Alex11
Конкретно этой АРУ не знаю, но с постоянными времени нужно аккуратно играться до получения нужного Вам результата. По нашему опыту, постоянных времени должно быть две - одна для повышающегося уровня входного сигнала - короткая. Ступенчато увеличенный сигнал приводился в номинал за 0.2 сек. Для понижающегося уровня входного сигнала постоянная времени должна быть существенно больше - порядка 2 сек. Иначе на речи все выглядит безобразно - сигнал все время прыгает на паузах между словами. И еще полезно сделать "мертвую зону" - пока выходной сигнал не вышел за некие границы вокруг номинала - не трогать усиление вообще.
Andy111
Цитата(Alex11 @ Apr 13 2017, 18:41) *
Конкретно этой АРУ не знаю, но с постоянными времени нужно аккуратно играться до получения нужного Вам результата. По нашему опыту, постоянных времени должно быть две - одна для повышающегося уровня входного сигнала - короткая. Ступенчато увеличенный сигнал приводился в номинал за 0.2 сек. Для понижающегося уровня входного сигнала постоянная времени должна быть существенно больше - порядка 2 сек. Иначе на речи все выглядит безобразно - сигнал все время прыгает на паузах между словами. И еще полезно сделать "мертвую зону" - пока выходной сигнал не вышел за некие границы вокруг номинала - не трогать усиление вообще.


Спасибо за ответ. А можно ли поставить "мягкое ограничение" сигнала после АРУ для полного исключения эффекта перегрузки, чтобы уровень сигнала не поднимался выше определенного значения вообще? Как это реализовать на C?
Alex11
Поставить-то юудет хорошо, только реализовывать программно Вы его замаетесь. Поставьте жесткое - оно не очень сильно отражается на разборчивости речи.
Andy111
Цитата(Alex11 @ Apr 15 2017, 21:56) *
Поставить-то юудет хорошо, только реализовывать программно Вы его замаетесь. Поставьте жесткое - оно не очень сильно отражается на разборчивости речи.
А как правильно реализовать "мертвую зону"? Получается что просто сравнивать входной отсчет с неким номинальным уровнем неверно, нужно наверное среднее значение сигнала на каком-нибудь промежутке времени считать?
Ivan55
Добрый всем день!

У меня тоже вопрос по АРУ, реализовал с Лайонса вот этот АРУ
Нажмите для просмотра прикрепленного файла

Вопрос такой, как сделать АРУ чтоб он не выдавал всплеск который я выделил на картинке?


Цитата(Andy111 @ Apr 14 2017, 16:05) *
Спасибо за ответ. А можно ли поставить "мягкое ограничение" сигнала после АРУ для полного исключения эффекта перегрузки, чтобы уровень сигнала не поднимался выше определенного значения вообще? Как это реализовать на C?

Компрессор вам в помощь
quato_a
Цитата(Ivan55 @ Apr 26 2017, 12:26) *
Вопрос такой, как сделать АРУ чтоб он не выдавал всплеск который я выделил на картинке?

Может поможет
"RF architectures and digital signal processing aspects of digital wireless trasceivers - Nezami - 2003"
4-23 - 4-30
Ivan55
Цитата(quato_a @ Apr 26 2017, 22:20) *
Может поможет
"RF architectures and digital signal processing aspects of digital wireless trasceivers - Nezami - 2003"
4-23 - 4-30

Спасибо! читал уже
Не поможет, там все тоже самое
ovs_pavel
Цитата(Ivan55 @ Apr 26 2017, 12:26) *
Добрый всем день!

У меня тоже вопрос по АРУ, реализовал с Лайонса вот этот АРУ
Нажмите для просмотра прикрепленного файла

Вопрос такой, как сделать АРУ чтоб он не выдавал всплеск который я выделил на картинке?


После задержки z поставить ограничитель уровня.


Alex11
Цитата
Получается что просто сравнивать входной отсчет с неким номинальным уровнем неверно, нужно наверное среднее значение сигнала на каком-нибудь промежутке времени считать?

Да, это обязательно для речи.
Тут уже обсуждение ушло несколько в другую сторону, но продолжая исходную тему, хочу сказать, что в речевом сигнале нужно считать среднеквадратичное значение за 50 - 100 мс и дальше использовать в схеме АРУ. Можно попробовать для упрощения использовать не среднеквадратичное, а средний модуль или максимальное за то же время, но по нашему опыту результаты хуже.
Ivan55
Цитата(Alex11 @ May 8 2017, 22:09) *
Да, это обязательно для речи.
Тут уже обсуждение ушло несколько в другую сторону, но продолжая исходную тему, хочу сказать, что в речевом сигнале нужно считать среднеквадратичное значение за 50 - 100 мс и дальше использовать в схеме АРУ. Можно попробовать для упрощения использовать не среднеквадратичное, а средний модуль или максимальное за то же время, но по нашему опыту результаты хуже.


не пойму что где...
берем среднеквадратичное значение входного сигнала и его подаем в АРУ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.