世上无难事,只要肯放弃

Words
896
Reading
4 min
Listen
Play
6y

之前用香蕉派和蜂鸣器做了一个报警器,还算好用,为我立下汗马功劳。不过唯一遗憾的是我弄的这个报警器声音略小,晚上有时候太累睡得比较沉,可能报警器响好久才会把我吵醒。

image.png
(图源 :pixabay)

于是如何提高报警器音量,是我一直心心念的事情,我首先想到的方法就是给蜂鸣器外接电源外接放大电路,可是我又怕瞎搞把香蕉派的管脚搞坏。

我又想到的方法是单独弄一套电路,让蜂鸣器或者小喇叭发出beep、beep的声音,然后用香蕉派通过继电器控制电路的开关,这样应该比较安全。

按说小喇叭、继电器、三极管什么的我都有,应该可以实现这个设想,可是想想焊来焊去就觉得头大,硬件这些东西就是这点烦人,一点不如软件方法优雅。

咦,软件?我突然想如果通过软件让机箱喇叭发出报警声,似乎也是一个办法,比如内存故障啥的时候出的报警声。可是我研究半天发现好像我的海盗船机箱并没有蜂鸣器。打电话给客服,人家说机箱都没蜂鸣器没喇叭,报警的蜂鸣器是在主板上。

又研究半天,也没搞明白主板到底有没有蜂鸣器以及如何让它发声。然后我又想,何必非得纠结主板蜂鸣器这事呢,我给电脑接个小音箱,然后让音箱发声,岂不是一样。

并且如果能让音箱发声,我就没必要用的香蕉派了,把香蕉派都丢掉就好了,这样还能省电以及让我那个桌面更加干净。

研究了一下Linux下Python发声的各种方案,最后发现simpleaudio库貌似不错,应该符合我的要求。于是装simpleaudio库。

pip install simpleaudio

安装时还提示如下错误:

c_src/simpleaudio_alsa.c:8:10: fatal error: alsa/asoundlib.h: No such file or directory

于是又安装如下依赖:

sudo apt install libasound2-dev

从网上找到一段例子:

import simpleaudio as sa
wave_obj = sa.WaveObject.from_wave_file("path/to/file.wav")
play_obj = wave_obj.play()
play_obj.wait_done()

看起来简单明了,但是我没有wav格式文件啊,于是让我的好朋友(音乐发烧友)给我找一段短小的wav片段,结果丫给我发来一个58M那么大的“白狐.wav”,我严重怀疑他对“短小”是不是有什么误解?
(后来发现simpleaudio安装目录里就有测试wav)

不管了,反正也是wav格式,于是用scp上传到我的Linux系统,并调用如上代码播放,结果给我一大堆错误:

image.png

这个看字面意思应该就是我没安装声卡驱动之类的,想想我装的系统好像是Ubuntu Server版,没装驱动也很正常。不过在一想安装声卡驱动啥的,头就爆炸了。

在微信上和朋友吐槽,结果朋友回了我一个表情:

image.png

仔细一想还真是这个道理,较啥劲呀,毕竟我的报警器虽然不完美但是也算好用,何必再折腾呢,万一再把系统折腾坏呢?果断放弃,果然觉得豁然开朗,哈哈哈。

世上无难事,只要肯放弃 | Ecency