Respeaker mic array v2教學

Respeaker mic array V2(後簡稱array V2)就如上圖所示,是一片圓形的麥克風陣列擴展版。由於以USB通訊的關係,他能接到各種支援USB的裝置上作為聲音類感測器使用。

目前我們測試兩個連接方案──Windows系統和樹莓派,其中比較推薦使用樹莓派進行連接:

樹莓派:

插上之後請輸入以下指令安裝必要的函式庫

sudo apt-get update(可省略)

sudo pip3 install pyusb click

windows:

請至http://zadig.akeo.ie/ 下載安裝用的小程式,開啟後選擇SEEED DFU,以及在Driver上選擇libusb-win32

到這步驟完成,array V2至少已經有麥克風的功能了,各位可以利用一些錄音軟體或者python的錄音函式庫來測試一下狀況:


 

控制LED燈與DOA

相信各位都有注意到,array V2上有一圈LED燈。接上電之後他內建的DOA程式就開始執行(晶片組內),上面的亮藍色燈光便會一直追著聲音的方向。在說明DOA之前,我們先說明如何控制上面的LED燈光,使他能像很多語音助理一樣透過燈號表示各種狀態。

首先我們要先得到相關的函式庫,請至https://github.com/respeaker/pixel_ring/tree/master/pixel_ring中,下載usb_pixel_ring_v2.py這個檔案,以及至https://github.com/respeaker/usb_4_mic_array中,下載tuning.py,並將這兩個檔案放置在你開發python程式的資料夾中。

接著請依照以下程式碼引用函式庫,並定義裝置:


from tuning import Tuning

from usb_pixel_ring_v2 import PixelRing

import usb.core

import usb.util

 

dev = usb.core.find(idVendor=0x2886, idProduct=0x0018)

if dev:

pixel_ring = PixelRing(dev)
Mic_tuning = Tuning(dev)


接著,只要使用以下方法就可以控制LED陣列:

 

pixel_ring.wakeup(角度數值)

就可以像他預設執行的DOA一樣,在特定角度以亮藍燈,其餘角度深藍燈的方式標出角度

 

pixel_ring.think()

pixel_ring.speak()

這邊的兩個函式則是像語音助理的燈號,分別為兩種LED變化模式表達思考跟回答

 

pixel_ring.mono()

可以讓整個陣列變成同色,接收參數為0xRRGGBB

 

pixel_ring.set_color_palette()

這個函式可以調整think、wakeup等雙色顯示的雙色是哪兩色

比方說,pixel_ring.set_color_palette(0xf00000, 0x0000f0)就會將它變成紅+藍

對於DOA而言,前面的參數會是指示方向的顏色

 

pixel_ring.off()

這個函式可以關閉LED陣列。

 

pixel_ring.trace()

開啟DOA模式,注意這個函式實測時他會變更wakeup的角度,不推薦直接使用而是以底下的DOA方法。


以上所有指令在樹莓派下都需要sudo權限,但這樣會產生一些問題──比方說ALSA系統在sudo模式下會無法正常放出聲音這點,作為智慧音箱或智慧機器人的配件來說是個有點致命的問題。

但不代表沒辦法解決:

至於DOA的取得,則是利用Mic_tuning.direction()取得即時的DOA數據,也就是說,利用一個while迴圈包覆pixel_ring.wakeup(Mic_tuning.direction())這行程式碼,就會跟pixel_ring.trace()達成類似的效果。

而錄音的部分,請參考seeed原廠文件,或是參加研習的老師有取得我們的示範程式碼,則可以直接引用record_wave子程式或是Ex_2_1的main即可。

若需要更詳細資料請參考seeed wiki:http://wiki.seeedstudio.com/ReSpeaker_Mic_Array_v2.0/

包含有接入其他語音助理的方法、其他的STT方法等等。

Read More