Durante la noche (cuando estoy durmiendo), la mayor parte del tiempo es tranquila. Sin embargo, a veces hay ruidos (por ejemplo, tráfico ruidoso). Quiero grabar estos ruidos.
Un método que he empleado anteriormente es simplemente configurar la grabación para toda la noche usando cualquier software de grabación (por ejemplo, Audacity). Sin embargo, esto es muy ineficiente porque luego tengo que pasar por todo el archivo de audio de más de 8 horas. (Sin mencionar también que los tamaños de archivo son muy grandes).
Por lo tanto, estoy buscando una forma más eficiente de grabar estos ruidos.
Requerimientos esenciales:
(Tal vez hay alguna forma de lograr lo anterior en Audacity o algún otro software que no conozco; en cuyo caso, también estaría muy agradecido si alguien pudiera enseñarme cómo hacerlo).
Agradable tener:
snooper _
Requerimientos esenciales:
Agradable tener:
Si ha tenido éxito con Audacity, puede continuar usando el programa. De acuerdo con esta página web , hay una función dentro de Audacity para activar la grabación cuando se alcanza un nivel específico.
Resumen: En la sección de grabación de Preferencias, hay una casilla de verificación Grabación activada por sonido, así como una ubicación para especificar el nivel de activación.
Desafortunadamente, esta es solo una respuesta parcial, ya que la parte de la marca de tiempo no está resuelta.
Puede usar Python con PyAudio adaptando la respuesta aceptada a esta pregunta SO .
Algo así como (tenga en cuenta que este no es un código de calidad de producción) :
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()
Si no está familiarizado con python, coloque el código anterior en un archivo de texto llamado nightwatch.py y luego ejecute:
python nightwatch
Debería hacer más o menos lo que pediste.
usuario26742873