前回まで
前回は,socket通信を使って記録する部分までを書いていきました.今回はsocket通信をした後に音声を使ってお知らせする部分まで作っていきたいと思います.
※今回は正直あんまり中身がありません.ちなみに今回はスマホを検知した時に限定して書いています
今回実装した機能
Yolov5上で物体を検知した時➡ソケット通信をする.➡ソケット通信を受けたときに音声を再生する.
※ただこれだけをやっています.本当は場合分けでこれが来たらこれっていうプログラムが書きたいなぁと思っているので次回以降書いていきたいと思っています.
クライアント側
detect.py
if label1=="chair":
print("椅子を検知しました.")
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s2:
s2.connect(('127.0.0.1', 50007))
s2.sendall(b'isukenti')
data = s2.recv(1024)
※クライアント部分は前回同様です.
サーバ側
server.py
from playsound import playsound
import socket
# AF = IPv4 という意味
# TCP/IP の場合は、SOCK_STREAM を使う
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# IPアドレスとポートを指定
s.bind(('127.0.0.1', 50007))
# 1 接続
s.listen(1)
# connection するまで待つ
while True:
# 誰かがアクセスしてきたら、コネクションとアドレスを入れる
conn, addr = s.accept()
with conn:
while True:
# データを受け取る
data = conn.recv(1024)
if not data:
break
#print('data : {}, addr: {}'.format(data, addr))
conn.sendall(b'Received: ' + data)
playsound('2.wav')
# クライアントにデータを返す(b -> byte でないといけない)
※これらのコードは全部もしくは一部を載せています.
###音声部分
基本的には,playsound()を使って音声を再生しているだけです.
音声作成はこちらを使っています.
https://w.atwiki.jp/softalk/
次回へ
次回はもう少し中身のある話を書いていけたらいいなと思っていますが,実装したことはそのまま載せたいので中身がない記事になってしまうときもあります.ごめんなさい.
次回は,物体ごとに音声を場合分けするプログラムを書いていきたいなと考えていますのでよろしくお願いします.
実際に動いている動画