编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

树莓派开发自己的智能语音系统-开发环境搭建

wxchong 2024-08-16 06:04:47 开源技术 21 ℃ 0 评论

开篇已经介绍了项目的大概需求,接下来讨论一下如何搭建项目的开发环境。树莓派系统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

音频设备配置这一步比较容易出问题,一定要认真一步步来,不要着急。测试成功之后,你的语音输入输出设备就可以正常工作了。

小小的建议,当主要的配置完成后,最好备份你的系统,树莓派系统在开发时容易出现一些问题,当你无法解决的时候,你需要重装系统,如果完全重头到尾来一遍,相信你会崩溃的。所以,当大的框架搭好后,养成备份的习惯是有必要的。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表