之前写了一篇用sounddevice播放音乐的博文,里面是我写的一个简单的音乐播放器(《用sounddevice实现连续的音乐曲库播放》),在pc机上运行一切正常。可是,将它挪到树莓派与语音助手的代码融合后,却发现了一些问题,最主要的是运行时出现了“output underflow”提示。
这个提示是打印了音乐播放的callback函数中print(status)的信息。查sounddevice的API接口说明,原来这是代表stream callback独占了cpu,导致其他程序都不用跑了。
要消除这个提示也很简单,就是在OutPutStream函数中加一个blocksize就能解决。比如我加的是blocksize=5*fs,5代表5秒,fs是samplerate。