开篇已经介绍了项目的大概需求,接下来讨论一下如何搭建项目的开发环境。树莓派系统raspbian烧录好之后已经内建了python2.7,不过建议安装python3版本,毕竟现在很多模块已经升级为3以上版本了。另外很重要的模块,语音模块pyaudion/mpg123/alsa(一般内建好了),和计算机视觉模块openCV,当然还有pyGPIO模块等,不过,没关系,还有很多模块需要安装,等具体到编程时可以随时添加,不必一次性搞定。
这里着重提一下关于openCV的安装,网络上很多关于这个模块的安装方法,但是很少有一次性成功的,我这里推荐使用以下链接的指引来一步步安装,如果你有足够耐心,基本上不会有问题。但如果你讨厌等待,你也可以直接使用openCV的简易安装,直接用pip安装简易版的就行,python-openCV。对于简单的视频获取和操作是可以胜任的,对于复杂应用还是推荐使用完整openCV模块。参考这个链接:https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/。作者Adrian Rosebrock很资深的计算机视觉专家,他还写了基本书专门介绍openCV的使用和应用开发,如果你有兴趣可以到网上搜出来学习学习。
接下来配置语音输入输出设备,树莓派默认的音频设备是HDMI或者3.5audio,我们需要作一些设置修改为USB音频输入输出设备,以便让我们的speaker正常工作。请按照以下步骤进行:
建议通过 .asoundrc 文件来配置麦克风和音响。
首先确保已接好麦克风和音响。
获得声卡编号和设备编号
之后查看当前已接入的所有录音设备:
arecord -l
得到的结果类似这样:
pi@pi:~ $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: J710 [Jabra Speak 710], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
上面的结果说明当前接入了一个录音设备,就是speak 710,选择你要使用的录音设备,并记下声卡编号(或名字)和设备编号。例如,我希望使用 Jabra Speak 710 这个设备,则声卡编号为 1 (声卡名为 J710),设备编号为 0 。
类似的方法获取音响的声卡编号和设备编号:
aplay -l
结果类似这样:
pi@pi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 7/7
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: J710 [Jabra Speak 710], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
上面的结果说明当前接入了两个播放设备,其中 card 0 是树莓派自带的声卡,如果您是使用 AUX 3.5 口外接的音响/或耳机,那么应该使用 card 0;card 1则是其他的设备。记下您要使用的声卡编号和设备编号。这里我们使用card 1。
配置 .asoundrc
首先创建 /home/pi/.asoundrc :
touch /home/pi/.asoundrc
之后添加您选择的声卡编号和设备。这里举两种常见的配置。
第一种:您使用的是一个自带音响和录音的组合设备(例如会议麦克风喇叭,或者一块连接了麦克风和音响的独立USB声卡),那么只需设置 pcm 为该组合设备的编号即可。示例:
pcm.!default {
type plug slave {
pcm "hw:1,0"
}
}
ctl.!default {
type hw
card 1
}
上面的 hw:1,0 表示使用 card 1,设备 0。即 C-Media USB Headphone Set 。如果配成 hw:Set,0,效果相同(个人更推荐使用声卡名字)。
第二种:您使用的是一个单独的 USB 麦克风,并直接通过树莓派的 AUX 3.5 口外接一个音响。那么可以参考如下配置:
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "hw:0,0"
}
capture.pcm {
type plug
slave.pcm "hw:2,0"
}
}
ctl.!default {
type hw
card 2
}
由于播放设备(playback)和录音设备(capture)是独立的,所以需要各自配置。
完成后可以测试下命令行录音和播放,看看是否能正常工作。
录音:
arecord -d 3 temp.wav
回放录音:
aplay temp.wav
音频设备配置这一步比较容易出问题,一定要认真一步步来,不要着急。测试成功之后,你的语音输入输出设备就可以正常工作了。
小小的建议,当主要的配置完成后,最好备份你的系统,树莓派系统在开发时容易出现一些问题,当你无法解决的时候,你需要重装系统,如果完全重头到尾来一遍,相信你会崩溃的。所以,当大的框架搭好后,养成备份的习惯是有必要的。
本文暂时没有评论,来添加一个吧(●'◡'●)