第三章 研究方法
第三節 互動裝置設計
本研究藉由麥克風陣列輸入的聲音訊號進行即時偵測使用者舞步的位置與 時間,進而改變音樂混音輸出,實現聲音元素與聲音元素的音訊互動裝置,因此 本研究的研究設計分為即時舞步偵測、麥克風陣列的定位以及音樂混音輸出三部 分。舞步偵測與麥克風陣列定位的部分,本研究是使用微軟 Visual Studio 中的 C#程式語言來撰寫。為了以麥克風做為輸入端的硬體裝置進而達到捕捉音訊,
選擇加入了 DirectX 函式庫(DirectX Library)中負責音訊處理的 DirectSound。
圖 3-2:互動裝置設計圖
一、 即時舞步偵測
本研究輸入端先是對於使用者的舞步聲音進行偵測,期望在舞步偵測的過程
37
38
2. 舞步偵測
使用者在地板上踏步,經過麥克風收音之後,我們可以發現舞步的聲音與音 樂中節拍的聲音特徵相似。而一般對於 PCM 格式的聲音訊號作節拍偵測的研究,
方法大致可以分成兩個步驟。首先,第一步要破壞音樂本身的資訊(decimation),
讓聲音訊號簡單化。使用的方法有雙聲道壓縮成單聲道的降混(downmixing)、以 及降低取樣頻率的降低取樣頻率(downsampling)等等。第二步才會使用一連串的 濾波器或演算法,例如低通濾波器、與傅立葉轉換等等,並依照不同的目的選擇 適合的方法。本研究目的在於即時地偵測出舞步的位置。由於在輸入端麥克風捕 捉音訊的格式在設定上已經省略了降混以及降低取樣頻率的動作,所以在處理上 減少了許多的工序。因此問題簡化成如何判定舞步的演算法以及如何即時處理聲 音訊號。
使用 DirectSound 所捕捉出來的聲音訊號是一連串的一維矩陣。它儲存於緩 衝區(buffer),隨著錄音時間的長短擴增矩陣的大小。矩陣內的元素也就是上述的 取樣點,選擇 byte(8 bit)的資料型態,把這一連串的一維矩陣依照順序畫出來得 到波形圖(圖 3-3)。
圖 3-3:原始波形圖
0 255
39
圖 3-3 是麥克風捕捉到簡單的踏步聲的聲音訊號,而我們主要的目的則是要 判斷節拍點的出現與否。聲音訊號的強弱可以從一維矩陣中的資料來判別,如圖 3-3 人眼可以很輕易的辨別節拍點的位置,但是由於資料量的龐大以及資料分佈 複雜度的影響,必頇要經過一個簡化的方程式來解決上述兩項問題。我們利用一 維矩陣內每個元素之間的元素差,取絕對值並記錄於另一個一維矩陣內並依照順 序繪製出波形圖(圖 3-4)。元素差的主要用意是:
I. 消除不必要的雜訊干擾
一般雜訊會出現在收音環境以及麥克風本身,經過矩陣中元素之間的相 差可以把持續出現的雜訊消除掉。
II. 保留節拍點出現的瞬間
與一般人類說話的聲音不同,使用者舞步的聲音為瞬間提高的音量。因 此利用元素之間的相減可以保留節拍出現的瞬間並且把人聲的幅度降低。
III. 本身不帶有聲音訊號只有時間資訊
由於聲音訊號經過元素差的計算,計算過後的結果是被破壞的聲音訊號。
因此在元素差之後的矩陣並不保留任何聲音訊號,只能作為時間上的表示。
圖 3-4:元素差計算後的波形圖
經過元素差計算後的訊號內容所代表節拍點出現位置,對應原始聲音訊號內 容取得時間資訊。由於人類舞步聲的響度、音色與音量皆不同,對於判別節拍點
255
0
40
出現與否會造成一定的影響。所以我們針對人類正常舞步發出的聲音訂定出一個 門檻值(threshold),高於這門檻值的訊號則紀錄時間資訊,低於則不予紀錄(圖 3-5)。
圖 3-5:濾波後的波形圖
二、 麥克風陣列定位
本研究將使用麥克風陣列作為互動裝置的主體,並利用麥克風陣列於音源定 位的功能,實現於互動裝置內定位使用者的位置。因此本小節先從麥克風的選擇 開始,接著對於麥克風陣列進行配置,最後解釋本研究所使用的聲音定位方法。
1. 麥克風的選擇
麥克風在本研究中是實現互動的主要裝置,在麥克風種類的選擇上是使用最 常見的動圈式麥克風。而另一個需要考量的是麥克風的收音距離以及範圍,即是 麥克風指向性的選擇。指向性是描述麥克風對於來自不同角度聲音的敏感度,而 麥克風依照指向性的分類可以分為全指向、心型指向、超心型指向、槍型指向以
0 255
threshold
41
及雙指向這五種。
圖 3-6:麥克風指向性示意圖
如圖 3-6 所示,虛線圓形上方為麥克風的前方,下方為代表麥克風後方。以 本研究的性質上來考量,各支麥克風收音的主要範圍為麥克風正前方左右 90 度 角,因此心型指向麥克風的收音範圍為最適合本研究所使用的麥克風類型。於表 3-1 中,條列出本裝置所選擇之麥克風的規格。
表 3-2:本裝置單支麥克風規格 麥克風規格
廠牌 Kinyo
型號 AY-0128
型式 動圈式
指向特性 心型
頻率響應 50~14KHz 感度 -53 ± 3db
接頭 USB 插頭
額定電壓 DC 5V
全指向性 心型指向性 超心型指向性 槍型指向性 雙指向
42
43
44
能完美套用於位置的踏步聲輸入,但可以確定的是在 RSSI 中可以觀察出訊號強 度與距離之間主要是呈現帄方反比的關係,我們便可以使用比例的關係套用至三 角定位中。首先我們將振幅開根號以符合帄方的關係,再將所有訊號強度進行正 規化取各支麥克風的強度比例,再將其依比例配置各自的圓半徑。如圖 3-11 所 示,麥克風陣列為 120(cm)X120(cm),之間各間隔的間距為 30 公分,我們假設 單支麥克風佔四支麥克風收音訊號強度比例為 100%時,圓半徑為 1 公分;訊號 強度的比例為 0%時,圓半徑為 120 公分,以此類推。
100%,圓半徑 1 公分 0%,圓半徑 120 公分
圖 3-9:訊號比例強度與距離關係圖
三角定位利用幾何的方法,搭配各接收點所接收到的訊號強度,依照 RSSI 對照出的距離作為半徑,而目標點就是這些半徑畫成的圓的交集。在本研究中,
我們利用 RSSI 呈現線性的關係,用比例的方式解決未知的輸入訊號進而求得音 源位置。
圖 3-10:三角定位運用於麥克風陣列示意圖
45
三角定位中,在沒有障礙物的條件下,基本上使用三個接收器所接收的訊號 搭配 RSSI 訊號強度與距離關係就可以完成準確的定位。而本研究的訊號接收器 就是四支麥克風,理論上來說使用三支麥克風的數據就可以達到定位的效果,但 由於使用者在操作本裝置時,進行舞步之外的另一隻腳可能構成障礙物這一項對 三角定位不利的因素。因此本研究並不會因為三角定位的理論而把麥克風的數量 減少為三個,而是僅使用其中三支麥克風所接收的數據來定位。使用者在操作裝 置時,我們並沒有限制使用者的另一隻腳放置在哪裡,有可能是在裝置內、裝置 外或是沒有在地上,如果再裝置外或是沒有在地上,則不會造成聲音傳遞的影響,
但如果是在裝置內,會影響其中一支麥克風的收音。因此,我們可以將各個麥克 風所收到的數據排除掉數據最小的;如果使用者另一隻腳在裝置外或不在地上,
並不會影響其中一支麥克風的收音,排除收音數據最小的麥克風基於三角定位的 理論是不會影響定位的效果,如果使用者另一隻腳構成障礙物的影響,受到障礙 物影響的麥克風所收到的訊號理論上會是最小的,所以將他排除掉並不會影響到 最後的定位結果。
圖 3-11:最小訊號排除示意圖
46
三、 音樂混音輸出
本研究所完成的聲音互動裝置,是以四支麥克風所組成的麥克風陣列作為輸 入端,處理端是運用節拍偵測與三角定位的方法來實作,輸出端是以 MIDI 音樂 作為音樂的混音輸出。在 MIDI 音樂的製作上,我們使用 Acid Pro 7.0 來製作輸 出所需的 MIDI 音樂,並選擇了可用於 C#的 Sanford Multimedia 的 MIDI Toolkit 做為 MIDI 音樂的開發套件。
音樂主要可以分為節奏(rhythm),旋律(Melody),和弦和聲(harmony)[44][45],
我們便依照這樣的結構來製作本互動裝置的音樂混音輸出。使用者在操作裝置之 計算分析,便可得到踏步的時間資訊,因此就可以得到節拍速度(BPM,Beats Per Minute)資訊,進一步改變 MIDI 的音樂撥放速度回饋給使用者。使用者會依照音 樂輸出的節奏速度改變自己舞步的速度,進而達到音樂與使用者之間穩定的速
47
節奏與節奏之間的混音。以確切的裝置位置來說明,即 2 號和 3 號是由 1 號(A 節奏)以及 4 號(B 節奏)進行混音而成,差別在於 2 號的音樂輸出會以 A 節奏為 主,3 號的音樂會以 B 節奏為主,而 6 號則是以 A 節奏為主的 ABC 三種節奏混 音。
圖 3-12:輸出音樂內容示意圖
3. MIDI 音樂製作
在音樂的編製上,我們選用了 Sony 的 Acid Pro 7.0 來製作我們輸出所需要 的 MIDI 音樂。如圖 3-15 所示,左邊是 MIDI 檔案中的 Track,右邊是各個 Track 的內容,總共有 23 個 Track。前面三個 Track 是主旋律,也就是使用者在實際操 作裝置前會聽到的旋律,而這個旋律也會在使用者操作裝置時與其他 Track 的和 弦與節奏進行混音。後面的 Track 是由和弦與節奏組成,用來搭配主旋律,依顏 色來區分麥克風陣列各點的輸出音樂內容。
48
圖 3-13:Acid Pro 7.0 實際製作圖
49 處理聲音訊號,我們加入了 DirectX SDK 裡的 DirectSound,並且加入了 Sanford Multimedia 的 MIDI Toolkit 來處理 MIDI 音樂的輸出。圖 4-為本研究所開發的使 用者介面: