Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.21.104.109] |
|
Страницы: (3) [1] 2 3 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Здравствуйте. Мне необходимо программно реализовать автоматическое регулирование усиления для аудио информации. Т.е. имеем аудио трек где громкость то низка то высока, надо её стараться свести к определённому уровню. Не поделитесь ссылочками на описание алгоритмов проделывания этой операции желательно в контексте обработки звука.
|
Сообщ.
#2
,
|
|
|
а разве это нормализацией не называется?
|
Сообщ.
#3
,
|
|
|
Возможно называется.
|
Сообщ.
#4
,
|
|
|
Имхо, следует искать алгоритмы звуковых компрессоров. Хотя простой вариант, без наворотов, можно и самому "выдумать", исходя из логики работы компрессора.
|
Сообщ.
#5
,
|
|
|
Надо чтобы громкость регулировалась автоматически по определённому уровню
|
Сообщ.
#6
,
|
|
|
Компрессоры работают не по такому алгоритму?
Логарифмический усилитель -> Фильтр верхних частот (подавляющий постоянную составляющую - частоты ниже 16 Гц) -> Экспоненциальный усилитель АРУ устроены несколько иначе: Пик-детектор -> Фильтр (Разные постоянные для вверх и вниз) -> Ограничитель (чтобы во время тишины шум не усиливать) -> Управляемый усилитель. На самом деле обычно усилитель на входе, но принцип остается тот же. |
Сообщ.
#7
,
|
|
|
amk Кинь ссылочку что почитать по этой теме пусть даже без упора на звук.
|
Сообщ.
#8
,
|
|
|
Я написал то, что сохранилось в памяти еще с институтских времен. Это где-то четверть века назад, так что я уже не в курсе, какая литература существует.
|
Сообщ.
#9
,
|
|
|
Мтак. Более конкретно это называется автоматичесая регулировка громкости (АРГ). Здесь 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 Добавлено Кстати вопрос какой уровень громкости наиболее приемлем для человеческого уха? |
Сообщ.
#10
,
|
|
|
Меня всё же это удивляет, тема не нова эй лет 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 |
Сообщ.
#11
,
|
|
|
Цитата zip-imp @ Здравствуйте. Мне необходимо программно реализовать автоматическое ругулирование усиления для аудио информации. Т.е. имеем аудио трек где громкость то низка то высока, надо её стараться свести к определённому уровню. Что именно ты хочешь сделать ? Свести громкость к одному уровню для одного музыкального произведения значит уменьшишь динамический диапазон. Ты именно этого хочешь ? Или нужно уменьшить уровень пропорционально для всего произведения ? |
Сообщ.
#12
,
|
|
|
Цитата ЫукпШ @ Свести громкость к одному уровню для одного музыкального произведения значит уменьшишь динамический диапазон. Если только увеличивать уровень то диапазон не уменьшится. А если бы у нас была аналоговая аппаратура то такое преобразование его еще и расширело. |
Сообщ.
#13
,
|
|
|
ЫукпШ. Конкретно. Есть файл PCM выборок (он же wave), в котором содержится разговор (речь человеческая). И вот надо бы выровнять громкость, т.е. если диктор говорит громко уменьшить громкость, тихо - увеличить. Хотелось бы чего-то определённого и работающего для речи, не вносящего искажения, чтобы реализовать это программно.
|
Сообщ.
#14
,
|
|
|
Цитата zip-imp @ если диктор говорит громко уменьшить громкость, тихо - увеличить. Хотелось бы чего-то определённого и работающего для речи, не вносящего искажения, чтобы реализовать это программно. Значит тебе нужно снизить динамический диапазон, т.е. реализовать программный компрессор (возможно, с предварительным усилителем). я бы начал читать отсюда Нечто подобное делала система шумопонижения "Долби" перед записью сигнала на магнитную ленту. Если схемы понимаешь, можешь поразбираться. Скорее всего, полной автоматизации добиться будет затруднительно. Нужно будет мастерить что-то вроде графического редактора с возможностью прослушивать отрезки, менять параметры и.т.д. |
Сообщ.
#15
,
|
|
|
ЫукпШ спасибо за совет. Ару было реализовано в радио, в магнитофонах. Вот прога где реализовано это АРУ http://clx-host.narod.ru/netsph/help.html
|