树莓派解决pyaudio 采样率16k报错问题

问题出处:
以前做了一个对话机器人,但是一直不知道怎么解决唤醒这个问题。这两天忽然看到有个开源的的好项目—-snowboy 它能够一直离线的监控后台 起到语音唤醒的作用。于是便查相关资料。

先是按照官网给的教程做了一遍。

1丶Install Sox.
On Linux systems, run:

sudo apt-get install python-pyaudio python3-pyaudio sox

2丶pip install pyaudio
安装pyaudio模块过程出现错误 fatal error: portaudio.h: 没有那个文件或目录
解决办法:sudo apt-get install python-pyaudio python3-pyaudio安装

3丶rec temp.wav
然后在这一步又出现了错误,原因是声卡设置出现了问题。于是就找关于设置声卡的问题。由于raspberry 8.0 图形界面设置默认声卡有BUG 就只能手动去改~/.asoundrc文件。可是我找了老半天也没有找到这个文件,为什么?因为这个文件需要手动自己去创建。而网上没有任何一篇文章提到这一点。坑了我特别久(脸上笑嘻嘻,心里___) 在/home/pi目录下创建一个名为.asoundrc文件 然后把下面的复制进去 我这边是插了一个usb麦克风的。

pcm.!default {
        type asym
            playback.pcm {
                type plug
                slave.pcm "hw:0,0"
            }
            capture.pcm {
                type plug
                slave.pcm "hw:1,0"
            }        
}
ctl.!default {
        type hw
        card 1
}

然后再次rec temp.wav 哈哈哈!!成功了,YES!

4丶python demo.py snowboy.pmdl
PyAudio出现[Errno -9985] Device unavailable
解决方案:
请确保pulseaudio服务器依旧在工作!
安装pulseaudio,如下命令:

sudo apt-get install pulseaudio

然后运行pulseaudio

pulseaudio --start

当然,我们也可以将它加入到/etc/systemd/system/pulseaudio.service中去,确保它能在重新启动后继续工作:

[Unit]
Description=PulseAudio Sound System
Before=sound.target

[Service]
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio
Restart=always

[Install]
WantedBy=session.target

之后,果然解决了上面的问题

不仅这一步出错,因为snowboy用的录音软件是pyaduio 而且采样率是16K。所以也报出了IOError: [Errno Invalid sample rate] -9997的错误 这个问题我在以前做机器人的时候就碰到过,当时我也是用了pyaudio去录音,那时候就碰到了这个问题。一时半会没找到办法就改用了arecord去录音 了。谁知道这次又碰到了这个问题,那这次只能想办法解决了。 现在我又可以用snowboy做唤醒还能用pyaudio去录音了 美滋滋~~~ 不懂可以联系我qq:1281248141 By:AnE

你可能感兴趣的:(树莓派小玩意,个人笔记)