• 沒有找到結果。

第三章 系統軟硬體設計與實現

3.4 軟體系統架構

雙核心系統分別是 ARM 和 DSP,由 ARM 負責主控系統運作、對周 邊控制,DSP 負責運算相關演算法,但為了降低 DSP 晶片負擔,決定將人 臉追蹤演算法移至ARM 端實現,至於 ARM 與 DSP 雙核心之間的溝通方 式,我們使用DSP/BIOS LINK 來達成。

圖3-17 DSP 端軟體系統流程圖

圖 3-17 為 DSP 端軟體系統流程圖,由於資料相關性單純、執行緒中 不會有不定時間的等待現象、除了與FPGA 外沒有跟其他周邊溝通,因此 我們簡單使用單一執行緒(Single Task)去架構 DSP 端系統,當 FPGA 填 滿一個內部暫存記憶體時,DSP 會透過外部記憶體介面直接向 FPGA 抓取 八通道的聲音資料,取得聲音資料後直接通過 10 階的空間濾波器對聲音 做純化的動作,經過空間濾波器後,聲音資料會從八通道合成單一通道聲 音,並給語音活動偵測系統來判別是否為真人語音,由於純化後的聲音由

─31─

於大幅壓抑了背景雜訊能量,因此可提高語音活動偵測判斷正確率,而純 化後的聲音資訊除了做語音活動偵測外,也會透過 DSP/BIOS LINK 的 Share Memory 機制送至 ARM 端供周邊使用,做即時性的輸出。

語音活動偵測的判斷結果,會引發兩種不同的程式流程,若語音活動 偵測系統判斷該聲音不為語音而是背景雜訊,則空間濾波器參數更新系統 會使用此聲音資訊對濾波器參數作訓練與更新,如此才能對不同環境不同 時間點的背景雜訊做適應性的調整,空間濾波器參數更新系統會從資料庫 中選一筆訓練用語音資料與參數出來,然後跑適應性演算法NLMS 對參數 作訓練,至於選取哪一筆訓練用語音資料與參數則是決定在於要對哪個方 位做語音純化動作,也就是需要知道發聲者方位,而初始設定為陣列零度 位置。

若語音活動偵測系統判斷該聲音為語音,接著我們會執行聲源方位偵 測系統去估測發聲者方位,估測出的方位角度一來會提供給空間濾波器參 數更新系統,作為選取哪一筆訓練用語音資料與參數的依據,二來也會傳 至ARM 端供系統周邊使用。完成整個程式流程後,DSP 會等待下一次抓 取FPGA 資料。

─32─

圖3-18 ARM 端軟體系統流程圖

圖 3-18 為 ARM 端軟體系統流程圖,ARM 主要負責周邊控制,所以 有一部分的程式是在跟周邊做溝通,我們把影像與聲音部分分割成兩個子 程序執行,但聲音程序部分大多都在DSP 實現了,因此在 ARM 只負責接 收DSP/BIOS LINK 傳遞的聲音資料並由 AUDIO OUT 做類比輸出,此外 ARM 在聲音子程序部分還會接收 DSP 傳來的發聲者方位資訊,透過 RS232 對 PTZ 攝影機做伺服控制,因此在聲音子程序中我們使用了兩個 pthread 去建構。

影像子程序先會接收PTZ 攝影機的影像資訊,接著執行人臉追蹤,系 統會在人臉第一次進入畫面時擷取人臉特徵,建立目標模型,爾後除非影 像脫鎖,否則目標模型不再重建。平均位移演算法會不斷找出人臉移動方 位,因此我們可以使用此資訊透過 RS232 對 PTZ 攝影機做伺服控制,使 人臉保持在影像畫面正中央,達到追蹤效果。追蹤的影像畫面則透過LCD 螢幕做即時顯示。在影像子程序部分,除了影像的輸入輸出外,我們額外 開了一個pthread 執行人臉追蹤演算法,一個 pthread 做攝影機伺服控制。

─33─

相關文件