張 健,曾 輝
(武昌理工學院信息工程學院,湖北 武漢 430223)
基于SOPC的呼吸音檢測系統分析
張 健,曾 輝
(武昌理工學院信息工程學院,湖北 武漢 430223)
文章介紹了一套由SOPC開發平臺DE2實現的呼吸音檢測系統,該平臺核心為Altera的FPGA及內嵌的軟核NIOS ⅡCPU。該系統以24位音頻編解碼芯片WM8731進行呼吸音的采集與回放,利用短時能量、短時過零率以及時自相關分析確定呼吸音的起止,然后利用數字濾波器、FFT變換、線性預測分析等技術提取呼吸音相關參數,并用DTW算法進行綜合匹配進行識別。實驗結果表明,該系統可以高效識別多種呼吸音。
呼吸音檢測;SOPC;數字信號處理;模式識別
肺部生理與病理的一項重要臨床指標是肺音,也就是常說的呼吸音。通過聽診器進行呼吸音檢測是初步診斷肺部病癥最基本、最快速的方法,但這需要醫生憑借個人積累的豐富臨床經驗來進行判斷。而聽診器分辨率低,頻響范圍窄,不同醫生聽力水平也不一樣,并且聽到的內容不容易用文字語言進行客觀描述,這對臨床經驗較少的醫生來說,無論是學習還是掌握聽診技術都有相當大的難度[1]。
本系統嘗試在可編程片上系統(System-on-a-Programmable-Chip,SOPC)開發平臺上研發一種呼吸音聽診系統,希望借助現代信號處理技術對肺部的生理和病理特性指標進行客觀記錄、存儲、回放、分析、比對、識別等。系統的功能可用于肺部病癥的臨床輔助診斷和鑒別,方便醫學教學,方便遠程診斷。
呼吸音由傳感器采集,經放大濾波后,以輸入幅度為±1 V的模擬信號送入WM8731。通過對WM8731的控制實現數模和模數轉換。模數轉換主要運用于樣本信號的采集,數模轉換主要運用于將采集到的呼吸音通過揚聲器回放出來。WM8731通過I2C總線進行配置。I2C的工作頻率不能太高,如果太高,會導致WM8731接收到數據后來不及響應,不能正確判斷確認字符(Acknowledgement,ACK)。本系統I2C總線的時鐘采用20 kHz,由系統時鐘50 MHz分頻得到。
呼吸音信號頻率并不高,其頻譜通常在2 000 Hz以下,考慮到本系統將來可以擴展到心音檢測等內容,所以選用了44.1 kHz的采樣頻率(實際可以通過丟掉數據而降低采樣率),設定為雙聲道(實際只需要一個聲道)、I2S對齊模式、主模式來采集肺音信號。
用SD卡存儲呼吸音數據及分析結果。在NIOS Ⅱ系統中添加對SD卡操作的可編程輸入輸出(Programmed Input Output,PIO)控制端口和數據端口。
在NIOS Ⅱ系統中添加對發光二極管(Light-Emitting Diode,LED)燈及按鍵操作的控制端口。LED燈的主要功能是實時顯示輸入音頻信號的能量值;按鍵的主要功能是菜單界面的操作,實現人機交互功能。

圖1 算法流程
在QSYS平臺下添加驅動LCD12864圖形點陣液晶的PIO端口、編寫液晶的底層驅動程序以及方便用戶調用的已經封裝好的應用程序界面(Application Program Interface,API)函數,實現了友好的人機交互界面。用戶根據提示進行呼吸音輸入操作,記錄呼吸次數并顯示呼吸音頻率,待系統處理完成,送識別結果回顯,顯示結果。
利用對獲得的呼吸音數字信號進行短時能量[2]、短時過零率以及短時自相關分析確定呼吸音的起止,實現了呼吸音信號端點的檢測。再利用數字濾波器、快速傅里葉變換算法(Fast Fourier Transform Algorithm,FFT)、線性預測分析等技術提取呼吸音信號的特征值等相關參數,結合醫學原理,并用動態時間歸整(Dynamic Time Warping,DTW)算法進行綜合匹配,實現呼吸音的檢測與識別。其算法流程如圖1所示。
預處理主要包括預加重、分幀、加窗等過程[3]。
首先對輸入的原始呼吸音信號進行預加重,其目的是為了提升語音的高頻分量。一般通過一個傳遞函數為H(z)=1-aZ-1的濾波器對其加以濾波,其中α為預加重系數且0.9lt;αlt;1.0,一般為0.95,0.97,0.98,本文取0.95。
假設在n時刻的呼吸音采樣值為x(n),則經過預加重處理后的結果為:

呼吸音信號具有短時平穩,長時間呈現一定周期性的特點,對語音信號進行分幀操作后,可以提高其短時特性,從而便于模型的建立。一般取幀長20 ms,此時取幀移10 ms。
然后每幀信號用Hamming窗相乘,以減小幀起始和幀結束的處的信號不連續,此處的Hamming窗函數為:

其中N為當前數據幀的采樣數。
2.2.1 短時能量與短時幅度
肺音信號經過人體傳播,波形類似語音信號,其短時段能量變化也非常明顯。加窗分幀處理后得到的第n幀肺音信號為Xn(m),其短時能量用En表示[4],計算式為:

En是一個度量聲音信號幅度值變化的函數,其對高電平非常敏感,因為其計算時用的是信號的平方。為此,可采用下面函數度量信號幅度值變化,即短時平均幅度函數Mn,其定義為:

通過短時能量和短時平均幅度函數,可以獲取類似聽感上強弱的變化,得到一部分肺音參數,發現肺音的能量受氣流速度及通氣量影響,通過查閱文獻發現其強度主要與氣流速度的平方及局部通氣量呈正相關。
2.2.2 短時過零率
對肺音信號進行分析,發現有些肺音,比如肺泡音,雖然能量低,但是其過零率并不低,所以過零率參數也被用來作為分析參數之一,其實也是從某個方面反映了頻譜成分。
信號Xn(m)的短時過零率Zn為:

式中,sgn[]是符號函數,即:

2.2.3 線性預測系數
基于線性預測原理的方法是一種很有效的語音信號分析方法,也是目前應用廣泛的一種特征參數提取技術,這是因為其建立了一種模型,與人的聲道模型相對應,具有較高的計算精度和速度。由于人體生理限制,可以認為,短時段內人體也為平穩系統,比如哮鳴音,就是一種持續的附加音,其產生與氣道平滑肌痙攣、黏膜水腫及分泌物堵塞有關。
線性預測的分析(Linear Predictive Coding,LPC)是對已給定的時域離散線性系統用輸出信號過去值的線性組合來估計即將得出的輸出值。
對于LPC預測系數的求解,可以采用Durbin算法進行遞推計算。
從廣義上講,呼吸音信號的頻域分析包括語音信號的頻譜、功率譜、頻譜包絡分析等,而常用的頻率分析方法有帶通濾波器組法、傅里葉變化法、線性預測法等幾種。由于呼吸音同語音信號一樣是一個非平穩過程,因此適用于周期、瞬變或平穩隨機信號的標準傅里葉變換不能用來直接表示語音信號,而應該用短時傅里葉變換(Short Time Fourier Transform,STFT)對語音信號的頻譜進行分析,相應的頻譜稱為“短時譜”。從功率譜來看,各種呼吸音的能量分布具有明顯的差異,比如,哮喘音、羅音中的高頻成份比肺泡呼吸音高頻成分豐富[5]。
2.3.1 短時頻譜
利用STFT即可求呼吸音的短時譜。對呼吸音信號進行加窗后獲得的第n幀信號Xn(m)進行傅里葉變換[離散時域傅里葉變換(Discrete Time Fourier Transform,DTFT)],可得到STFT,其定義如下:

通常,頻域中分析選用漢明窗較矩形窗更合適。在實際信號處理中,都采用DTFTXn(k)代替Xn(ejω),并且可以用FFT完成。FFT的計算可以在通用計算機上由相應的算法軟件來完成,這種方式一般只能實現非實時運算。為了完成實時運算可以采用數字信號處理芯片或專用FFT芯片,而SOPC平臺在這一點上則更容易勝任。
2.3.2 短時功率譜
呼吸音的功率譜,可以直接由STFT獲得,其公式為:

DTW算法是一種將全局最優化問題轉換為局部最優化問題的算法,把時間規整和距離測度計算結合起來的一種非線性規整技術。該算法保證在一定路徑限制下尋找代價最小的最佳匹配模塊。N軸上的波形為模版波形,M軸上的波形為采集到的波形,由于采集到的呼吸音,與要識別的呼吸音模版存在時域上長度區別,將M軸和N軸上的波形矢量化,運用DTW算法插入或刪除音節,與模版匹配,獲取該音和系統預存的各模板之間的距離測度,從而判斷出其類型。
對于不同類型的呼吸音識別,選用不同的參數組合進行矢量量化,可以進一步提高識別效果。
本文將3 kHz的正弦信號作為測試信號,正常的呼吸音是肺泡呼吸音,其頻率集中在20~100 Hz。有病癥的大濕羅音頻率集中在100~200 Hz。有病癥的胸膜摩擦音頻率集中在400~600 Hz,還有2 kHz的高頻成分。通過測試可以看到各種呼吸音的準確率可以達到70%以上,呼吸音識別結果如表1所示。

表1 5種呼吸音識別對比表(%)
采用SOPC平臺設計呼吸音檢測系統,除了前端采集電路和輸出設備,系統的設計完全在一片現場可編程門陣列(Field Programmable Gate Array,FPGA)中實現。系統更加小型化,不但系統的整體體積減小,而且功耗降低,穩定性增強。這個小型的呼吸音檢測與分析系統,可以幫助醫生更快更準確地識別出多種呼吸音以及人耳難以辨別出的一些模糊音,提高診斷的準確率。
[1]杜兆勝.基于FPGA的FFT處理器設計與實現[J].信息通信,2016(159):100-101.
[2]耿慧,梁維謙,董明,等.基于FPGA的語音識別SoC系統解決方案[J].器件與電路,2009(10):32-38.
[3]辛曉峰,殷凱生,黃小平.肺音錄取和頻譜分析系統的建立及其應用[J].中國生物醫學工程學報,2009(19):236-239.
[4]徐學良.基于FCM聚類算法的呼吸音分類識別研究[J].現代電子技術,2015(12):16-19.
[5]付博.一種高速定點FFT處理器的設計與實現[J].計算機工程,2005(11):52-55.
Analysis of breath sound detection system based on SOPC
Zhang Jian, Zeng Hui
(Technology Information and Engineering School, Wuchang University of Technology, Wuhan 430223, China)
This paper introduces a set of sound detection system realized by SOPC development platform DE2, which is Altera’s FPGA and embedded soft core NIOS Ⅱ CPU. The system uses 24-bit audio codec chip WM8731 for the collection and playback of breath sounds.The short-term energy, short-time zero-crossing rate and time-dependent correlation analysis are used to determine the start and end of breath sounds. Then, the digital filter, FFT transform, linear prediction analysis and other techniques are used to extract the relevant parameters of breath sounds, and DTW algorithm is used for comprehensive identification to identify. Experimental results show that the system can efficiently identify a variety of breath sounds.
breath sound detection; SOPC; digital signal processing; pattern recognition
張健(1989— ),男,湖北武漢人,博士研究生;研究方向:機器學習,模式識別。