查看: 5072|回复: 0

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

[复制链接]
  • TA的每日心情

    2020-3-6 09:52
  • 签到天数: 13 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-9-25 15:43:19 | 显示全部楼层 |阅读模式
    分享到:
    1.jpg
    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音频输出接口

    硬件概述

    2.png

    • 按钮:连接到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 SPEAKER 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.

    3.jpg 4.jpg 5.jpg

    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
    复制代码
    6.png

    step 2. 调节音量(可跳过)
    alsamixer 是用于配置声音设置和调整音量,高级Linux声音体系结构(ALSA)的图形混音器程序。
    1. pi@raspberrypi:~ $ alsamixer
    复制代码
    7.png
    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, 然后说您的询问. 语音助手就会响应您的问题。如果语音助手没有响应, 请按照 疑难解答说明.
    8.jpg

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

    3. 控制APA102 LED的示例
    每个板载APA102 LED都有一个额外的驱动芯片,驱动芯片设置LED的颜色,然后保持该颜色,直到接收到新的命令。
    9.gif
    请在执行之前打开SPI,具体步骤如下:
    9.gif
    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
    复制代码
    • 程序运行的结果如下图所示:
    10.jpg

    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
    11.png
    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进行演示。
    1.jpg
    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)
    回复

    使用道具 举报

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

    本版积分规则

    关闭

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

    手机版|小黑屋|与非网

    GMT+8, 2024-4-25 10:04 , Processed in 0.121886 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.