Интеллектуальная запись голоса: запрос идей - PullRequest
0 голосов
/ 12 ноября 2009

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

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

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

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

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

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

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

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

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

Ответы [ 2 ]

1 голос
/ 13 ноября 2009

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

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

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

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

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

1 голос
/ 12 ноября 2009

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

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

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

...