На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
Модераторы: RaD, nsh
Страницы: (3) [1] 2 3  все  ( Перейти к последнему сообщению )  
> АРУ, автоматическое регулирование усиления
    Здравствуйте. Мне необходимо программно реализовать автоматическое регулирование усиления для аудио информации. Т.е. имеем аудио трек где громкость то низка то высока, надо её стараться свести к определённому уровню. Не поделитесь ссылочками на описание алгоритмов проделывания этой операции желательно в контексте обработки звука.
    Сообщение отредактировано: RaD -
      а разве это нормализацией не называется?
        Возможно называется.
          Имхо, следует искать алгоритмы звуковых компрессоров. Хотя простой вариант, без наворотов, можно и самому "выдумать", исходя из логики работы компрессора.
          Человек человека понять не может.
            Надо чтобы громкость регулировалась автоматически по определённому уровню
              Компрессоры работают не по такому алгоритму?

              Логарифмический усилитель -> Фильтр верхних частот (подавляющий постоянную составляющую - частоты ниже 16 Гц) -> Экспоненциальный усилитель

              АРУ устроены несколько иначе:

              Пик-детектор -> Фильтр (Разные постоянные для вверх и вниз) -> Ограничитель (чтобы во время тишины шум не усиливать) -> Управляемый усилитель.
              На самом деле обычно усилитель на входе, но принцип остается тот же.
              Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                amk Кинь ссылочку что почитать по этой теме пусть даже без упора на звук.
                  Я написал то, что сохранилось в памяти еще с институтских времен. Это где-то четверть века назад, так что я уже не в курсе, какая литература существует.
                  Всё написанное выше это всего лишь моё мнение, возможно ошибочное.
                    Мтак. Более конкретно это называется автоматичесая регулировка громкости (АРГ). Здесь http://www.pctuner.ru/forums-m-posts-q-6672.html упоминается программа AutoMixer которая занимается этим. Вот бы достать её исходники или же алгоритм её работы посмотреть где нибудь.

                    Добавлено
                    Как вариант найти принципиальную схему какого-нибудь реального устройства и его реализовать програмно. Но тут пока ничего интересного не нашёл. Ведь наверняка есть уже где-то готовые алгоритмы подобного прелобразования для звука, только вот бы найти точно тематический раздел где их искать....

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

                    Добавлено
                    Вот кстати уже что-то блеже к теме http://nauchebe.net/2010/04/avtomaticheskaya-regulirovka-gromkosti/
                    Вобщем я понял надо искать как это реализована в разных радио-приёмниках ведь там как правило уровень сигнала на приёме скачет и надо слушателю выдавать один и тот же уровень...

                    Добавлено
                    Вот кстати вариант.... http://www.chipinfo.ru/literature/radio/194601/p32_39.html, но всё же хотелось бы более современного и теоретически изложенного.

                    Добавлено
                    Возможно как вариант разобрать программную реализацию декодера, как например http://ac3filter.sourceforge.net/ac3filter_rus.html

                    Добавлено
                    Там вроде есть этот пункт.

                    Я вобщем пишу свои мысли и ход рассуждений, если кто-то может помочь мне, то буду только благодарен.

                    Добавлено
                    Теория по тематике http://iucoz.ru/?p=2115

                    Добавлено
                    Кстати вопрос какой уровень громкости наиболее приемлем для человеческого уха?
                      Меня всё же это удивляет, тема не нова эй лет 70, но нигде нет чёткого однозначного описания алгоритма....

                      Добавлено
                      Вот тут что-то похожеее на программную реализацию https://groups.google.com/group/comp.dsp/browse_thread/thread/6d465a536f9a3a5c/2a7c45239345f8db?hl=en&ie=UTF-8&q=agc+code+aberdonian_2000

                      Добавлено
                      На всякий случай скопирую оттуда основной пост

                      The best AGC has an integrator and (say) an absolute value (modulus detector) .
                      You can use
                      a pure squarer though instead of absolute value..

                      Assume yin is the input to the AGC (say a speech signal) and yout is the AGC
                      output.

                      loop forever
                      {
                      /* Voltage controlled amplifier is just a multiplier here */
                      yout=yin*iout

                      /* error */
                      err=spoint-abs(yout)

                      /* Integrate */
                      iout1=iout
                      iout=iout1+gain*err }

                      Much simpler - wish people wrote in Fortran!

                      Where in the above 'gain' needs to be found by experiment. Too large
                      and the envelope will be compressed and the loop will go unstable. If the gain
                      is too low then the loop will be slow to repond. Try gain=0.001 for starters
                      though
                      the gain value for stability depends on the size of yin. spoint is a set point and
                      can be taken to be 1.0.

                      regards

                      Tom

                      Добавлено
                      Вот неплохая статья, но надо разбираться, ибо не совсем понятно причём здесь wireless и подойдёт ли всё это дело для голосовых данных...

                      Добавлено
                      http://www.eetimes.com/design/signal-processing-dsp/4017743/Wireless-101-Automatic-Gain-Control-AGC-?pageNumber=0
                        Цитата zip-imp @
                        Здравствуйте. Мне необходимо программно реализовать автоматическое ругулирование усиления для аудио информации. Т.е. имеем аудио трек где громкость то низка то высока, надо её стараться свести к определённому уровню.

                        Что именно ты хочешь сделать ?
                        Свести громкость к одному уровню для одного музыкального произведения
                        значит уменьшишь динамический диапазон. Ты именно этого хочешь ?
                        Или нужно уменьшить уровень пропорционально для всего произведения ?
                        Подпись была выключена в связи с наложенным заземлением.
                          Цитата ЫукпШ @
                          Свести громкость к одному уровню для одного музыкального произведения
                          значит уменьшишь динамический диапазон.

                          Если только увеличивать уровень то диапазон не уменьшится. А если бы у нас была аналоговая аппаратура то такое преобразование его еще и расширело.
                          Правильный обед должен состоять из 5 блюд приготовленных из 33 ингредиентов.
                            ЫукпШ. Конкретно. Есть файл PCM выборок (он же wave), в котором содержится разговор (речь человеческая). И вот надо бы выровнять громкость, т.е. если диктор говорит громко уменьшить громкость, тихо - увеличить. Хотелось бы чего-то определённого и работающего для речи, не вносящего искажения, чтобы реализовать это программно.
                              Цитата zip-imp @
                              если диктор говорит громко уменьшить громкость, тихо - увеличить. Хотелось бы чего-то определённого и работающего для речи, не вносящего искажения, чтобы реализовать это программно.

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

                              Нечто подобное делала система шумопонижения "Долби" перед записью
                              сигнала на магнитную ленту. Если схемы понимаешь, можешь
                              поразбираться.

                              Скорее всего, полной автоматизации добиться будет затруднительно.
                              Нужно будет мастерить что-то вроде графического редактора
                              с возможностью прослушивать отрезки, менять параметры и.т.д.
                              Сообщение отредактировано: ЫукпШ -
                              Подпись была выключена в связи с наложенным заземлением.
                                ЫукпШ спасибо за совет. Ару было реализовано в радио, в магнитофонах. Вот прога где реализовано это АРУ http://clx-host.narod.ru/netsph/help.html
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (3) [1] 2 3  все


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1523 ]   [ 16 queries used ]   [ Generated: 24.04.19, 04:01 GMT ]