检测程序记录如下
import pyaudio
import wave
import datetime
FORMAT = pyaudio.paInt16
CHANNELS = 1
RATE = 16000
CHUNK = 10240
THRESHOLD = 10240000 # 最小的音频振幅值,认为是狗叫声
MAX_BARKS = 100 # 最多检测的狗叫次数
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print('正在听取...')
barks = 0 # 记录检测到的狗叫声数量
filename = 'dog_bark_detection_log_'+datetime.datetime.now().strftime('%Y-%m-%d %H-%M-%S')+'.log'
while barks < MAX_BARKS:
data = stream.read(CHUNK)
# 将数据转换为整数,并计算音频信号的均方根(RMS)
rms = (sum([(2 ** 16) ** 2 * data[i] ** 2 for i in range(0, len(data), 2)]) / float(len(data) / 2)) ** 0.5
print(f'检测到,音量为 {rms}')
if rms < THRESHOLD:
print(f'检测到狗叫声于 {datetime.datetime.now()},音量为 {rms}')
# 创建一个文本文件,用于记录检测结果
with open(filename, 'a') as f:
f.write(f'检测到狗叫声于 {datetime.datetime.now()},音量为 {rms}\n\n')
barks += 1
stream.stop_stream()
stream.close()
p.terminate()
上面这段已经测试过了。没问题。
下来安装 PyInstaller
pip install pyinstaller
碰到了问题
安装过后,无法运行。好吧,百度开始。
最终发现,还是路径没有放入path中,好吧,最讨厌这套了。
弄好之后可以了
再然后,先执行以下我的界面代码。
import tkinter as tk
import subprocess
def on_button_click():
label.config(text="Hello World!")
subprocess.run(["python", "dog_bark_detection.py"])
root = tk.Tk()
root.title("My GUI")
root.geometry("300x200")
label = tk.Label(root, text="Welcome to my GUI!", font=("Arial", 16))
label.pack(pady=20)
button = tk.Button(root, text="开始检测狗叫!", command=on_button_click)
button.pack()
root.mainloop()
python测试一下
完事,下来就是打包
完事了,可以用了。结束
就是生成的文件好像有点多。
弄个ui不容易啊