树莓派语音识别(二)麦克风ReSpeaker 4-Mics Pi HAT 的选择与安装

为啥选它:

那要先知道什么是麦克风阵列(Microphone array),学术上有个概念是“传声器阵列”,主要由一定数目的声学传感器组成,用来对声场的空间特性进行采样并处理的系统。

通俗的讲,就是麦克风阵列是由多个单麦克风按一定顺序排列的。你可以理解为一堆麦克风。我们常见的话筒(比如苹果手机话筒就是单麦克风的)。麦克风阵列一般来说有线形、环形和球形的,严谨的应该说成一字、十字、平面、螺旋、球形及无规则阵列等。至于麦克风阵列的阵元数量,也就是麦克风数量,可以从2个到上千个不等。它们通过特定的排列(阵法),可以对声音接收有更好的效果。

语音交互应用最为普遍的就是以Siri为代表的智能手机,这个场景一般都是采用单麦克风系统。单麦克风系统可以在低噪声、无混响、距离声源很近的情况下获得符合语音识别需求的声音信号。但是,若声源距离麦克风距离较远,并且真实环境存在大量的噪声、多径反射和混响,导致拾取信号的质量下降,这会严重影响语音识别率。而且,单麦克风接收的信号,是由多个声源和环境噪声叠加的,很难实现各个声源的分离。

麦克风阵列由一组按一定几何结构(常用线形、环形)摆放的麦克风组成,对采集的不同空间方向的声音信号进行空时处理,实现噪声抑制、混响去除、人声干扰抑制、声源测向、声源跟踪、阵列增益等功能,进而提高语音信号处理质量,以提高真实环境下的语音识别率。

亚马逊Echo一样直接选用4麦以上的麦克风阵列。机器人一般4个麦克风就够了,音箱建议还是选用6个以上麦克风,至于汽车领域,最好是选用其他结构形式的麦克风阵列,比如分布式阵列。

麦克风越多成本越高,所以我们选择4阵列的。

基于Raspberry Pi的ReSpeaker 4-Mic阵列是一款适用于AI和语音应用的Raspberry Pi的四通道麦克风扩展板。 这意味着可以借助它构建一个集成Amazon Alexa语音服务,Google助手等,功能更强大,更灵活的语音产品。

区别于 ReSpeaker 2-Mics Pi HAT, 该板是基于AC108开发的,这是一款高度集成四通道ADC,具有用于高清晰度语音捕获,I2S / TDM输出,拾取3米半径的声音的语音设备。 此外,这款4-Mics版本提供了超酷LED环,其中包含12个APA102可编程LED。 就像Amazon Echo或 Google assist一样, 使用4个麦克风和LED环,Raspberry Pi具有VAD(语音活动检测),DOA(到达方向),KWS(关键字搜索),并通过LED环显示方向灯功能。

硬件软件准备:

麦克风的淘宝链接(https://item.taobao.com/item.htm?spm=a1z10.1-c.w13838425-11172345252.1.542035bczDBegW&id=557884254210)我买的这家的。

我的树莓派是Pi 4B,这个麦克风阵列兼容(Raspberry Pi Zero和Zero W,Raspberry Pi B +,Raspberry Pi 2 B和Raspberry Pi 3 B,Raspberry Pi 4 B,Raspberry Pi 3 B +)所以说用惯了3B的小伙伴也可以跟我一起做。

树莓派系统用的最新的系统:

树莓派系统安装步骤请参考(https://blog.csdn.net/Smile_h_ahaha/article/details/84997205

安装引文与前言:

我会把最好的安装方法用手把手小白级别记录在下面。你要跟我一步一步来,肯定没毛病。

我把安装中遇到的坑还有解决方法记录在第七步中了。纪念一下我花了N天的安装心路历程。感兴趣的可以看一下。

现在是2020.09.24日,不排除在这个时间之后树莓派的源们又不支持的可能性,因为技术在刷新,兼容不并行。

我树莓派的SD卡状态为刚重装了系统(2020.02.13版本),并按照以下链接的方法设置的树莓派。

树莓派重装系统(https://blog.csdn.net/Smile_h_ahaha/article/details/84997205

树莓派Putty与远程VNC(https://blog.csdn.net/Smile_h_ahaha/article/details/84997214)这里可以先不换源,无所谓,我后面都会说,你换了也没事。

如果在未来的时候安装有问题,欢迎在评论区给我留言。

下面是我的详细安装方法

第一步,换源的必要性。

换源命令:

sudo nano /etc/apt/sources.list

用#注释第一句。然后在最下面复制下面句子:(换成清华源)

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

继续换源:(这一步别忘啊。。。忘了的话,装pyaudio的时候,会出问题,别问我是怎么知道了,重装系统30次的男人)

sudo nano /etc/apt/sources.list.d/raspi.list

操作同上并替换为:

deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

注意清华源里面的buster对应的是debian10, 在2019.6月的版本以后都是debian10了。以前的版本是debian9(对应的是stretch),你的系统若是以前的版本,注意这个后缀别写错了。建议你下个新版本用,这个没什么兼容问题。兼容问题主要是麦克风支持python2,不支持3的问题。

换源直接决定了安装Seeed话筒驱动的成功与否,你用树莓派自带内核的话(此时不换清华源或阿里源),有很大概率能成功的安装话筒驱动(树莓派版本2020-02-13-raspbian-buster-full.img(比它还新的版本更没有问题了))。但是在安装成功后,你不换清华源的话,就会安装失败“Voice engine”。所以换源是必要的。

在引文部分的攻略中(包括官网)都有个错误:声卡安装没有强调compat kernel。因为2019.06.22版本以后树莓派内核移除了kernel(内核认为对于全局来说it is not necessary 于是移除了,WTF???)。

下图为树莓派安装失败的提示:它让你在“sudo ./install.sh”命令后加入 “ --compat-kernel”

所以说直接按照下图所示代码,在cd /home/pi 中逐一键入:

sudo apt-get update                                            #源更新
sudo apt-get upgrade                                           #已安装软件更新
git clone https://github.com/respeaker/seeed-voicecard.git     #下载声卡驱动包
cd seeed-voicecard                                             #新建声卡驱动文件夹
sudo ./install.sh --compat-kernel                              #安装声卡驱动
reboot                                                         #重启

然后,成功了。重启

安装pyaudio

sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
sudo apt-get install python-pyaudio python3-pyaudio
pip3 install pyaudio

第二步,检查声卡是否安装成功。

输入命令:

cd
cd seeed-voicecard 
arecord -L

然后出来下图一堆,说明话筒可以用了。

输入命令

alsamixer

可以调节话筒音量。

用F6选择seeed-4mic的声卡设备,调节音量。

安装个能录音的软件:

sudo apt update
sudo apt install audacity
audacity                      // 运行 audacity

打开软件后,把mic设置为4,这样你就有四个声道一起录音了。

生成.wav文件,保存在树莓派当地。可以用它作为你的应答词。

输入sudo raspi-config打开控制面板,

把5.Interfacing Options中的SPI 和 SSH 和I2C 都使能Enable

把7.Advanced Options 中的A4 Audio 选择你自己喜欢的音响输出端口。第一个是HDMI音频输出,第二个是3.5mm直径的耳机孔。

如果你想用HDMI连接的显示屏发声就选第一个,如果是用耳机线连接的外置音响,就选第二个Head...(3.5mm)。

以上问题不大,你也可以手动配置音频的声卡card号。

输入以下,查声卡号。

arecord -l

声卡是输入(Input)就是你的录音话筒。只要你用的是4-mic的那个Seeed话筒,那我们就是一样的。把这个号记住。

这个号,在程序中,表示为“hw:2,0”。当然如果你用的别的USB麦克风,你不用装Seeed驱动,直接也是记住声卡号就行了。普通的单声道麦克风不如四阵列清晰。

输入以下,查音响号(Output):

aplay -l

 

这个号,在程序中,表示为“hw:0,0”。 

输入以下代码,用nano重新手动设置“默认声卡程序”中的变量:

sudo nano /home/pi/.asoundrc

下图为打开后的文件

按照下图所示改你自己的代码。下图为我的改动。你对照上下文改。我的是:

Input改为hw:2,0

Output改成hw:0,0

pcm.output 那的 card 0   输出音频号为card 0

ct1.default那是 card 0 默认优先选择HDMI显示屏作为输出音频

pcm.!default {
  type asym
  playback.pcm {
    type plug
    slave.pcm "hw:0,0"
  }
  capture.pcm {
    type plug
    slave.pcm "hw:2,0"
  }
}

pcm.output {
  type hw
  card 0
}

ctl.!default {
  type hw
  card 0
}

然后Ctrl+X 然后Y然后Enter退出。

输入以下代码,在home/pi下创建一个叫demo.wav的录音文件,你说3秒话,它会录音。

arecord -d 3 demo.wav

输入以下代码,播放刚才录的音:

aplay demo.wav

然后你就听到很清晰的声音了。你可以用它录回答的音频。

以上是安装Seeed驱动的教程,就BB到这了。下面将介绍Snowboy关键词识别的项目安装步骤。

(已规避所有坑,本博文更新时间2020年9月24日02:09:00am)
如果你的话筒是4-mics Pi HAT的,请直接跳到第四步跟着做,如果你的话筒是普通的,那就跟着第三步做。第三步与第四步安装流程不能重叠。第三步是我试了好几次,百分百兼容级别的安装教程。(因为我把我的备份都给你们了,肯定能成功)第四步比第三步多了点4-mics Pi HAT他们家的独家例程。区别不大。第5步包含了在线语音识别的安装与激活,第五步是兼容第四步的。

第三步,安装Snowboy引擎(仅能离线关键字语音识别)

输入命令,新建个叫snowboy的文件夹,并打开:

cd
mkdir snowboy
cd snowboy

在上图所示的路径下,把以下代码一口气的复制粘贴到树莓派终端中(我在每行的命令后加了&&,它可以让每行命令挨个执行)

以下代码是让你安装 pyaudio, numpy and snowboy的,还要安装个virtual python environment.(Python的虚拟环境)。

sudo apt install python-pyaudio python-numpy python-virtualenv &&
sudo apt-get install swig python-dev libatlas-base-dev build-essential make &&
git clone --depth 1 https://github.com/Kitt-AI/snowboy.git &&
cd snowboy &&
virtualenv --system-site-packages env &&
source env/bin/activate &&
python setup.py build &&
python setup.py bdist_wheel &&
pip install dist/snowboy*.whl 

如下图所示,粘贴后点击回车安装。

我解释一下每行代码啥意思吧,下面的代码不要安装了,你看看就好:

sudo apt install python-pyaudio python-numpy python-virtualenv 
#安装python支持的pyaudio,numpy,virtual env虚拟机

sudo apt-get install swig python-dev libatlas-base-dev build-essential make 
#安装python库文件到SWIG文件夹中,这是github上的更新与补充

git clone --depth 1 https://github.com/Kitt-AI/snowboy.git 
#下载Snowboy引擎包

cd snowboy 
#打开Snowboy文件夹

virtualenv --system-site-packages env 
#安装python虚拟机

source env/bin/activate 
#激活虚拟机,这是你以后,运行代码前必要的一步。
#输入命令deactivate可以退出虚拟机

python setup.py build 
#编译python库

python setup.py bdist_wheel 
#编译Snowboy的python库

pip install dist/snowboy*.whl 
#下载安装Snowboy的KWS关键词库

当你看到下图,说明Snowboy工具包安装成功了

其实装到这里就以及可以使用Snowboy的关键字语音识别了。以上安装应该是肯定没有问题的。这个时候大家可以直接把我写好的NBoy的文件夹拷贝到home/pi中,然后

cd NBoy
python3 demo.py 你的关键字.pmdl

你的关键字直接保存进Nboy中即可。在demo中添加你自己的功能,比如控制GPIO开个灯之类的。Nboy文件下载链接

https://download.csdn.net/download/Smile_h_ahaha/12889142

那,你现在应该是说出关键词之后听到Ding的声音了。成功的话点个赞再走吧O(∩_∩)O哈哈~

第四步,奥利给4-MICS家专属例程安装(上接第二步)实现在线语音识别

参考这个链接https://wiki.seeedstudio.com/cn/ReSpeaker_Mic_Array_v2.0/#free-avs做了一些改动。如果你的麦克风是别的型号,以下操作会有不同,要注意card值设置,采样率设置.你可以参考以下步骤改你自己的配置,去实现在线语音识别

step 1. 配置和安装相关依赖

git clone https://github.com/respeaker/4mics_hat.git
cd ~/4mics_hat
sudo apt install libatlas-base-dev     # 安装 snowboy dependencies
sudo apt install python-pyaudio        # 安装pyaudio音频处理包
pip install ./snowboy*.whl             # 安装 snowboy for KWS
pip install ./webrtc*.whl              # 安装 webrtc for DoA
cd ~/
git clone https://github.com/voice-engine/voice-engine #write by seeed
cd voice-engine/
sudo python setup.py bdist_wheel
pip install dist/*.whl
cd ~/
git clone https://github.com/respeaker/avs
cd avs                                 # install Requirements
sudo python setup.py install
pip install avs==0.5.3
sudo apt install libgstreamer1.0-0
sudo apt install gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly 
sudo apt install gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tool
sudo apt install gstreamer1.0-plugins-good
sudo apt install python-gi gir1.2-gstreamer-1.0
pip install tornado==5.1.1
sudo apt install mpg123

step 2. 取得授权

在终端运行 alexa-auth ,然后登陆获取alexa的授权, 或者运行 dueros-auth 获取百度的授权。 授权的文件保存在/home/pi/你的安装路径/avs/.avs.json。

 如果我们在 alexa-auth 和 dueros-auth之间切换, 请先删除 /home/pi/你的安装路径/.avs.json 。 这个是隐藏文件,请用 ls -la 显示文件。

step 3. 让我们High起来!

cd ~/4mics_hat
sudo nano ns_kws_doa_alexa_with_light.py        #编辑文件改配置

按照下面的信息更新下面代码的设置:(如果你的麦克风是4-mic HAT那就不用改以下配置,如果不是,我把要改的地方标出来了)

"""
Hands-free Voice Assistant with Snowboy and Alexa Voice Service.

Requirement:
    sudo apt-get install python-numpy
    pip install webrtc-audio-processing
    pip install spidev
"""


import time
import logging
from voice_engine.source import Source
from voice_engine.channel_picker import ChannelPicker
from voice_engine.kws import KWS
from voice_engine.ns import NS
from voice_engine.doa_respeaker_4mic_array import DOA
from avs.alexa import Alexa


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

    src = Source(rate=16000, channels=1, device_name='plughw:1,0') #你是几声道的就把channels的值改成几    
    ch1 = ChannelPicker(channels=1, pick=1)
    ns = NS(rate=16000, channels=1)      #rate是采样率,这个值去查你话筒的芯片手册,给他匹配最合适的采样频率
    kws = KWS(model='snowboy')           #把这里的snowboy替换成你的关键词路径
                                          #例如/home/pi/NBoy/DaBai.pmdl
    doa = DOA(rate=16000)
    alexa = Alexa()


    def on_detected(keyword):
        direction = doa.get_direction()
        logging.info('detected {} at direction {}'.format(keyword, direction))
        alexa.listen()

    kws.on_detected = on_detected

    src.link(ch1)
    ch1.link(ns)
    ns.link(kws)
    kws.link(alexa)

    src.link(doa)

    src.recursive_start()

    while True:
        try:
            time.sleep(1)
        except KeyboardInterrupt:
            break

    src.recursive_stop()


if __name__ == '__main__':
    main()

假如需要使用mic-array作为音频输出口的话则如下图进行设置

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

第五步,怎样用Snowboy自定义唤醒词?

这步从2021.03.18开始用不了Snowboy网站了,他们家关闭服务器了,你可以去Github上下载别人训练的关键词,拿来用:https://github.com/Kitt-AI/snowboy 当然也可以直接下载我之前训练的:https://download.csdn.net/download/Smile_h_ahaha/16662655 然后再继续阅读第五步中的设置方法

去这个Snowboy官网(https://snowboy.kitt.ai/dashboard)点击创建新的关键词

然后点击Save and Download, 下载你的自定义声音文件“DaBai.pmdl”.

然后打开树莓派,把这个文件保存自你想保存的路径下。我的是“/home/pi/NBoy”。

然后找到“demo.py”文件。这个文件不同的人安装路径可能不同,但是文件名肯定没错,毕竟是Snowboy大佬写的。我的安装路径在“/home/pi/NBoy”下。

用文本编辑器/sudo nano打开“demo.py”文件,找到如下所示命令:

kws=KWS(model='snowboy')

把它注释掉,并用如下代码替换(实际上就是把唤醒词的调取路径换了)

#kws=KWS(model='snowboy')
kws=KWS(model='/home/pi/NBoy/DaBai.pmdl')

如果你的唤醒词文件名叫别的什么,你也可以改。库路径随便放哪,你让kws调用的时候找的到就行。

然后保存,文本。

回到树莓派的命令窗口。

挨个输入以下命令

cd ~/home/pi/NBoy
source ~/env/bin/activate
python3 demo.py DaBai.pmdl

等见到命令窗口显示“204”,“On ready”的时候,就可以对麦克风说"大白(●—●)"了。你也成了吧,点个赞吧~

第六步,如何更改代码添加GPIO输出(LED灯定义)

用GPIO12和13举例. 我们可以调用python和RPi.GPIO来读取状态。

sudo pip install rpi.gpio    // install RPi.GPIO library

sudo nano ledGpio.py               // copy the following code in button.py
import RPi.GPIO as GPIO
import time

BUTTON = 12
LED = 13
 
GPIO.setmode(GPIO.BCM)
GPIO.setup(BUTTON, GPIO.IN)
GPIO.setup(LED, GPIO.OUT)
 
while True:
    state = GPIO.input(BUTTON)
    if state:
        print("on")
        GPIO.output(LED, GPIO.HIGH)
    else:
        print("off")
        GPIO.output(LED, GPIO.LOW)
    time.sleep(1)

第七步,安装中遇到的问题,归纳总结。

Q1: 内置算法的参数(高级玩家以后用得到)

pi@raspberrypi:~/usb_4_mic_array $ python tuning.py -p
name            type    max min r/w info
-------------------------------
AECFREEZEONOFF      int 1   0   rw  Adaptive Echo Canceler updates inhibit.
                                                            0 = Adaptation enabled
                                                            1 = Freeze adaptation, filter only
AECNORM             float   16  0.25    rw  Limit on norm of AEC filter coefficients
AECPATHCHANGE       int 1   0   ro  AEC Path Change Detection.
                                                            0 = false (no path change detected)
                                                            1 = true (path change detected)
AECSILENCELEVEL     float   1   1e-09   rw  Threshold for signal detection in AEC [-inf .. 0] dBov (Default: -80dBov = 10log10(1x10-8))
AECSILENCEMODE      int 1   0   ro  AEC far-end silence detection status.
                                                            0 = false (signal detected)
                                                            1 = true (silence detected)
AGCDESIREDLEVEL     float   0.99    1e-08   rw  Target power level of the output signal.
                                                            [−inf .. 0] dBov (default: −23dBov = 10log10(0.005))
AGCGAIN             float   1000    1   rw  Current AGC gain factor.
                                                            [0 .. 60] dB (default: 0.0dB = 20log10(1.0))
AGCMAXGAIN          float   1000    1   rw  Maximum AGC gain factor.
                                                            [0 .. 60] dB (default 30dB = 20log10(31.6))
AGCONOFF            int 1   0   rw  Automatic Gain Control.
                                                            0 = OFF
                                                            1 = ON
AGCTIME             float   1   0.1 rw  Ramps-up / down time-constant in seconds.
CNIONOFF            int 1   0   rw  Comfort Noise Insertion.
                                                            0 = OFF
                                                            1 = ON
DOAANGLE            int 359 0   ro  DOA angle. Current value. Orientation depends on build configuration.
ECHOONOFF           int 1   0   rw  Echo suppression.
                                                            0 = OFF
                                                            1 = ON
FREEZEONOFF         int 1   0   rw  Adaptive beamformer updates.
                                                            0 = Adaptation enabled
                                                            1 = Freeze adaptation, filter only
FSBPATHCHANGE       int 1   0   ro  FSB Path Change Detection.
                                                            0 = false (no path change detected)
                                                            1 = true (path change detected)
FSBUPDATED          int 1   0   ro  FSB Update Decision.
                                                            0 = false (FSB was not updated)
                                                            1 = true (FSB was updated)
GAMMAVAD_SR         float   1000    0   rw  Set the threshold for voice activity detection.
                                                            [−inf .. 60] dB (default: 3.5dB 20log10(1.5))
GAMMA_E             float   3   0   rw  Over-subtraction factor of echo (direct and early components). min .. max attenuation
GAMMA_ENL           float   5   0   rw  Over-subtraction factor of non-linear echo. min .. max attenuation
GAMMA_ETAIL         float   3   0   rw  Over-subtraction factor of echo (tail components). min .. max attenuation
GAMMA_NN            float   3   0   rw  Over-subtraction factor of non- stationary noise. min .. max attenuation
GAMMA_NN_SR         float   3   0   rw  Over-subtraction factor of non-stationary noise for ASR.
                                                            [0.0 .. 3.0] (default: 1.1)
GAMMA_NS            float   3   0   rw  Over-subtraction factor of stationary noise. min .. max attenuation
GAMMA_NS_SR         float   3   0   rw  Over-subtraction factor of stationary noise for ASR.
                                                            [0.0 .. 3.0] (default: 1.0)
HPFONOFF            int 3   0   rw  High-pass Filter on microphone signals.
                                                            0 = OFF
                                                            1 = ON - 70 Hz cut-off
                                                            2 = ON - 125 Hz cut-off
                                                            3 = ON - 180 Hz cut-off
MIN_NN              float   1   0   rw  Gain-floor for non-stationary noise suppression.
                                                            [−inf .. 0] dB (default: −10dB = 20log10(0.3))
MIN_NN_SR           float   1   0   rw  Gain-floor for non-stationary noise suppression for ASR.
                                                            [−inf .. 0] dB (default: −10dB = 20log10(0.3))
MIN_NS              float   1   0   rw  Gain-floor for stationary noise suppression.
                                                            [−inf .. 0] dB (default: −16dB = 20log10(0.15))
MIN_NS_SR           float   1   0   rw  Gain-floor for stationary noise suppression for ASR.
                                                            [−inf .. 0] dB (default: −16dB = 20log10(0.15))
NLAEC_MODE          int 2   0   rw  Non-Linear AEC training mode.
                                                            0 = OFF
                                                            1 = ON - phase 1
                                                            2 = ON - phase 2
NLATTENONOFF        int 1   0   rw  Non-Linear echo attenuation.
                                                            0 = OFF
                                                            1 = ON
NONSTATNOISEONOFF   int 1   0   rw  Non-stationary noise suppression.
                                                            0 = OFF
                                                            1 = ON
NONSTATNOISEONOFF_SR    int 1   0   rw  Non-stationary noise suppression for ASR.
                                                            0 = OFF
                                                            1 = ON
RT60                float   0.9 0.25    ro  Current RT60 estimate in seconds
RT60ONOFF           int 1   0   rw  RT60 Estimation for AES. 0 = OFF 1 = ON
SPEECHDETECTED      int 1   0   ro  Speech detection status.
                                                            0 = false (no speech detected)
                                                            1 = true (speech detected)
STATNOISEONOFF      int 1   0   rw  Stationary noise suppression.
                                                            0 = OFF
                                                            1 = ON
STATNOISEONOFF_SR   int 1   0   rw  Stationary noise suppression for ASR.
                                                            0 = OFF
                                                            1 = ON
TRANSIENTONOFF      int 1   0   rw  Transient echo suppression.
                                                            0 = OFF
                                                            1 = ON
VOICEACTIVITY       int 1   0   ro  VAD voice activity status.
                                                            0 = false (no voice activity)
                                                            1 = true (voice activity)

Q2: ImportError: No module named usb.core

 如下图所示 路径位置 输入命令 sudo pip install pyusb 安装 pyusb.

pi@raspberrypi:~/usb_4_mic_array $ sudo python tuning.py DOAANGLE
Traceback (most recent call last):
  File "tuning.py", line 5, in <module>
    import usb.core
ImportError: No module named usb.core
pi@raspberrypi:~/usb_4_mic_array $ sudo pip install pyusb
Collecting pyusb
  Downloading pyusb-1.0.2.tar.gz (54kB)
    100% |████████████████████████████████| 61kB 101kB/s
Building wheels for collected packages: pyusb
  Running setup.py bdist_wheel for pyusb ... done
  Stored in directory: /root/.cache/pip/wheels/8b/7f/fe/baf08bc0dac02ba17f3c9120f5dd1cf74aec4c54463bc85cf9
Successfully built pyusb
Installing collected packages: pyusb
Successfully installed pyusb-1.0.2
pi@raspberrypi:~/usb_4_mic_array $ sudo python tuning.py DOAANGLE
DOAANGLE: 180

Q3: 有没有树莓派的Alexa的样例? Alexa是在线语音识别系统

A3: 有,(https://github.com/alexa/avs-device-sdk/wiki/Raspberry-Pi-Quick-Start-Guide-with-Script

Q4: 有在ROS系统上面运行Mic array v2.0 的历程吗

A4: 有,是的,感谢Yuki分享了将ReSpeaker Mic Array v2与ROS(机器人操作系统)中间件集成的软件包。(https://github.com/furushchev/respeaker_ros

Q5: 能直接通过3.5mm耳机孔听到采样的声音吗?

A5: 不行的。3.5mm耳机孔音源来自于上位机,但是如果用树莓派的话可以通过执行

arecord -D plughw:1,0 -f cd |aplay -D plughw:1,0 -f cd 达到目的。

Q6:运行python3 demo.py resources/xxx路径.umdl的时候出错:

from. import snowboydetect Error.

A6: 把“from. import”改为“import”。

Q7:在我打开Snowboy中的example中的C文件下的例程使,提示打不开。

A7:你忘记编译了。要去cd /python/snowboy/.../Swig/C 目录下 输入 sudo make 先编译,然后就可以运行了。

然后回到cd /.../example/C 下输入 gcc demo.c -o demo    再输入 sudo ./demo运行。C语言和Python操作不同,有问题再搜搜别的地方吧。

Q8:运行例程demo.py的时候,找不到Voice-engine源。

A8:你的Snowboy的python库安装失败,或者安错包了。Snowboy仅支持python2,不支持python3

python2对应pip

python3对应pip3

网上有些菜鸡们瞎唧唧不负责的教你,导致本应该安装python2的库,安装成了python3(pip3开头的命令都是错的)。那Snowboy的声音引擎(voice engine)肯定识别不了啊。

如下图所示的红框圈起来的安装命令都是错的:

下图所示的样子才是正确的:(源自我上文第四步中内容)你看有python3(pip3)吗?

哎,天下文章一大抄啊,抄来抄去都是米,预知此事要躬行 。

Q9:安装python setup.py install命令的时候没有权限(access)怎么办。

A9:用sudo前缀获得7777权限。sudo python setup.py install

Q10:HDMI连接电脑显示屏,再录音播放的时候听不到声音怎么办?

A10:如果你们遇到HDMI连接电脑显示屏,完事树莓派再外接音箱(想靠它发声),然后录音没问题,播放的时候没声音这样的情况。大多数是声卡设置的时候没设置好。被系统默认成音频走HDMI,即电脑显示屏发声了。这时候要么把外接的音箱接到显示屏上去,要么就认真阅读理解我的“第二步”,把CARD值改成树莓派音频输出。然后就可以了。

Q11: 我未来,还有问题怎么办?

A11:欢迎在评论区留言。

看完不点赞,学分少一半~


 

猜你喜欢

转载自blog.csdn.net/Smile_h_ahaha/article/details/106369731