现在想加入扬声器部分,实现目标检测+提示。
实现效果:扬声器在识别到特定物体后,播放指定的.wav音频。
目前进展:我写了一个.sh脚本,运行后检测和播放音频都可以实现,但是感觉延迟很明显,出现以下三种情况:1、画面出现了特定物体的画面音频迟迟没有播放;2、画面已经切换为其它画面,但是音频仍在循环播放;3、终端提示音频设备被占用。
脚本如下:
Code: Select all
#!/bin/bash
# 初始化计数器
apple_count=0
# 用于存储aplay进程的PID数组
aplay_pids=()
# 启动 luckfox_rtsp_yolov5 并捕获其输出
./luckfox_rtsp_yolov5 | while read line; do
# 检查行中是否包含"apple"
if [[ $line == *"apple"* ]]; then
((apple_count++))
# 如果连续计数达到5,则播放音频并重置计数器
if [[ $apple_count -eq 5 ]]; then
# 播放音频并放到后台运行,同时获取进程ID
aplay -D plug:hw:0 Ding.wav &
# 将aplay进程的PID添加到数组中
aplay_pids+=($!)
# 等待音频播放结束(根据音频长度调整等待时间)
sleep 2
# 重置计数器
apple_count=0
fi
elif [[ $line == *"orange"* ]]; then
# 如果行中包含"orange",则重置计数器,并杀死所有aplay进程
apple_count=0
kill_aplay_processes
else
# 如果行中不包含"apple",则重置计数器
apple_count=0
fi
done
# 定义一个函数来杀死所有aplay进程
kill_aplay_processes() {
for pid in "${aplay_pids[@]}"; do
kill $pid
done
# 清空aplay进程PID数组
aplay_pids=()
}