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

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

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

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

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

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

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

Хорошо бы иметь:

  • Свободно.
  • Легкий.

Ответы (3)

Снупер .

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

  • Вы можете установить триггер (уровень децибел), выше которого записываются звуки.
  • Затем файлы MP3 автоматически сохраняются как «ГГГГ-ММ-дд ччммсс.mp3», где ччммсс — это время начала записи.
  • Программа Windows (действительно, похоже, она доступна только для Windows).

Хорошо бы иметь:

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

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

Резюме: в разделе «Запись» в настройках есть флажок «Звуковая активация записи», а также место для указания уровня срабатывания.

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

И кажется, это не останавливается, когда шум исчезает

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

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

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

import pyaudio
import wave
import audioop
import datetime

now = datetime.datetime.now()  # Get the time now
ENDTIME = now + datetime.timedelta(hours=8) # Record for 8 hours
OVERRUN = datetime.timedelta(seconds=5)  # How long to continue after last loud
THRESHOLD = 123  # Use some number determined experimentally

# The following are the pyAudio parameters from the original example
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:  # Run till endtime
    data = stream.read(CHUNK)     # get the latest sound chunk
    now = datetime.datetime.now()  # Get the current time
    rms = audioop.rms(data, 2)    # here's where you calculate the volume

    if not recording and rms > THRESHOLD:  # Loud so start recording
        fname = now.strftime('%Y-%m-%d-%H-%M-%S.wav')  # Create the filename
        outfile = open(fname, 'wb')  # Open for binary write
        print("RMS = {}: Started recording to {}".format(rms, fname))
        recording = True
        started_recording_at = now

    if recording:  # We are recording
        outfile.write(data)  # Save the sound chunk
        if rms > THRESHOLD:  # Still loud?
            last_over = now  # Save time
        if now - last_over > OVERRUN:  # Quiet for long enough
            recording = False  # Stop recording
            outfile.close()   # Close the file
            print("Recording Length {}".format(now-started_recording_at))
# Tidy Up!
stream.stop_stream()
stream.close()
p.terminate()

Если вы не знакомы с python, поместите приведенный выше код в текстовый файл с именем nightwatch.py, а затем выполните:

python nightwatch

Должен сделать более или менее то, что вы просили.