Всем привет, такой вопрос. Есть конференция, где люди говорят между собой, нужно как-то определять, кто активный говорящий на данный момент. Получить данные - не проблема, проблема в вычислении. Т.е. тут множество вариаций: один может постоянно говорить громко, один постоянно говорить тихо, что следует, что среднее вычисление тут не совсем подходит. Данные получаю каждые n мс, могу менять период. Всем заранее спасибо.
Если в конференции люди между собой говорят, то вероятно у каждого свой микрофон, а раз получить данные не проблема, то можно получить и источник звука, а там уже сопоставить id источника с id говорящего. Никакой обработкой звука тут и пахнуть не должно.
profesor08, насколько я понял, источником звука является MediaStreamAudioSource. Если это так, то как вы предлагаете, без обработки передавать аудиопоток? Транслировать все подряд? Намного логичнее на мой взгляд все таки произвести предобработку потока, чтобы исключить трансляцию от клиента в моменты когда он (клиент) молчит. Разве нет?
xmoonlight, profesor08, только сейчас дошло, что у автора скорее всего не вэб реализация аудио/видео конференции а аппаратная, по типу тех что ставят в конференц залах)))
Если это так, то вариант profesor08 на мой взгляд оптимален.
Роман, у "лягушки" нет выделенных микрофонов для каждого участника конференции. Там несколько микрофонов по кругу (3 обычно) и она ставится в центр стола (или в ряд через 1,5-2 метра, если стол в переговорке/конференц-зале длинный).
Ну и на коленке сделал рабочий пример. Перейдите во вкладку Result, разрешите временный доступ к микрофону, подождите пару секунд и начинайте говорить.
1. Для начала нужно выписать все критерии потока данных, которые Вы можете получить для одного участника (это могут быть не только аудио-данные!).
2. Сформировать модель для каждого из участников на основе этих критериев (pre-learn).
3. Сформировать хеш по модели (hashing).
4. Искать такой хеш в потоке (поток->хеш==хеш->участник) и возвращать участника по хешу (analyze).
Это будет работать, даже если несколько будут говорить одновременно!