|
АРУ, нужен алгоритм |
|
|
|
Nov 15 2007, 15:26
|
Группа: Новичок
Сообщений: 11
Регистрация: 21-10-07
Пользователь №: 31 558

|
В прошлом году делал АРУ. есть несколько алгоритмов. если еще нужно, могу поискать, даже исходники выслать. только на С.
|
|
|
|
|
Nov 15 2007, 19:40
|
Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 5-05-06
Из: Ekaterinburg, Russia
Пользователь №: 16 821

|
Цитата(dtsar @ Nov 15 2007, 20:26)  В прошлом году делал АРУ. есть несколько алгоритмов. если еще нужно, могу поискать, даже исходники выслать. только на С. Уважаемый dtsar, если Вас не затруднит, вышлите исходники на yuramail@k66.ru. Заранее спасибо.
--------------------
Чудес не бывает - бывает мало знаний и опыта!
|
|
|
|
|
Nov 16 2007, 05:10
|

Гуру
     
Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606

|
Цитата Братцы, а что такое "алгоритм АРУ"? По крайне мере в моем понимании есть несколько видов АРУ. - с прямым регулированием; - с обратным регулированем; - АРУ с садержкой; - АРУ без задержки; rezident в вашем случае когда сосед не стучит по батарее, выполняется вот это if (volume<MOI_LUBIMIY_UROVEN_GROMKOSTI) volume++; т.е. громкость будет возрастать и стремится к бесконечности. Это же не есть гуд, когда по батарее никто не стучит. Значит надо предусмотреть минимальный уровень громкости, который еще не надо усиливать. У АРУ есть еще один неприятный момент: если мы негромко говорим в микрофон, а затем повышаем голос, то на выходе АРУ будет всплеск, т.к. коэффициент усиления АРУ еще не успел адаптироваться. И в противном случае когда с громкого голоса понижаем его, будет провал, т.к. коэффициент усиления еще был мал. Чтобы уменьшить длительность этих всплесков нужно уменьшать интервал усреднения энергии сигнала. Но если уменьшить интервал до одного сэмпла модуляция исчезнет напрочь, АРУ просто сгладит входной сигнал. Именно от этих всплексок я не могу избавится, АРУ пока валяю в Simulink.
|
|
|
|
|
Nov 16 2007, 13:34
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(urasinov @ Nov 16 2007, 08:10)  По крайне мере в моем понимании есть несколько видов АРУ. - с прямым регулированием; - с обратным регулированем; - АРУ с садержкой; - АРУ без задержки; Понятно. С натяжкой, принять можно. Правда, вместо слова "алгоритм" лучше использовать выражение "способ реализации". Не мешало бы выложить сюда условия Вашей задачи. Тогда можно было бы посоветовать что-то конкретное. Цитата(urasinov @ Nov 16 2007, 08:10)  У АРУ есть еще один неприятный момент: если мы негромко говорим в микрофон, а затем повышаем голос, то на выходе АРУ будет всплеск, т.к. коэффициент усиления АРУ еще не успел адаптироваться. И в противном случае когда с громкого голоса понижаем его, будет провал, т.к. коэффициент усиления еще был мал. Чтобы уменьшить длительность этих всплесков нужно уменьшать интервал усреднения энергии сигнала. Но если уменьшить интервал до одного сэмпла модуляция исчезнет напрочь, АРУ просто сгладит входной сигнал. Именно от этих всплексок я не могу избавится, АРУ пока валяю в Simulink. В ряде случаев для сжатия динамического диапазона речевого сигнала допустимо использование (динамического) амплитудного ограничения.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 16 2007, 20:25
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(urasinov @ Nov 16 2007, 16:55)  Да вы правы возможно амплитудного ограничителя будет достаточно. Не вижу необходимости усиливать слабый сигнал, требуется подавлять сильный. К этому вопросу нужно подходить осторожно. Например, если после оцифровки предполагается "сжимать" речь средне- низкоскоростным вокодером, амплитудный ограничитель и даже достаточно быстродействующая АРУ способны его "развалить" (появятся крайне неприятные призвуки, или даже неустойчивость анализатора). Поэтому, не мешало бы выяснить, что Вы собираетесь делать с сигналом после оцифровки. Цитата(urasinov @ Nov 16 2007, 16:55)  ...Электретный микрофон, с номинальным выходным напряжением 12 мВ, кодек со встроенным операционником и процессор. Коэффициент усиления ОУ 22 дебила (или в 13 раз если память не подводит). Максимальное напряжение с микрофона может достигать 60 мВ. Когда напряжение с микрофона возрастает до 20-30 мВ и выше его требуется поддерживать на этом же уровне. Я бы всё-таки попытался уменьшить усиление ОУ или, на худой конец, уровень сигнала с микрофона в 2-3 раза (последнее можно сделать, уменьшив номинал резистора нагрузки соответственно). "Быстрые" АРУ и ограничители существенно ухудшают качество исходного сигнала, а динамического диапазона современных 16-битных кодеков более чем достаточно для поддержания приемлемого отношения С/Ш даже при низких уровнях сигнала с электретного микрофона без АРУ. Какой именно кодек Вы юзаете, тоже интересно было бы знать. В крайнем случае, можно сделать пороговую АРУ, где к-т усиления начинает плавно уменьшаться, начиная с какого-то определённого уровня входного сигнала. Но искажений при этом не избежать, и я этот способ всё-таки не рекомендую Вам брать на вооружение... ЗЫ. При работе с аудиокодеками я всегда использовал внешний усилитель микрофонного сигнала, а на встроенном усилителе выставлял Ку ~= 2 для нормального уровня (а не 1, чтобы компенсировать избыточную чувствительность некоторых экземпляров микрофонов программно).
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 21 2007, 01:00
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(urasinov @ Nov 19 2007, 08:16)  Именно то что вы написали, дальше сигнал поступает на вокодер. Тогда о всяческих АРУ и ограничителях лучше забыть. Какой вокодер применять думаете, кстати? Цитата(urasinov @ Nov 19 2007, 08:16)  ...Кодек AD73322 16-битный, отношение S/N 78 db итого 12 эффективных разрядов. Ближе к 13, по-моему. Вообще-то, этот кодек - отстой. Если есть возможность, стоит подумать о его замене на более приличный. Кстати, оцифровку на нём нужно делать с передискретизацией и последующим прореживанием: цифровой ФНЧ там тоже паршивый. Цитата(urasinov @ Nov 19 2007, 08:16)  ...У этого кодека имеется ОУ на входе ноги которого выведены наружу. Тут резисторами выставлен коэффициент усиления 6 db. Кроме этого в кодеке имеется PGA (ОУ с программируемым коэффициентом усиления) 0...38db, на нем выставлено 18 db. Ну, так уменьшите просто - и все дела. Цитата(urasinov @ Nov 19 2007, 08:16)  ...Такой большой коэффициент усиления, потомучто на выходе кодека требуется амплитуда 0,5 В. А это ещё как?
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Nov 21 2007, 05:07
|

Гуру
     
Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606

|
Цитата Какой вокодер применять думаете, кстати? Это мне не известно, проект ведем вдвоем. Я в большей части занимаюсь железом. Цитата Вообще-то, этот кодек - отстой. Если есть возможность, стоит подумать о его замене на более приличный. Тоже думал об этом, даже заводил тему на форуме, из предложенных наиболее удачным показался TLV320AIC23B, и стоит он в дв раза дешевле. Цитата Кстати, оцифровку на нём нужно делать с передискретизацией и последующим прореживанием Так и делаем. Коэффициенты усиления уменьшить не могу, т.к. при номинальном входном сигнале 10 мВ, на выходе платы должно быть 0,5В. А получить такую амплитуду очень просто, кодек имеет встроенные ОУ как на входе, так и на выходе. Плата уже имеется и работает. Места ставить на нее дополнительные операционики нет, ее размер 20х30 мм.
|
|
|
|
|
Dec 1 2007, 09:39
|

Мастер
   
Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474

|
Цитата(urasinov @ Nov 23 2007, 08:41)  нашел pdf Automatic Gain Control (AGC) Algorithm User’s Guide от некой компании SPIRIT CORP (www.spiritDSP.com/CST). Здесь описана библиотека для работы с АРУ, но нет исходника. Также говорится о неком CST Frameworks может кто знает где его можно скачать бесплатно. Я нашел только платные ссылки. Как вы, наверное, поняли, суть CST (client-side telephony) в том, что есть камень C54CST с зашитыми в ROM функциями, типичными для применений телефонии. Плюс к этому можно докупить расширенные библиотеки (продвинутые кодеки и т.п.). Таким образом искать у SPIRIT'а исходники -- имхо бессмысленно. А вот Framework вроде раньше качался (по-моему SDK назывался), а сейчас действительно не видно. Как-то давно я ходил на их семинар по CST -- понравилось, довольно красиво они все сделали в этой технологии. Попробую поискать у себя, может быть найду -- но версия будет старая, уж сколько лет прошло  И исходников алгоритмов там, естественно, нет, и годится он для программирования только камней C54CST. [+]: Да, забавно, на странице http://www.spiritdsp.com/products/components/cst/cst_newsletter.shtmlссылки битые... А вообще качать надо бы оттуда.
--------------------
شامل
|
|
|
|
|
Dec 1 2007, 13:28
|

Гуру
     
Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606

|
Цитата ... что есть камень C54CST с зашитыми в ROM функциями Этого я не заметил, буду знать. Цитата А вот Framework вроде раньше качался Да нашел какой-то на сайте focus.ti.com, только почему-то не поддерживается докачка, весит 60 мегабайт. Несколько раз пытался закачать так и не удалось закачать полностью. Цитата И что, нельзя уменьшить усиление входного тракта и увеличить выходного? Попробовать можно, но жалко терять эффективные биты.
|
|
|
|
|
Dec 1 2007, 19:43
|

Мастер
   
Группа: Свой
Сообщений: 730
Регистрация: 18-02-06
Из: Москва
Пользователь №: 14 474

|
Цитата(urasinov @ Dec 1 2007, 16:28)  Да нашел какой-то на сайте focus.ti.com, только почему-то не поддерживается докачка, весит 60 мегабайт. Вы, наверное, нашли собственно Reference Framework? Это составная часть концепции ExpressDSP (этих RF 3 штуки: RF1, RF3, RF5), но к вашей теме, к сожалению, имеет малое отношение. Это просто остов ЦОС-программы, написанной в соответствии с этой концепцией. Если вас интересует, я нашел у себя на диске файл ЦСТ2СДК_V2_27_инсталл.ехе (как ни странно это тоже самое, на что ссылается сейчас SPIRIT, мало что изменилось за столько веков  ). Выложил на ФТП: уплоад \ ДСП \ ЦСТ \ (что-то сервачок работает не ахти, если бито, обращайтесь  )
--------------------
شامل
|
|
|
|
|
Dec 1 2007, 22:53
|

Гуру
     
Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987

|
Цитата(urasinov @ Dec 1 2007, 16:28)  ...Попробовать можно, но жалко терять эффективные биты. Что значит "терять"? Речевой сигнал, в случае слитного произношения, может иметь пик-фактор более 3 у женщин и более 5 у мужчин. Поэтому, Вы должны смириться с тем, что: - либо будет клиппироваться (ограничиваться) входной сигнал; - либо будет клиппироваться (ограничиваться) выходной сигнал; - либо средний уровень выходного сигнала кодека будет значительно меньше максимального. Четвёртого не дано. Никакая АРУ не в силах изменить положение вещей. Для вокодера (особенно низкоскоростного) первый случай является неприемлемым.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Dec 3 2007, 11:47
|
Группа: Участник
Сообщений: 8
Регистрация: 8-05-07
Пользователь №: 27 597

|
"Идеального" АРУ увы, не бывает. Везде где можно отказаться от него - следует отказаться, особенно если после него идет какая-нибудь более-менее сложная цифровая обработка, например подавление шума, аккустического эха, или вокодер. Отказаться можно в случае, если параметры аккустической системы (в нее входит и источник звука) примерно постоянны, чего в жизни бывает редко, но бывает  По моему опыту, алгоритм АРУ весьма зависит от требований последующего алгоритма обработки, например, как заметил Stanislav, вокодеры плохо "дружат" с клиппированными сигналами, Тупо повышать усиление при малом сигнале тоже не годится - АРУ будет "вытягивать" шум в паузах речи. И после того, как человек заговорит, сигнал будет слишком сильный. Для решения этой проблемы в АРУ используется детектор речи, и регулировка производится только при его активном сигнале. В телефонах некоторую проблему представляет также "дыхание в трубку"  АРУ, который "прошит" в CST - достаточно сложный алгоритм, который учитывает эти факторы. Не могли бы вы поподробнее описать задачу?
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|