Raspi Voice HAT-配置使用教程

产品简介

前言

Raspi Voice HRaspi Voice HAT是专为AI和语音应用设计的Raspberry Pi双麦克风扩展板。 这意味着您可以构建一个集成Amazon Amazona语音服务,Google助手,百度AI等的功能更强大,更灵活的语音产品。

该板是基于树莓派而设计的音频模块,采用WM8960低功耗立体声编解码器,通过I2C接口控制,I2S接口传输音频。 电路板两侧有两个麦克风采集声音,还提供12个APA102 RGB LED和1个板载扬声器,并提供1个用户按钮和1个I2C接口,用于扩展应用程序。

此外,板载3.5mm音频插孔或JST 2.0扬声器输出均可用于音频输出,可通过外接耳机播放音乐,同时也可通过双通道喇叭接口外接喇叭播放。板子左右两边有一个高质量MEMS硅麦克风,可以立体声录音。

产品特性

  • 供电电压:5V
  • 逻辑电压:3.3V
  • 音频编解码芯片:WM8960
  • 控制接口:I2C
  • 音频接口:I2S
  • 扩展接口:1x I2C,1x按键
  • 电源接口:1xType-C 接口(5V)
  • LED接口:12个APA102可编程RGB LED,连接到SPI接口
  • DAC信噪比:98dB
  • ADC信噪比:94dB
  • 耳机驱动:40mW (16Ω@3.3V)
  • 扬声器驱动:1W per channel (8Ω BTL)(板载mono扬声器)

硬件资源


LP、LN分别对应左扬声器的正、负极; RP、RN分别对应右扬声器的正、负极。

功能引脚树莓派引脚(BCM)描述
5V5V电源正(5V电源输入)
GNDGND电源地
SDAP3/GPIO2I2C数据输入
SCLP5/GPIO3I2C时钟输入
CLKP12/GPIO18I2S位时钟输入
LRCLKP35/GPIO19I2S帧时钟输入
DACP40/GPIO21I2S串行数据输出
ADCP38/GPIO20I2S串行数据输入
BUTTONP29/GPIO5或P31/GPIO6自定义按键

树莓派使用

本产品例程只适用于树莓派官方系统(Raspbian)

安装驱动

如果你是国内用户,用官方源可能会比较慢,整个安装过程下载需要很长时间且可能会更新失败,因此可以换成阿里源:

sudo nano /etc/apt/sources.list

将官方源开头用#注释,并添加阿里源:

#deb-src http://archive.raspberrypi.org/debian/ stretch main
deb http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi
deb-src http://mirrors.aliyun.com/raspbian/raspbian/ buster main contrib non-free rpi

更新软件源:

sudo apt-get update
sudo apt-get upgrade

检查内核版本:

请使用树莓派官方内核版本为5.4以上的官方系统(Kernel version:5.4)
git clone --depth=1 https://github.com/respeaker/seeed-voicecard

安装WM8960驱动:

cd seeed-voicecard
#需要等待一定的时间
sudo ./install.sh
reboot

重启后运行如下命令看下驱动是否加载成功。

检测声卡

  • 检查播放:aplay -l
pi@raspberrypi:~/seeed-voicecard $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  Subdevices: 8/8
  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
  Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
  • 检查录音:arecord -l
pi@raspberrypi:~/seeed-voicecard $ arecord -l
**** List of CAPTURE Hardware Devices ****
card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
pi@raspberrypi:~/seeed-voicecard $

录音播放测试

录播测试

sudo arecord -f cd -Dhw:1 | aplay -Dhw:1

程序运行后通过耳机或者喇叭会听到麦克风采集到的声音,注意喇叭不能开靠近麦克风否 则会导致共振产生啸叫。

录音

sudo arecord -D hw:1,0 -f S32_LE -r 16000 -c 2 test.wav

test.wav是录制生成的文件名。

播放

sudo aplay -Dhw:1 test.wav

播放刚刚录制的音频

调节音量

默认的音量是比较小的

sudo alsamixer

如果 WM8960 声卡没有设置为默认声卡则需要按 F6 选择声卡设备。

实际上右边还有很多可以调节的选项。

使用板子上的彩色LED灯

安装spidev

sudo pip install spidev

下载程序并解压

cd Voice_HAT
sudo python pixels.py

使用按键

板上的按键默认使用GPIO6(可通过跳线更改为GPIO5).

sudo pip install rpi.gpio    // install RPi.GPIO library
nano button.py               // copy the following code in button.py
编辑button.py文件,添加以下代码并保存
import RPi.GPIO as GPIO
import time
 
BUTTON = 6
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON, GPIO.IN)
 
while True:
    state = GPIO.input(BUTTON)
    if state:
        print("off")
    else:
        print("on")
    time.sleep(1)

运行程序后,可以从打印中看到按键的状态

pi@raspberrypi:~ $ python button.py
off
off
on
on
off

发表评论