파이썬 오디오 라이브러리를 활용한 환경 소음 탐지 시스템 구축

audio

소음은 우리 일상에서 흔히 마주치는 문제 중 하나입니다. 소음이 주변 환경에 미치는 영향은 우리 건강과 행복에 직접적인 영향을 줄 수 있습니다. 따라서 소음 감지 시스템은 환경을 분석하고 문제를 조기에 인지할 수 있도록 도와줍니다.

이 글에서는 파이썬 오디오 라이브러리를 사용하여 환경 소음을 감지하고 분석하는 시스템을 구축하는 방법을 알아보겠습니다. 이 시스템은 소음 레벨을 측정하고 특정 임계값을 초과하는 경우 경고를 발생시킵니다.

필요한 라이브러리 설치

먼저, 파이썬에서 오디오를 다루기 위해 필요한 라이브러리를 설치해야 합니다. 파이썬에서 오디오 처리에 널리 사용되는 pyaudio와 오디오 데이터를 분석하기 위한 numpy 라이브러리를 설치해야 합니다. 아래의 명령어를 사용하여 라이브러리를 설치합니다.

pip install pyaudio numpy

소음 레벨 측정

파이썬 코드에서 소음 레벨을 측정하기 위해 pyaudio를 사용합니다. 다음은 소음 레벨을 측정하는 간단한 예제 코드입니다.

import pyaudio
import numpy as np

# 오디오 스트림 열기
stream = pyaudio.PyAudio().open(format=pyaudio.paInt16, channels=1, rate=44100, input=True, frames_per_buffer=1024)

while True:
    # 오디오 데이터 읽기
    data = np.frombuffer(stream.read(1024, exception_on_overflow=False), dtype=np.int16)
    
    # 소음 레벨 계산
    rms = np.sqrt(np.mean(np.square(data)))
    
    # 소음 레벨 출력
    print("Noise Level: {:.2f} dB".format(20 * np.log10(rms)))

# 오디오 스트림 닫기
stream.stop_stream()
stream.close()

위의 코드는 오디오 스트림을 열고 1024개의 오디오 데이터를 읽은 후 RMS(Root Mean Square) 소음 레벨을 계산합니다. 계산된 소음 레벨은 dB 단위로 출력됩니다.

이 예제 코드를 실행하면 실시간으로 소음 레벨이 출력됩니다.

임계값 설정 및 경고 발생

소음 레벨을 측정하는 코드에 알림 기능을 추가하여 특정 임계값을 초과하는 경우 경고를 발생시킬 수 있습니다. 다음은 알림 기능이 추가된 코드 예제입니다.

import pyaudio
import numpy as np

# 오디오 스트림 열기
stream = pyaudio.PyAudio().open(format=pyaudio.paInt16, channels=1, rate=44100, input=True, frames_per_buffer=1024)

# 임계값 설정
threshold = 70

while True:
    # 오디오 데이터 읽기
    data = np.frombuffer(stream.read(1024, exception_on_overflow=False), dtype=np.int16)
    
    # 소음 레벨 계산
    rms = np.sqrt(np.mean(np.square(data)))
    
    # 소음 레벨 출력
    print("Noise Level: {:.2f} dB".format(20 * np.log10(rms)))
    
    # 임계값 초과 시 경고 발생
    if 20 * np.log10(rms) > threshold:
        print("Loud noise detected!")
        # 여기에 경고 발생 시 동작 추가

# 오디오 스트림 닫기
stream.stop_stream()
stream.close()

위의 코드에서는 threshold 변수를 사용하여 임계값을 설정하고, 소음 레벨이 임계값을 초과하는 경우 “Loud noise detected!” 메시지가 출력됩니다. 여기에 필요한 추가 동작을 추가하여 소음이 감지되었을 때 알림을 보내거나 특정 작업을 수행할 수 있습니다.

이와 같은 방식으로 파이썬 오디오 라이브러리를 활용하여 환경 소음 탐지 시스템을 구축할 수 있습니다. 소음 레벨을 측정하고 임계값을 설정함으로써 소음이나 문제를 조기에 인지할 수 있으며, 이를 통해 향후 조치를 취할 수 있습니다.

#tech #audio #noise #detection #python