SMALL
만드는 순서가 뒤죽박죽이긴 한데
아이가 울면 핸드폰 알람이 울리도록 하기 위해서 sound detecting을 준비하기로 했다.
먼저 rpi에서 python으로 recording기능을 테스트 함.
python pyaudio를 통해 sound입력레벨을 알 수 있고,
threshold를 정해 지정시간동안 큰 소리가 발생하면 디텍팅이 가능하다.
디텍팅 함수를 아래와 같이 구현하였다.
def detect_sound(data_chunk):
THRESHOLD = 350
compare = max(data_chunk) > THRESHOLD
return compare
def detecting(audio):
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 44100
CHUNK = 4096
LOUD_CHUNKS = 3 * 44100 / 4096 # about 3sec
RECORD_SECONDS = 60
WAVE_OUTPUT_FILENAME = "record_test.wav"
# start Recording
stream = audio.open(format=pyaudio.paInt16,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("start recording")
frames = []
loud_chunks = 0
data_all = array('h')
start_time = 0
end_time = 0
start_time = time()
print('start at silence ', start_time)
while True:
data = array('h', stream.read(CHUNK))
data_all.extend(data)
loud = detect_sound(data)
if loud:
loud_chunks += 1
if loud_chunks > LOUD_CHUNKS:
end_time = time()
print('it is loud!!!! ', end_time)
print(end_time - start_time)
send_sound_alarm()
break
else:
loud_chunks = 0
print("finished recording")
# stop Recording
stream.stop_stream()
stream.close()
audio.terminate()
오디오 입력을 chunk만큼씩 읽는다.
3초동안 큰 소리가 나면 send_sound_alarm() 함수를 실행시킨 후 함수가 종료된다.
send_sound_alarm함수에 detecting시 request를 전송하는 처리를 넣고, 이 어플을 데몬으로 돌릴 수 있도록 구현하면 되겠다.
LIST
'개발Study > IP Camera' 카테고리의 다른 글
make IP camera using raspberry pi 4 (13) notification (0) | 2022.02.26 |
---|---|
make IP camera using raspberry pi 4 (11) responsive web UI (0) | 2022.02.22 |
make IP camera using raspberry pi 4 (12) android app (0) | 2022.02.21 |
make IP camera using raspberry pi 4 (10) android web view (0) | 2022.02.21 |
make IP camera using raspberry pi 4 (9) motion alarm setting (0) | 2022.02.20 |
댓글