Запись шумов ночью

Вопрос или проблема

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

Один из методов, который я ранее использовал, заключается в том, чтобы просто начать запись на всю ночь, используя любое программное обеспечение для записи (например, Audacity). Однако это чрезвычайно неэффективно, потому что потом мне приходится прослушивать весь файл длительностью более 8 часов. (К тому же размер файлов очень большой.)

Таким образом, я ищу более эффективный способ записи этих шумов.

Основные требования:

  • Возможность установить порог уровня звука/децибелов, выше которого шумы записываются. (В остальное время запись не ведется.)
  • Метка времени для каждого записанного шума.
  • Работает на Windows 10 (ПК) или Android мобильных устройствах.

(Возможно, есть способ сделать это в Audacity или другом ПО, о котором я не знаю; в этом случае я буду очень благодарен, если кто-то научит меня.)

Желательно:

  • Бесплатно.
  • Легковесно.

Snooper.

Основные требования:

  • Вы можете установить триггер (уровень децибелов), выше которого звуки записываются.
  • Файлы MP3 затем автоматически сохраняются как “YYYY-MM-dd hhmmss.mp3”, где hhmmss — это время начала записи.
  • Программа для Windows (похоже, доступна только для Windows).

Желательно:

  • К сожалению, не бесплатно. Бесплатный 30-дневный пробный период, затем 24,95 доллара США или 34,95 доллара США за версию Standard или Professional.
  • Кажется, достаточно легковесна (например, я использую её прямо сейчас, и она потребляет 8,5 МБ памяти).

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

Резюме: в разделе записи настроек есть флажок «Sound Activated Recording» и место для указания уровня триггера.

К сожалению, это лишь частичное решение, поскольку часть с меткой времени не решена.

Вы можете использовать Python с PyAudio, адаптировав принятое решение для этого вопроса на Stack Overflow.

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

Примерно так, (обратите внимание, что это не код производственного качества):

import pyaudio
import wave
import audioop
import datetime

now = datetime.datetime.now()  # Получить текущее время
ENDTIME = now + datetime.timedelta(hours=8) # Записывать в течение 8 часов
OVERRUN = datetime.timedelta(seconds=5)  # Как долго продолжать после последнего громкого звука
THRESHOLD = 123  # Использовать некоторое число, определенное экспериментально

# Следующие параметры pyAudio взяты из исходного примера
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5

p = pyaudio.PyAudio()

stream = p.open(format=FORMAT,
                channels=CHANNELS,
                rate=RATE,
                input=True,
                frames_per_buffer=CHUNK)

recording = False
outfile = None
last_over = datetime.datetime(0)
started_recording_at = None

while now < ENDTIME:  # Работать до конечного времени
    data = stream.read(CHUNK)     # получить последний звуковой фрагмент
    now = datetime.datetime.now()  # Получить текущее время
    rms = audioop.rms(data, 2)    # здесь вычисляется громкость

    if not recording and rms > THRESHOLD:  # Громко, поэтому начинаем запись
        fname = now.strftime('%Y-%m-%d-%H-%M-%S.wav')  # Создать имя файла
        outfile = open(fname, 'wb')  # Открыть для бинарной записи
        print("RMS = {}: Начата запись в {}".format(rms, fname))
        recording = True
        started_recording_at = now

    if recording:  # Мы записываем
        outfile.write(data)  # Сохранить звуковой фрагмент
        if rms > THRESHOLD:  # Все еще громко?
            last_over = now  # Сохранить время
        if now - last_over > OVERRUN:  # Тихо достаточно долго
            recording = False  # Остановить запись
            outfile.close()   # Закрыть файл
            print("Длина записи {}".format(now-started_recording_at))
# Уборка!
stream.stop_stream()
stream.close()
p.terminate()

Если вы не знакомы с Python, поместите код выше в текстовый файл под названием nightwatch.py и запустите с помощью:

python nightwatch

Это должно более или менее соответствовать вашему запросу.

Ответ или решение

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

Теория: Почему шумы ночью важны и как их записывать?

Шумы ночью могут сильно влиять на качество вашего сна и, следовательно, на общее состояние здоровья. Распознавание и анализ этих шумов может помочь в принятии мер для их минимизации, что благоприятно скажется на вашем самочувствии. Современное программное обеспечение предоставляет возможность записи аудио только при достижении определённого уровня звука (децибел), что позволяет избежать записи тишины и тем самым оптимизировать процесс.

Пример: Какие существуют решения?

  1. Snooper: Это программное обеспечение позволяет устанавливать порог уровня звука, после которого начинается запись. Оно автоматически сохраняет файлы в формате MP3 с временной меткой, что делает поиск и анализ ситуаций более удобным. Однако, эта программа платная после 30-дневного бесплатного использования и доступна только для пользователей Windows.

  2. Audacity: Бесплатное и популярное ПО для редактирования аудио, которое может быть настроено для записи только при достижении определённого уровня звука. В Audacity эта функция называется "Sound Activated Recording", но его ограничение в том, что временные метки добавлять будет сложно.

  3. PyAudio с Python: Для более технически подкованных пользователей можно использовать язык программирования Python с библиотекой PyAudio. Данный подход позволяет создавать решение под свои нужды, включая установление порогов, добавление временных меток и настройку параметров записи. С учетом примера кода, доступного в вашем описании, PyAudio может стать мощным инструментом для создания кастомизированного решения для записи ночных шумов.

Применение: Как реализовать решение на практике?

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

Если вы ищете бесплатное решение, и у вас есть начальные знания в программировании, то стоит рассмотреть Python с PyAudio. Начав с базового примера кода, вы можете адаптировать его под свои нужды. Данный подход предлагает большую гибкость в плане конфигурации и может обеспечить точное следование вашим требованиям.

Для пользователей Android существует множество приложений, например, "Sound Meter Pro", которые могут записывать только определённые уровни звука. Однако интеграция с возможностью записи может требовать дополнительных исследований.

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

Оцените материал
Добавить комментарий

Капча загружается...