4. 實驗
4.3. 實驗結果
4.3.5. 音訊指紋反向索引效能實驗
實驗四主要是為了檢驗反向索引系統的查詢比對效能。此實驗中,我們分別對四 種音訊指紋作雜湊,並以此來建立反向索引清單,再以此反向索引清單來做音訊指紋 查詢。雜湊的方法是對各個維度的數值做 N 等份的切割,將之量化為 0 至 N 的整數。
所有維度的量化值所成之字串即為該音訊指紋之雜湊值。我們稱此參數 N 為反向索 引位元數 N。
在實驗之前,我們首先探討可能會造成反向索引發生錯誤的狀況及其相對應處理 方法。如圖 14 所示,圖的上方為原始單一維度的數值,而下方則為量化之後的數值。
假設藍色點(P)為原始數值,紅色點(P’)為被扭曲之後的數值。原始的數值量化值為 0,
而扭曲後,量化值則可能變成 1,為了處理這種情況,我們必頇設定一個臨界範圍,
當查詢資料的原始數值落於此範圍之內,則必頇將相鄰的量化值也當作查詢的候選值 之一。此種做法類似於模糊比對。
0 0.25 0.5 0.75 1
0 1 2 3
原始數值 Xi
量化值 q(Xi)
P P’
臨 界範 圍
圖 14. 反向索引發生誤判之示意圖
而關於如何設定臨界範圍則可以由圖 15 得知。圖 15 是一個二維的歐幾里得空 間。由於本系統所使用的音訊指紋,有做正規化至長度一的動作,因此本系統的資料 搜尋空間會落於紅色的圓圈上。假設圖中紅點(P2、P3)與黑點(P0)的距離和藍點(P1) 與黑點(P0)的距離皆為 d,那麼我們可以由此幾何圖形得知,向量 P0 至 P2 的 x 軸與 y 軸的分量必定小於 d。由表 3 的實驗我們可以得知,音訊指紋經過扭曲後,其扭曲 百分比不會大於 5%。相距 5%的兩個音訊指紋,其每個維度的分量也必定小於 5%,
所以我們可以將此臨界範圍設定為 5%,做為模糊比對的依據。
X
Y 1
P0
P1 P2 P3
圖 15. 搜尋空間距離之示意圖
接下來我們針對不同的反向索引位元數 N,檢驗其過濾查詢的效果。在建立反向 索引清單的過程中,會將音訊指紋資料庫中所有的音訊指紋,依照雜湊值來分別建立 反向索引清單。因此,若是雜湊值的個數若是越少,則代表一個反向索引清單內,會 有越多的音訊指紋反向索引,過濾的效果也越差。反之,雜湊值的個數越多,代表一 個反向索引清單內的反向索引會越少,過濾的效果較佳。此實驗的結果如圖 16、圖 17、
圖 18 所示,圖 16、圖 17、圖 18 分別為不同資料庫大小規模的實驗結果。綜合這 三種規模的實驗結果來看,不管資料庫的大小多大,只要隨著反向索引位元數 N 愈 來越大,雜湊值的個數也會愈來越多,而雜湊值的個數變多,表示資料庫裡的記錄會 被分別的愈開,查詢時的過濾效果也就愈好。
圖 16. 過濾能力實驗(100 筆記錄)
0 50 100 150 200 250 300 350 400
2 3 4 5 6 7 8 9 10
雜湊值個數
反向索引位元數 MDCT
MFCC MPEG7 Chroma Total
圖 17. 過濾能力實驗(1000 筆記錄)
圖 18. 過濾能力實驗(10000 筆記錄)
最後我們以實際查詢來檢驗查詢處理執行的速度,其結果如圖 19、圖 20 所示。
由圖 19 可以看出來,隨著反向索引位元數 N 愈大,查詢時間也愈來愈少,而且資料 庫越大,下降的幅度也越多。圖 20 顯示出,不管資料庫有多大,只要反向索引位元 數大於 2,以反向索引清來做查詢就都會有加速的效果。且隨著反向索引位元數 N 愈 大,加速的效果越好,直到反向索引位元數等於 9 和 10,才比較沒有效果。
0 500 1000 1500 2000 2500 3000 3500
2 3 4 5 6 7 8 9 10
雜湊值個數
反向索引位元數 MDCT
MFCC MPEG7 Chroma Total
0 5000 10000 15000 20000 25000
2 3 4 5 6 7 8 9 10
雜湊值個數
反向索引位元數 MDCT
MFCC MPEG7 Chroma Total
圖 19. 反向索引位元數與查詢處理執行時間
圖 20. 資料大小與查詢處理執行時間
根據表 3 的結果,音訊指紋經過扭曲後,所產生的音訊指紋誤差百分比不會大 於 5%。而由圖 14 來看,即使是容錯能力最低的反向索引位元數 10,其容錯能力也 在 10%以上。因此可以不用擔心扭曲造成的誤差會對辨識產生識別錯誤。在圖 20 中,
反向索引位元數等於 9 或是 10,其執行速度相差不大。不過再綜合圖 18 來看,反向 索引位元數等於 9 的時候,其雜湊值數目相較反向索引位元數等於 10 的時候還來的
0.001 0.01 0.1 1 10
執行時間(秒)
過濾方法
100筆記錄 1000筆記錄 10000筆記錄
普通 位元數=2
位元數=3 位元數=4
位元數=5 位元數=6
位元數=7 位元數=8
位元數=10 位元數=9
0.001 0.01 0.1 1 10
100筆記錄 1000筆記錄 10000筆記錄
執行時間(秒)
資料庫大小(記錄比數)
少。因此若是要以反向索引清單來做查詢的過濾加速,則根據實驗結果使用反向索引 位元數 9,會是一個比較好的選擇。再者,單純以反向索引清單來對查詢做加速,就 有如此的效果。若是再加上最近鄰居搜尋樹,則查詢效能可再提升。