Интеллектуальная запись голоса: запрос идей

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

Очевидно, что простая непрерывная запись будет неэффективной, так как это будет пустой тратой хранилища данных и сложной задачей для их просеивания.

Я полагаю, что есть два основных способа сделать это.

  1. Запись просто начинается и останавливается в соответствии с пороговыми значениями уровня звука.
  2. Запись ведется непрерывно, но разбивается на блоки по X минут. Блоки, не содержащие содержимого, отбрасываются.

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

Я хотел бы реализовать на Python и, если возможно, на Windows.

Предложения по реализации?

Дополнительные соображения, которые, вероятно, заслуживают собственных вопросов:

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

person carrier    schedule 12.11.2009    source источник


Ответы (2)


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

Вероятно, вам будет проще непрерывно записывать и сохранять данные по частям (например, по часам).

Формат будет зависеть от того, что вы в виде инструментов записи и библиотеки обработки звука. Вы даже можете обнаружить, что используете два. Один формат, такой как WAV с кодировкой PCM для записи и обработки, но сжатый MP3 для хранения.

Если у вас есть аудиопоток, вам нужно будет получить к нему доступ в форме PCM (список значений амплитуды). Простого усреднения, вероятно, будет достаточно, чтобы определить, когда идет разговор. Типичные параметры настройки: * Средний уровень энергии для срабатывания * Количество времени, в течение которого вы должны находиться на уровне энергии или ниже, чтобы определить остановку и запуск (я рекомендую два разных значения) * Размер окна анализа для усреднения

Что касается количества участников, я не вижу простого решения, если вы не найдете библиотеку, которая делает это. Раньше я использовал механизмы распознавания речи, а также проделал разумную обработку звука, и я не видел «простых» способов сделать это. Если хотите, поищите университеты, занимающиеся анализом речи. Вы можете найти несколько прототипов, которые можно изменить, чтобы дать своему программному обеспечению некоторые подсказки.

person Jim Rush    schedule 13.11.2009
comment
Спасибо за Ваш ответ. У вас случайно не было идей о библиотеках, которые можно было бы использовать для проверки значений амплитуды (особенно для Python)? - person carrier; 13.11.2009
comment
Извините, я раньше не работал с Python. Найдите файлы, которые могут читать аудиофайл. Обычно результирующий массив / список данных сэмплов имеет форму, в которой вы можете просто усреднить сэмплы по группам, чтобы определить, есть ли звук, а нет. - person Jim Rush; 13.11.2009

Я думаю, вам будет сложно сделать это полностью на Python. Вы говорите о частотном / амплитудном анализе файлов MP3. Вам нужно будет открыть файл и найти порог громкости, а затем вырезать части, которые ниже этого порога. Чтобы выяснить, сколько динамиков присутствует, потребуется очень продвинутая обработка сигнала.

Беглый поиск в Google ничего мне не дал. Возможно, вам больше повезет в поисках готового решения.

Кстати, могут возникнуть юридические сложности, если рекордер будет работать круглосуточно без выходных.

person Dave Swersky    schedule 12.11.2009
comment
Спасибо. Как я уже сказал, они просто знают, что, когда у них будет встреча в определенной комнате, у них будет запись об этом. Знак на двери типа вещи. - person carrier; 12.11.2009