HD Видеоконференции на OpenMCU



Увы, но поддержка форума прекращена и он работает в режиме read only. Если кто-то решит воскресить проект - то возможно и форум заработает. Если будут вопросы, то задавайте их в issue на github.

Автор Тема: Автоуровень звука  (Прочитано 3533 раз)

Vitlius

  • Старожил
  • ****
  • Сообщений: 402
  • Карма: 10
Автоуровень звука
« : 19 Мая 2017, 08:45:37 »
Просветите, пожалуйста, как сделать, чтоб все подключенные клиенты имели один уровень звука?
от всех идет разный уровень громкости, сейчас выставляю персонально каждому. Можно их выравнить автоматически?

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #1 : 19 Мая 2017, 10:06:51 »
когда участник, который ещё не говорил, начинает говорить - громкость автоматически подстраивается в течение 10-20 секунд, если звук тихий. при перегрузе корректировка мгновенная (в пределах одного буфера кодека).

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

Vitlius

  • Старожил
  • ****
  • Сообщений: 402
  • Карма: 10
Re: Автоуровень звука
« Ответ #2 : 19 Мая 2017, 12:45:13 »
Наберись решимости,  могу потестить  :)
Общий уровень упростил бы жизнь.

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #3 : 22 Мая 2017, 02:43:40 »
Да, надо будет тестить в разных режимах... начал переделывать, но сколько я так начинал и бросал... на многое просто не хватает времени, поэтому пока ничего не обещаю
« Последнее редактирование: 22 Мая 2017, 02:46:20 от kay27 »

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #4 : 22 Мая 2017, 17:19:14 »
Добавил пока в 16-битном режиме и не особо успел протестировать.
https://github.com/muggot/openmcu/commit/9307f8c7dd5d0bfb1f08acc348b7febaf12ed5e0

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

Индивидуальная регулировка звука от участника теперь более примитивная и срабатывает сразу.

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #5 : 23 Мая 2017, 23:47:07 »
есть один отчёт о том, что регулировка работает, всё в порядке
исправил мелкую ошибку с инициализацией основной громкости при усилении 0 дБ - сделал по нормализованной работе арки синусоиды = 2 (площадь арки) / pi (длина арки).
вспомнил, как работает сейчас миксер, как подключены ресэмплеры, какие кодеки используются чаще всего... и, короче, решил пока не делать внутренние буферы на 32 бита, нет в них такой острой необходимости, лучше h.239 сделать, больше пользы... громкость должна и так работать нормально в большинстве случаев. мы всё-таки как правило не слушаем через openmcu симфонический оркестр в сжатии opus с максимальным качеством...
всё в целом неплохо... только иногда кажется, что автоматическая регулировка могла бы срабатывать побыстрее... приходится ждать около 10 секунд, может, больше даже, если участник говорит мало и подолгу молчит... но когда смотрю трассировку, вижу, что быстрее - были бы уже слышны искажения - регулировка вносила бы низкочастотную составляющую... может быть, добавлю в настройки VAD плавность корректировки... или сделаю мгновенную переустановку уровня, когда участник замолкает, чтобы со следующей реплики его сразу (а не постепенно) стало слышно отчётливо

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #6 : 24 Мая 2017, 09:35:43 »
ещё доработал регулировку общей громкости - она теперь срабатывает сразу
это сделано путём отслеживания положения ползунка и мгновенным пересчётом усиления каждого терминала при его перемещении
плавная доводка уровня, конечно, осталась, но, надеюсь, теперь перестанет ощущаться совсем...

всё-таки сомневаюсь по поводу 32-битного режима. сейчас покажу, как выявить недостаток текущего 16-битного миксера с перегрузкой:

1) усилить звук от терминала на панели участника на +60 дБ;
2) ползунком общей громкости уменьшить его на -40 дБ;
в сумме получится +20 дБ. эти регуляторы работают "сообща", тут потери качества никакого не будет, но дальше:

3) ослабить звук, отправляемый на тот терминал, через который мы слушаем результат, на -20 дБ.
в сумме получится 0 дБ - отсутствие усиления. но, так как 16-битный миксер уже был перегружен сигналом, усиленным до +20, сигнал уже не восстановится в прежнем виде - будет потерян динамический диапазон, как если бы он вместо 16-битного стал вдруг 2-3-битным, - он будет разборчивым, но добавится шум.

у 16-битного режима есть и много достоинств: экономия памяти, например, отсутствие лишних преобразований... а эти преобразования +60 -40 - это всё-таки крайности же :)
« Последнее редактирование: 24 Мая 2017, 10:03:36 от kay27 »

Vitlius

  • Старожил
  • ****
  • Сообщений: 402
  • Карма: 10
Re: Автоуровень звука
« Ответ #7 : 24 Мая 2017, 10:10:27 »
лично меня устроит и 16 бит, главное чтоб работал общий автоуровень )

Vitlius

  • Старожил
  • ****
  • Сообщений: 402
  • Карма: 10
Re: Автоуровень звука
« Ответ #8 : 24 Мая 2017, 10:16:14 »
я правильно понимаю, если у всех клиентов (персонально) не установлено усиление или уменьшение, то их уровень микрофона подтягивается к общей настройке?

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #9 : 24 Мая 2017, 11:59:12 »
правильно.

если от терминала поступает голос, мцу будет корректировать его уровень, если он слабый, основываясь на ползунке общей громкости, с максимальным шагом +1.2 дБ/с.

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

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

Vitlius

  • Старожил
  • ****
  • Сообщений: 402
  • Карма: 10
Re: Автоуровень звука
« Ответ #10 : 25 Мая 2017, 08:24:27 »
не стал создавать отдельную тему.
Запускаю сервер.
Когда выбираешь шаблон, у всех клиентов отображается 0 в настройках усиление уровня. После подключения клиента отображается выставленный ранее уровень
P.S. это было еще до появления общего уровня

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #11 : 25 Мая 2017, 13:55:42 »
Уровни клиентов сейчас не хранятся в шаблоне.
Хоть это и противоречит логике шаблонов, но были выявлены неудобства, когда уровни там хранились.
Главное из них - подстроив уровни терминалов во время ВКС, их нужно было каким-то образом перезаписывать во все используемые шаблоны. Если шаблонов несколько, это вызывало многочисленные неудобства. Оператор забывал (или не успевал) перезаписать уровни в одном из шаблонов, переключался на него и вынужден был снова во время конференции корректировать персональное усиление.

Уровни терминалов сохраняются в параметрах терминалов.
Мы когда-то выяснили, что сохранение непосредственно во время работы зачастую приводит к появлению дублирующих терминалов, потому что у них нет унифицированного идентификатора URI. Это относится к известным проблемам openmcu и не очень понятно, как исправлять, чтобы не лишиться универсальности, с которой он интегрируется в любую VoIP-инфраструктуру.
Эти уровни, если требуется, можно установить на странице настроек терминалов H.323 и SIP, поставив галочку рядом с идентификатором терминала, открывающую дополнительные параметры.
Чтобы избавиться от дублирования, отключу пока непосредственное сохранение... сам уже замучился с SIP - записи создаются с пустым доменом и второй раз, подстроив уровень, я уже не могу звонить по номеру через SIP-шлюз.

Сброс уровня к ранее выставленному убрал.

Vitlius

  • Старожил
  • ****
  • Сообщений: 402
  • Карма: 10
Re: Автоуровень звука
« Ответ #12 : 25 Мая 2017, 16:52:18 »
сегодня провел боевую конфу с 8 участниками на последней сборке
прошло все хорошо, автоуровень отработал неплохо.
Завтра будет еще конференция на 40+ клиентов, посмотрим как сработает автоуровень )

Vitlius

  • Старожил
  • ****
  • Сообщений: 402
  • Карма: 10
Re: Автоуровень звука
« Ответ #13 : 26 Мая 2017, 09:44:48 »
конференция показала, что скорость повышения или уменьшения уровня маловата, некоторые докладчики успевали закончить речь, до того, как уровень поднимется )
можно ли сделать не 1.2 дБ в 1 секунду, а 1.2 дБ в 0,5 секунды?
или этот параметр есть где то в конфиге и его можно самому задать?
И еще один момент, было бы неплохо видеть у клиента, сколько ему добавил/убрал дБ автоуровень

kay27

  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3068
  • Карма: 58
Re: Автоуровень звука
« Ответ #14 : 26 Мая 2017, 21:51:33 »
в трассировке с уровнем 6 эти записи прям мельтешат - кому сколько он там добавил/убавил...
думаю попробовать сделать первоначальную корректировку быстрой, а не плавной

параметр пока хардкодирован, можно с ним "поиграть" здесь, только там не время, а максимальная корректировка в дБ в течение 1 секунды. нужно иметь в виду, что корректировка работает, только если openmcu определил, что от терминала поступает речь - "Silence detector transition: Talk" в трассировке с уровнем 5.
« Последнее редактирование: 26 Мая 2017, 23:30:28 от kay27 »