定时器程序连续播放 4 个声音,每个声音持续 30 秒

定时器程序连续播放 4 个声音,每个声音持续 30 秒

有人能帮帮我吗?我需要一个 bash 脚本来播放一个简短的声音文件,等待 30 秒,播放另一个声音文件,再等待 30 秒。

(我将用它作为提醒,在使用电动牙刷时,在每个牙齿象限上花 30 秒的时间。)

mpg123 /usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3
sleep 30
mpg123 /usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3
sleep 30
mpg123 /usr/share/sounds/My_Sounds/facility-alarm.mp3
sleep 30

但它只播放第一个声音文件。??

答案1

(当我使用电动牙刷时,我会用它作为刷每个牙齿象限的提醒。)

我不得不说,这是我听过的最奇怪的原因之一(如今的电动牙刷都有内置定时器):D ... 可能,你更希望你的计算机也能像这样给你语音指令:

{
t=$(date +"%s")

while true
  do
    n=$(date +"%s")
    ((n<=(t+30))) && spd-say -w 'Brush Upper Left Quadrant'
    ((n>(t+30) && n<=(t+60))) && spd-say -w 'Brush Upper Right Quadrant'
    ((n>(t+60) && n<=(t+90))) && spd-say -w 'Brush Lower Left Quadrant'
    ((n>(t+90) && n<=(t+120))) && spd-say -w 'Brush Lower Right Quadrant'
    ((n>(t+120))) && break
    done
}

或者让它不那么喋喋不休,像这样:

{
f=(
'Brush Upper Left Quadrant'
'Brush Upper Right Quadrant'
'Brush Lower Left Quadrant'
'Brush Lower Right Quadrant'
'Congratulations, mission accomplished'
)

for i in {0..4}
  do
    spd-say -w "${f[$i]}"
    [ "$i" -lt 4 ] && sleep 30
    done
}

或者使用timeout使用你的播放器和音频文件命令如下:

{
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3
timeout 30 mpg123 --loop -1 /usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3
}

sleep和 Bash 内置kill像这样:

{
f=(
'/usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3'
'/usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3'
'/usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3'
'/usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3'
)

for i in {0..3}
  do
    mpg123 --loop -1 "${f[$i]}" &> /dev/null & p="$!"
    sleep 30
    kill "$p"
    done
}

或者播放每个文件一次然后等待 30 秒并转到下一个文件,如下所示:

{
f=(
'/usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3'
'/usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3'
'/usr/share/sounds/My_Sounds/Alarm_Clock_Sound.mp3'
'/usr/share/sounds/My_Sounds/Alarm-sound-buzzer.mp3'
)

for i in {0..3}
  do
    mpg123 "${f[$i]}" &> /dev/null
    [ "$i" -lt 3 ] && sleep 30
    done
}

答案2

几年前,我在这里发布了一个 bash 脚本询问 Ubuntu解决多计时器问题:

但是,它只允许在所有警报上使用一个自定义声音文件。

从那时起,我编写了一个可以在任何设备上的 Chrome 或 Firefox 浏览器上运行的 Javascript 版本:

这次重大改写的好处是,你可以在智能手机上运行计时器,并将其带到洗手间。当然,它运行在 Ubuntu 上,但将电脑拖到水槽边刷牙并不理想。

另一个优点是提姆塔您可以上传无限数量的自定义声音文件,并为每个计时器挑选文件。

相关内容