回答

收藏

ReSpeaker 2-Mics Pi HAT双麦克风扩展板 相关资料

#其他 #其他 7067 人阅读 | 0 人回复 | 2018-09-25


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

该板是基于WM8960开发的低功耗立体声编解码器。 电路板两侧有两个麦克风采集声音,还提供3个APA102 RGB LED,1个用户按钮和2个板载Grove接口,用于扩展应用程序。 此外,3.5mm音频插孔或JST 2.0扬声器输出均可用于音频输出。
商城购买链接 >

产品特征
  • Raspberry Pi兼容(支持Raspberry Pi Zero和Zero W,Raspberry Pi B +,Raspberry Pi 2 B和Raspberry Pi 3 B)
  • 2个麦克风
  • 2个Grove接口
  • 1个自定义按钮
  • 3.5mm音频接口
  • JST2.0音频输出接口

硬件概述



  • 按钮:连接到GPIO17的用户自定义按钮
  • MIC_L&MIC_R:左边右边各有一个麦克风
  • RGB LED:3个APA102 RGB LED,连接到树莓派的SPI接口
  • WM8960:低功耗立体声编解码器
  • Raspberry Pi 40针头:支持Raspberry Pi Zero,Raspberry Pi 1 B +,Raspberry Pi 2 B和Raspberry Pi 3 B
  • POWER:用于为ReSpeaker 2-Mics Pi HAT供电的Micro USB端口,请在使用扬声器时为电路板供电,以提供足够的电流。
  • I2C:Grove I2C端口,连接到I2C-1
  • GPIO12:Grove数字端口,连接到GPIO12和GPIO13
  • JST 2.0 SPE***ER OUT:用于连接扬声器,JST 2.0连接器
  • 3.5mm音频插孔:用于连接带3.5mm音频插头的耳机或扬声器


入门指导1. 系统配置与驱动安装
step 1. 把ReSpeaker 2-Mics Pi HAT插入到Raspberry Pi
把 ReSpeaker 2-Mics Pi HAT 插入到 Raspberry Pi, 确保插入Raspberry Pi的时候针脚对齐。
Note.不要在上电的时候,热插拔ReSpeaker 2-Mics Pi HAT.


step 2. 烧录系统,登陆,换源
因为当前的Pi内核目前不支持wm8960编解码器,所以我们需要手动构建。
  • 确保您正在您的Pi上运行最新的Raspbian操作系统(debian 9)。 (更新于2018.06.27),您可以用etcher进行系统烧录
  • 您可以用 VNC或者PUTTY连接树莓派,但之前请配置好wifi
  • 在安装驱动之前,请根据以下流程切换源到清华。

  1. pi@raspberrypi ~ $ sudo nano /etc/apt/sources.list
复制代码
用#注释掉原文件内容,用以下内容取代:
  1. deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
  2. deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
复制代码
step 3. 驱动下载并安装 运行下面命令
  1. sudo apt-get update
  2. sudo apt-get upgrade
  3. git clone https://github.com/respeaker/seeed-voicecard.git
  4. cd seeed-voicecard #下载声卡驱动
  5. sudo ./install.sh #安装声卡驱动
  6. reboot  #重启
复制代码
step 4. 检查声卡名称是否与源代码seeed-voicecard相匹配.
  1. pi@raspberrypi:~/seeed-voicecard $ aplay -l
  2. **** List of PLAYBACK Hardware Devices ****
  3. card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
  4.   Subdevices: 8/8
  5.   Subdevice #0: subdevice #0
  6.   Subdevice #1: subdevice #1
  7.   Subdevice #2: subdevice #2
  8.   Subdevice #3: subdevice #3
  9.   Subdevice #4: subdevice #4
  10.   Subdevice #5: subdevice #5
  11.   Subdevice #6: subdevice #6
  12.   Subdevice #7: subdevice #7
  13. card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
  14.   Subdevices: 1/1
  15.   Subdevice #0: subdevice #0
  16. card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  17.   Subdevices: 1/1
  18.   Subdevice #0: subdevice #0

  19. pi@raspberrypi:~/seeed-voicecard $ arecord -l
  20. **** List of CAPTURE Hardware Devices ****
  21. card 1: seeed2micvoicec [seeed-2mic-voicecard], device 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
  22.   Subdevices: 1/1
  23.   Subdevice #0: subdevice #0
  24. pi@raspberrypi:~/seeed-voicecard $
复制代码

2. 录音播放测试
step 1. 录播测试 可以用arecord录制,然后用aplay播放:(不要忘记插耳机或者喇叭):
  1. arecord -f cd -Dhw:1 | aplay -Dhw:1
复制代码
也可以通过audacity软件测试。打开Audacity后,选择 AC108和2通道 作为输入,bcm2835 alsa: - (hw:0,0)作为输出来测试:
  1. $ sudo apt update
  2. $ sudo apt install audacity
  3. $ audacity                      // 运行 audacity
复制代码

step 2. 调节音量(可跳过)
alsamixer 是用于配置声音设置和调整音量,高级Linux声音体系结构(ALSA)的图形混音器程序。
  1. pi@raspberrypi:~ $ alsamixer
复制代码
Note.首先请用F6选择seeed-2mic的声卡设备。

左和右***键用于选择通道或设备,“向上和向下***”控制当前所选设备的音量。 退出程序使用ALT + Q或按Esc键。 More information

3. 安装python和虚拟环境
这样是是为了隔离SDK与系统Python包关系。
  1. pi@raspberrypi:~ $ cd /home/pi
  2. pi@raspberrypi:~ $ git clone https://github.com/respeaker/4mics_hat.git
  3. pi@raspberrypi:~ $ cd /home/pi/4mics_hat
  4. pi@raspberrypi:~/4mics_hat $ sudo apt install python-virtualenv          # 安装 python2 虚拟环境工具
  5. pi@raspberrypi:~/4mics_hat $ virtualenv --system-site-packages ~/env     # 建立虚拟环境,命名位env,放在~目录下
  6. pi@raspberrypi:~/4mics_hat $ source ~/env/bin/activate                   # 激活虚拟环境
  7. (env) pi@raspberrypi:~/4mics_hat $ pip install spidev gpiozero           # 安装需要的工具包
复制代码
Google Assistant SDK
Warning.因为我们在中国,无法直接使用Google的服务。必须搭建可以访问google的路由器,然后连接到路由。

1. 配置流程
在开始使用Google Assistant之前,首先您应该将Google Assistant Library整合到您的raspberry pi系统中。 以下是Google官方指导的链接。

以下指南还将向您介绍如何开始使用Google助手。

step 1. 配置开发人员项目,并获取JSON文件
请根据指南 第一步到第四步在Google Cloud Platform上配置项目,并创建一个OAuth Client ID JSON文件。 不要忘记将JSON文件复制到您的Raspberry Pi。

step 2. 安装google-assistant-library
Google Assistant SDK软件包,包含在设备上运行Google Assistant所需的所有代码,包括库和示例代码。 使用pip在虚拟环境中安装最新版本的Python包:
  1. source env/bin/activate #打开虚拟环境
  2. (env) $ python -m pip install --upgrade google-assistant-library
复制代码
step 3. 授权Google Assistant SDK
授权Google Assistant SDK,使Google Assistant对给定的Google帐户进行查询。 把步骤1中的JSON文件复制到树莓派/home/pi下。
  1. pi@raspberrypi:~ $ google-oauthlib-tool --client-secrets /home/pi/client_secret_client-id.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless
复制代码
/home/pi/client_secret_client-id.json 是你的JSON文件的路径,确保Json文件的名字匹配。 运行命令后,应该显示如下所示。 复制URL并将其粘贴到浏览器中(这可以在您的树莓派或任何其他电脑上完成)。 同意后,您的浏览器将显示代码,例如“4 / XXXX”。 复制并将此代码粘贴到终端中。
  1. Please go to this URL: https://...
  2. Enter the authorization code:
复制代码
这个时候应该显示: OAuth credentials initialized. 如果显示: InvalidGrantError then an invalid code was entered. 请重试, 确保拷贝整个code.

step 4. 安装 pulseaudio 并且让他在后台运行
  1. pi@raspberrypi:~ $ sudo apt install pulseaudio
  2. pi@raspberrypi:~ $ pulseaudio &
  3. [1] 1244
  4. pi@raspberrypi:~ $ W: [pulseaudio] server-lookup.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
  5. W: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
  6. E: [pulseaudio] bluez4-util.c: org.bluez.Manager.GetProperties() failed: org.freedesktop.DBus.Error.UnknownMethod: Method "GetProperties" with signature "" on interface "org.bluez.Manager" doesn't exist
复制代码
Note.请忽略pulseaudio错误信息。

step 5. 开始使用Google Assistant示例
  1. pi@raspberrypi:~ $ alsamixer    // To adjust the volume
  2. pi@raspberrypi:~ $ source env/bin/activate
  3. (env) pi@raspberrypi:~ $ env/bin/google-assistant-demo
复制代码
step 6. 唤醒Google Assistant

先说 Ok Google 或者 Hey Google, 然后说您的询问. 语音助手就会响应您的问题。如果语音助手没有响应, 请按照 疑难解答说明.

2.常见问题解决方法
如果您遇到问题,请参考 常见疑难解答说明

3. 控制APA102 LED的示例
每个板载APA102 LED都有一个额外的驱动芯片,驱动芯片设置LED的颜色,然后保持该颜色,直到接收到新的命令。
请在执行之前打开SPI,具体步骤如下:
  1. - 输入: `sudo raspi-config`;
  2. - 选择 "Interfacing Options";
  3. - 选择 "SPI";
  4. - 选择 “Yes”  
  5. - 选择 “OK”
  6. - 选择 “Finish”
复制代码
配置完后,可以执行下列命令行来运行led示例
  1. cd ~/
  2. git clone https://github.com/respeaker/mic_hat.git
  3. sudo pip install spidev #安装spi的驱动
  4. cd mic_hat
  5. python pixels.py
复制代码

4.如何使用用户自定义按钮
板子上面有个用户自定义按钮,连接到GPIO17. 我们可以调用python和RPi.GPIO来读取状态。
  1. sudo pip install rpi.gpio    // install RPi.GPIO library
  2. nano button.py               // copy the following code in button.py
复制代码
  1. import RPi.GPIO as GPIO
  2. import time

  3. BUTTON = 17

  4. GPIO.setmode(GPIO.BCM)
  5. GPIO.setup(BUTTON, GPIO.IN)

  6. while True:
  7.     state = GPIO.input(BUTTON)
  8.     if state:
  9.         print("off")
  10.     else:
  11.         print("on")
  12.     time.sleep(1)
复制代码
Save the code as button.py, then run it. It should display "on" when you press the button:
  1. pi@raspberrypi:~ $ python button.py
  2. off
  3. off
  4. on
  5. on
  6. off
复制代码

5
. 用按钮来触发Google Assisant
您可以用按键来代替"ok google"来激活Google Assisant.
  • 更新 pushtotalk.py
  1. cd /usr/local/lib/python2.7/dist-packages/googlesamples/assistant/grpc
  2. sudo nano pushtotalk.py
复制代码
请到文件第301行, 然后根据下面的code来更新。

  1.     with SampleAssistant(conversation_stream,
  2.                          grpc_channel, grpc_deadline) as assistant:
  3.         # If file arguments are supplied:
  4.         # exit after the first turn of the conversation.
  5.         if input_audio_file or output_audio_file:
  6.             assistant.converse()
  7.             return

  8.         # If no file arguments supplied:
  9.         # keep recording voice requests using the microphone
  10.         # and playing back assistant response using the speaker.
  11.         # When the once flag is set, don't wait for a trigger. Otherwise, wait.
  12.         wait_for_user_trigger = not once
  13.         import RPi.GPIO as GPIO
  14.         GPIO.setmode(GPIO.BCM)
  15.         GPIO.setup(17,GPIO.IN)
  16.         while True:
  17.             if wait_for_user_trigger:
  18.                 state = GPIO.input(17)
  19.                 logging.info('Press the button to send a new request...')
  20.                 if state:
  21.                     continue
  22.                 else:
  23.                     pass
  24.                # click.pause(info='Press Enter to send a new request...')
  25.             continue_conversation = assistant.converse()
  26.             # wait for user trigger if there is no follow-up turn in
  27.             # the conversation.
  28.             wait_for_user_trigger = not continue_conversation

  29.             # If we only want one conversation, break.
  30.             if once and (not continue_conversation):
  31.                 break


  32. if __name__ == '__main__':
  33.     main()
复制代码
  • 运行下面程序来进行测试:
  1. $ googlesamples-assistant-pushtotalk
复制代码
  • 程序运行的结果如下图所示:


Alexa SDK 和 DuerOs SDK
由于国内登录不上 Google Assisant ,所以使用在国内能连接的 Alexa 和 百度 DuerOs 作为语音引擎,开发出能让大多数人使用的语音互动系统。

1. 配置和DOA测试
step 1. 配置 Voice engine
  1. pi@raspberrypi:~ $ source ~/env/bin/activate                    # 激活Python虚拟环境, 如果已经激活,调到下一步。
  2. (env) pi@raspberrypi:~ $ cd ~/4mics_hat
  3. (env) pi@raspberrypi:~/4mics_hat $ sudo apt install libatlas-base-dev     # 安装 snowboy dependencies
  4. (env) pi@raspberrypi:~/4mics_hat $ sudo apt install python-pyaudio        #安装pyaudio音频处理包
  5. (env) pi@raspberrypi:~/4mics_hat $ pip install ./snowboy*.whl             # 安装 snowboy for KWS
  6. (env) pi@raspberrypi:~/4mics_hat $ pip install ./webrtc*.whl              # 安装 webrtc for DoA
  7. (env) pi@raspberrypi:~ $ cd ~/
  8. (env) pi@raspberrypi:~ $ git clone https://github.com/voice-engine/voice-engine #write by seeed
  9. (env) pi@raspberrypi:~ $ cd voice-engine/
  10. (env) pi@raspberrypi:~ $ python setup.py install
  11. (env) pi@raspberrypi:~ $ cd examples
  12. (env) pi@raspberrypi:~ $ nano kws_doa.py
复制代码
step 2. 修改kws_doa.py的第14-21行,以适应 2-Mics:
  1. from voice_engine.doa_respeaker_4mic_array import DOA


  2. def main():
  3.     src = Source(rate=16000, channels=2)
  4.     ch1 = ChannelPicker(channels=2, pick=1)
  5.     kws = KWS()
  6.     doa = DOA(rate=16000)
复制代码
然后保存退出。

step 3. 运行
在虚拟环境下运行 python kws_doa.py。请用 snowboy 来唤醒,我们就可以看到方位的信息。

2. 百度中文语音互动或者alexa英文语音互动
step 1. 配置和安装相关依赖
  1. pi@raspberrypi:~ $ source ~/env/bin/activate                    # activate the virtual, if we have already activated, skip this step
  2. (env) pi@raspberrypi:~ $ cd ~/
  3. (env) pi@raspberrypi:~ $ git clone https://github.com/respeaker/avs
  4. (env) pi@raspberrypi:~ $ cd avs                                 # install Requirements
  5. (env) pi@raspberrypi:~ $ python setup.py install                              
  6. (env) pi@raspberrypi:~/avs $ sudo apt install gstreamer1.0
  7. (env) pi@raspberrypi:~/avs $ sudo apt install gstreamer1.0-plugins-good
  8. (env) pi@raspberrypi:~/avs $ sudo apt install gstreamer1.0-plugins-ugly
  9. (env) pi@raspberrypi:~/avs $ sudo apt install python-gi gir1.2-gstreamer-1.0
  10. (env) pi@raspberrypi:~/avs $ pip install tornado
复制代码
step 2. 取得授权

在终端运行 alexa-auth ,然后登陆获取alexa的授权, 或者运行 dueros-auth 获取百度的授权。 授权的文件保存在/home/pi/.avs.json
Note.如果我们在 alexa-authdueros-auth之间切换, 请先删除 /home/pi/.avs.json 。 这个是隐藏文件,请用 ls -la 显示文件。

step 2. 配置
  1. (env) pi@raspberrypi:~ $ cd /home/pi
  2. (env) pi@raspberrypi:~ $ git clone https://github.com/respeaker/respeaker_v2_eval.git
  3. (env) pi@raspberrypi:~ $ cd respeaker_v2_eval/alexa
  4. (env) pi@raspberrypi:~/respeaker_v2_eval/alexa $ cp ~/4mics_hat/pixels.py ./pixels.py
  5. (env) pi@raspberrypi:~/respeaker_v2_eval/alexa $ nano ns_kws_doa_alexa.py
复制代码
按照下面的信息更新第15-50行的设置:
  1.     from voice_engine.kws import KWS
  2.     #from voice_engine.ns import NS
  3.     #from voice_engine.doa_respeaker_4mic_array import DOA
  4.     from avs.alexa import Alexa
  5.     from pixels import pixels

  6.     def main():
  7.         logging.basicConfig(level=logging.DEBUG)

  8.         src = Source(rate=16000, channels=2, frames_size=800)
  9.         ch1 = ChannelPicker(channels=2, pick=1)
  10.         #ns = NS(rate=16000, channels=1)
  11.         kws = KWS(model='snowboy')
  12.         #doa = DOA(rate=16000)
  13.         alexa = Alexa()

  14.         alexa.state_listener.on_listening = pixels.listen
  15.         alexa.state_listener.on_thinking = pixels.think
  16.         alexa.state_listener.on_speaking = pixels.speak
  17.         alexa.state_listener.on_finished = pixels.off

  18.         src.link(ch1)
  19.         ch1.link(kws)
  20.         #ch1.link(ns)
  21.         #ns.link(kws)
  22.         kws.link(alexa)

  23.         #src.link(doa)
  24.         def on_detected(keyword):
  25.             #logging.info('detected {} at direction {}'.format(keyword, doa.get_direction()))
  26.             logging.info('detected {}'.format(keyword))
  27.             alexa.listen()

  28.         kws.set_callback(on_detected)
复制代码

step 3. 让我们High起来!
现在请在虚拟环境下运行 python ns_kws_doa_alexa.py , 我们会在终端看到很多 debug 的消息. 当我们看到 status code: 204 的时候, 请说 snowboy 来唤醒 respeaker。接下来 respeaker 上的 led 灯亮起来, 我们可以跟他对话, 比如问,"谁是最帅的?" 或者 "播放刘德华的男人哭吧哭吧不是罪"。小伙伴,尽情的 High 起来吧。

STT (语音转文字)
本部分将介绍百度STT(语音到文本)功能以及GPIO控件。 这是GPIO配置。 如果您没有风扇,可以在GPIO12 / GPIO13上连接2个LED进行演示。
Step 1. 安装依赖
  1. sudo apt install mpg123
  2. pip install baidu-aip monotonic pyaudio
复制代码
Step 2. 从百度获取key Here.
Step 3. 下载源码并执行 Smart_Fan.py

输入下列命令运行代码
  1. cd ~
  2. wget https://github.com/SeeedDocument/MIC_HATv1.0_for_raspberrypi/raw/master/src/baidu_STT.zip
  3. unzip baidu_STT.zip
  4. cd baidu_STT
  5. python Smart_Fan.py
复制代码
Warning.请在运行 Smart_Fan.py之前添加百度密钥 @ line 36,37,38。 您还可以通过运行synthesis_wav.py来生成所有者的声音。 请在第6,7,8行添加百度密钥,并将字符串修改为您要生成的内容。

Step 4. 说 '开风扇'.
Step 5. 你会看到风扇开启.
Step 6. 可以试试 '快一点', '慢一点' 或 '关风扇'.

FAQ(疑问解答)
Q1:严格按照本 wiki 操作,驱动还是安装失败,怎么办?
A1:如果按照上述方法安装驱动均失败,请点击下面固件安装
需要以下几点需要注意,第一,lite版本是没有图形界面的精简版,建议您安装有图形界面的。第二,烧了固件后,记得换源。第三, 如果要使用交互功能之前请命令行输入alexa-auth或dueros-auth申请授权,授权成功后会在/home/pi目录下生成.avs.json文件,这时才能使用交互功能。第四,/home/pi目录下会有 respeaker的例程文件夹,可以根据用的mic不同而使用相应的例程。但是请烧录系统后在respeaker目录下更新下例程,可以在respeaker目录下执行git pull origin master命令来更新。

Q2: #include "portaudio.h" Error when run "sudo pip install pyaudio".
A2: 命令行输入如下命令
  1. sudo apt-get install portaudio19-dev
复制代码

Q3 关于安装snowboy时出现不适合该平台的警告提醒
A3: 目前snowboy只能兼容python2,所以通过在安装python的虚拟环境时,请确保是python2

Q4 有时候 sudo python file.py 时候会出现依赖问题
A4:测试时发现sudo执行时候默认从系统环境执行,而wiki中用到的依赖都是装在~/env 下的,可以通过 sudo ~/env/bin/python file.py来解决

Q5 可以通过3.5毫米音频插孔的播放来听到声音,但是在运行ns_kws_doa_alexa_with_light.py时听不到声音
A5: 我们有3个播放器(mpv,mpg123和gstreamer)可以使用。 mpg123更适合语音识别和唤醒更,它更具响应性; 而AudioPlayer 更适用gstreamer> mpv> mpg123。 Gstreamer支持更多音频格式,并且在raspberry pi上运行良好。 我们还可以使用环境变量PLAYER指定AudioPlayer的播放器。 所以请尝试以下命令启用语音。
  1.   sudo apt install mpg123
  2.   PLAYER=mpg123 python ns_kws_doa_alexa_with_light.py
复制代码

Q6 在运行语音交互时候喊 snowboy 没反应
A6:请运行audacity以确保4个频道良好。 如果有一个没有数据的频道,当我们说snowboy时就没有回复。

ReSpeaker 2-Mics Pi HAT_PCB.pdf (92.1 KB, 下载次数: 17)
ReSpeaker 2-Mics Pi HAT_SCH.pdf (37.38 KB, 下载次数: 18)





分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条