我是靠谱客的博主 高兴八宝粥,这篇文章主要介绍树莓派语音识别(二)麦克风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)这里可以先不换源,无所谓,我后面都会说,你换了也没事。

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

下面是我的详细安装方法

第一步,换源的必要性。

换源命令:

复制代码
1
sudo nano /etc/apt/sources.list

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

复制代码
1
2
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次的男人)

复制代码
1
sudo nano /etc/apt/sources.list.d/raspi.list

操作同上并替换为:

复制代码
1
2
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 中逐一键入:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
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

复制代码
1
2
3
sudo apt-get install libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev sudo apt-get install python-pyaudio python3-pyaudio pip3 install pyaudio

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

输入命令:

复制代码
1
2
3
cd cd seeed-voicecard arecord -L

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

输入命令

复制代码
1
alsamixer

可以调节话筒音量。

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

安装个能录音的软件:

复制代码
1
2
3
4
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号。

输入以下,查声卡号。

复制代码
1
arecord -l

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

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

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

复制代码
1
aplay -l

 

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

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

复制代码
1
sudo nano /home/pi/.asoundrc

下图为打开后的文件

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

Input改为hw:2,0

Output改成hw:0,0

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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秒话,它会录音。

复制代码
1
arecord -d 3 demo.wav

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

复制代码
1
aplay demo.wav

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

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

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

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

 

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

复制代码
1
2
3
cd mkdir snowboy cd snowboy

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

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

复制代码
1
2
3
4
5
6
7
8
9
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

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

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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中,然后

复制代码
1
2
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. 配置和安装相关依赖

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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起来!

复制代码
1
2
3
cd ~/4mics_hat sudo nano ns_kws_doa_alexa_with_light.py #编辑文件改配置

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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
""" 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”文件,找到如下所示命令:

复制代码
1
kws=KWS(model='snowboy')

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

复制代码
1
2
#kws=KWS(model='snowboy') kws=KWS(model='/home/pi/NBoy/DaBai.pmdl')

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

然后保存,文本。

回到树莓派的命令窗口。

挨个输入以下命令

复制代码
1
2
3
cd ~/home/pi/NBoy source ~/env/bin/activate python3 demo.py DaBai.pmdl

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

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

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

复制代码
1
2
3
4
sudo pip install rpi.gpio // install RPi.GPIO library sudo nano ledGpio.py // copy the following code in button.py
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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: 内置算法的参数(高级玩家以后用得到)

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
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.

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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:欢迎在评论区留言。

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

 


 

 

 

 

 

最后

以上就是高兴八宝粥最近收集整理的关于树莓派语音识别(二)麦克风ReSpeaker 4-Mics Pi HAT 的选择与安装的全部内容,更多相关树莓派语音识别(二)麦克风ReSpeaker内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(374)

评论列表共有 0 条评论

立即
投稿
返回
顶部