吳金燦 李 揚 程鳳娟
一個手機鼾聲錄音睡眠分析系統(tǒng)的設(shè)計與實現(xiàn)
吳金燦1李 揚2程鳳娟1
(1.河南工業(yè)大學信息科學與工程學院,河南 鄭州 450001;2.鄭州鐵路局鄭州職工培訓基地,河南 鄭州 450001)
針對越來越多有潛在睡眠呼吸問題患者的出現(xiàn),本文設(shè)計一個基于Android手機的鼾聲錄音睡眠分析系統(tǒng),通過監(jiān)測聲音波形、頻率等信息,檢測用戶打鼾和阻塞性呼吸暫停情況,并形成記錄供用戶查看,能夠為有潛在睡眠呼吸問題的患者提供便捷的幫助。系統(tǒng)利用Android智能手機開放平臺,具有較好的隱私保護,同時具有很好的應(yīng)用前景,將會形成比較好的社會效應(yīng)。
鼾聲錄音分析;聲音特征;阻塞性呼吸暫停
打鼾也被稱為打呼嚕,往往與睡眠聯(lián)系起來,其發(fā)聲的生理原因是咽部通道變窄后,當氣流通過時就會發(fā)出聲音。打鼾除了影響同屋的他人外,還對自身健康有很大的影響。過去很少有人知道打鼾對本人的影響,但學者研究打鼾者的睡眠發(fā)現(xiàn),長期打鼾的人往往伴隨著睡眠呼吸暫停、低通氣,在睡眠的過程中血液氧氣含量減小,時間久了便影響人的身體健康[1]。
現(xiàn)在我國主流呼吸暫停檢查還是比較落后的多導睡眠圖監(jiān)測,雖然其有很專業(yè)的研究設(shè)備,檢測腦電、口鼻氣流、鼾聲、心電等很多參數(shù),但還是要依賴專業(yè)醫(yī)療技術(shù)人員整夜的檢查,完全手動分析,為進一步治療做準備[2]。雖然現(xiàn)在無電極檢測方式改進極大,但還是有很高的使用成本。一方面對打鼾的認知比較主觀,其特征也受多種原因的影響;另一方面其多變性加大了研究的難度[3]?,F(xiàn)在對鼾聲的研究已經(jīng)有很多,如音頻信號的分類、鼾聲信號的檢查、頻譜中能量的分布、計算共振峰頻率以及鼾聲的基頻等[4-6]。同時,最近20年語音信號的處理識別有顯著的進步,鼾聲也可以看作一種特殊的語音信號進行相關(guān)研究,相關(guān)理論技術(shù)也有很大的參考價值,如使用手機對鼾聲的檢測有很大的可行性。
本APP程序是一個對睡眠錄音進而對鼾聲檢測、睡眠分析的系統(tǒng),基于Android操作系統(tǒng)提供的AudioRe?cord類,獲取聲音數(shù)據(jù),借助鼾聲錄音對使用者的睡眠情況給出分析反饋。對于鼾聲信息,主要對鼾聲發(fā)生的時間間隔信息進行分析,設(shè)計分析方法,從而得出睡眠的情況,給出分析結(jié)果。通過確定鼾聲模型,過濾掉可能出現(xiàn)的雜音,統(tǒng)計相關(guān)信息;查找分析資料,解析信息代表的實際含義,結(jié)合相關(guān)資料給出評價。應(yīng)用程序流程設(shè)計方面,主要包括提供鼾聲檢測分析,存儲處理后的數(shù)據(jù)和時間信息,存檔到本地文件系統(tǒng)。相關(guān)錄音記錄保存到SQLite上,便于以后的顯示歷史、查看調(diào)取。
本系統(tǒng)對鼾聲的分析檢測采用FFT算法,一種由離散傅氏變換(DFT)改進而來的快速算法,可以獲取聲音頻率中所包含的有用信息[7]。FFT將時域上信號變換到頻域,方便在頻譜等方面對數(shù)據(jù)進行分析。實踐中為了方便運算,通常N取2的整數(shù)次方。聲波采樣頻率Fs=44 100Hz,從Android麥克風傳感器中讀取的PCM數(shù)字信號short[](每個取樣位為16位),調(diào)整中轉(zhuǎn)數(shù)據(jù)保證輸入數(shù)據(jù)長度為N=214=16 384,經(jīng)過FFT之后,就可以得到N個點的FFT結(jié)果。每個點對應(yīng)一個頻率點。第一個點就是直流分量,其模值就是直流分量的N倍(即0Hz),其他一個點就對應(yīng)著一個頻率點。這個點的模值,就是該頻率值下的幅度特性。假設(shè)原始信號的峰值為A,那么FFT的結(jié)果的每個點(除了第一個點直流分量之外)的模值就是A的N/2倍,最后一個點N的再下一個點(實際上這個點是不存在的,這里是假設(shè)的第N+1個點)則表示采樣頻率Fs,這中間被N-1個點平均分成N等份,每個點的頻率依次增加。例如,某點n所表示的頻率?為?n=(n-1)×Fs/N(?n所能分辨到頻率為Fs/N,即精度),本例分辨率為44 100/16 384(Hz),假設(shè)FFT之后某點n用復(fù)數(shù)表示為a+bi,那么這個復(fù)數(shù)的模就是An=a2+b2;該點的模值除以N/2就是對應(yīng)該頻率下信號的幅度(對于直流信號是除以N),相位是對應(yīng)該頻率下的信號相位。相位的計算用數(shù)學函數(shù)Pn=atan2(b,a)計算。atan2(b,a)是求坐標為(a,b)點的角度值,范圍從-π到π??梢杂嬎愠鰊點(n≠1,且n≤N/2)對應(yīng)的實際語言信號的還原表達式為:An/(N/2)×cos(2×π×Fn×t+Pn)。這里幅度可以表示該頻率下聲音的振幅:Rn=An/(N/2),其中n=1點的信號,是直流分量,幅度為A1/N。FFT變換結(jié)果具有對稱性,所以系統(tǒng)只使用變換后頻域信息的前半部分。
2.1 系統(tǒng)配置及架構(gòu)
系統(tǒng)開發(fā)使用最新的Android Studio,其提供快捷的開發(fā)環(huán)境和單詞級的代碼語義支持編輯、調(diào)試,能夠靈活地構(gòu)建系統(tǒng)和即時構(gòu)建/部署系統(tǒng)。運行系統(tǒng)的Android智能手機應(yīng)最低支持Android 4.4.2,且有麥克風傳感器。
系統(tǒng)主要包含2個核心功能:錄音分析和解析記錄數(shù)據(jù)。其中錄音處理流程圖如圖1所示。
系統(tǒng)通過睡眠分析記錄表,如表1所示,用來保存用戶每次錄音的記錄,包括數(shù)據(jù)文件名、時間等信息。
圖1 錄音處理流程圖
表1 睡眠分析記錄表
2.2 主要邏輯的代碼
接收整合輸出數(shù)據(jù)邏輯:這里為了匹配各個不同設(shè)備所讀取處理數(shù)據(jù)長度不同,增加了一個數(shù)據(jù)緩存區(qū),將數(shù)據(jù)放入,數(shù)據(jù)取出分離,沒有直接將原始數(shù)據(jù)加入運算邏輯,主要原因是采集數(shù)據(jù)需要的緩沖區(qū)的大小,如果不知道最小需要的大小可以在getMinBufferSize()查看。這個數(shù)值在不同設(shè)備上大小不一致,如果編碼自行設(shè)置一個讀取大小的值時,又有一些設(shè)備不支持特定大小的讀取,所以有了這個整合模塊,主要代碼如下。
System.arraycopy(audiodata,0,recordset,front,size);front+=size;
while(front-tailgt;=FFT_N){
short newCp[]=new short[FFT_N];
System.arraycopy(recordset,tail,newCp,0,FFT_N);
tail+=FFT_N;
onWork(newCp);
if(BUF_SIZE-taillt;FFT_N*2){
int remain=front-tail;System.arraycopy(recordset,tail,recordset,0,remain);
tail=0;front=remain;
}
}
聲音檢測是本系統(tǒng)的功能基礎(chǔ),支撐的鼾聲檢測主要就是基于這個信息記錄的,這里首先對原始數(shù)據(jù)進行遍歷計算出基本信息,主要計算是求均值,其中負數(shù)值累加為了不與正數(shù)中和抵消,也轉(zhuǎn)成正數(shù)求絕對值的算術(shù)均值,在此期間也計算了聲音段的聲音大小信息和最大值信息。然后利用均值信息,對源數(shù)據(jù)進行再處理,將小于均值的采樣點全部賦值為0。最后,基于這種數(shù)據(jù)檢測樣本數(shù)據(jù)的相關(guān)信息。這里并沒有查找波峰信息,沒有查看保留下來的波峰信息和聲音的時間信息,而是反其道而行,統(tǒng)計這個數(shù)據(jù)中連續(xù)0的個數(shù),可以確定如果聲音是無規(guī)律的持續(xù)混亂數(shù)據(jù),統(tǒng)計出來的連續(xù)0個數(shù)一定會很比較小,當聲音中包含有聲段時,由于這種情況下,聲音段的均值會被拔高,這里就會將所有的環(huán)境噪聲淹沒掉,并且由于極值集中這種情況下,連續(xù)0個數(shù)相對來說就會很大,從側(cè)面反映出數(shù)據(jù)中包涵有聲信息。確定檢測到有聲段后,會對這段聲音進行傅里葉變換分析,查看頻率等相關(guān)信息用于程序進行輔助判斷鼾聲信息。
public static boolean work(short[]shortArr){
maxVolAndavgVol(shortArr,shortArr.length);
emergeArr(shortArr,avgAudio);
getQuietLevel=testAudio(shortArr);
return getQuietLevelgt;QUIET_LEVEL;
}
2.3 應(yīng)用程序?qū)崿F(xiàn)
打開錄音睡眠分析應(yīng)用后,點擊錄音,將手機放置在身旁,用戶就可以休息。這里開啟了3個線程,類似流水線作業(yè),一個線程讀出原始信息,一個線程對讀入信息格式化,一個線程對信息進行運算,判斷鼾聲事件是否發(fā)生,并記錄結(jié)果[8]。
當用戶想要結(jié)束錄音分析時,點擊結(jié)束錄音,錄音記錄即停止。點擊歷史記錄,最上面的第一條就是最新的分析記錄。用戶可以點擊查看詳情。這里使用了一個標識變量,將其設(shè)置為停止,錄音讀取工作線程每次取值前都會檢查該值,自行感知是否退出。
如圖2所示是程序的錄音歷史,用戶可以點擊某條記錄,查看記錄的詳細情況。在這個界面對某個記錄左滑動,即可出現(xiàn)刪除菜單。當數(shù)據(jù)比較多時,還可以上下滑動查找選擇需要的記錄。
圖2 用戶錄音記錄信息界面
表格以小時為單位生成,每小時有2份表格,包括鼾聲檢測報表和呼吸暫停檢測報表。點擊某個記錄后,即可查看每小時的打鼾記錄,以及根據(jù)這些記錄推測出可能有的呼吸暫停事件記錄,這個都按照每10min一個記錄的報表。如圖3所示,1∶40-1∶50檢測到了3次呼吸暫停,整夜出現(xiàn)3次呼吸暫停事件。
圖3 睡眠記錄查看頁,檢測到呼吸暫停報
系統(tǒng)實現(xiàn)后,通過選用不同的Android智能手機,在不同的環(huán)境聲音狀況下,分別進行了功能測試、兼容性測試、穩(wěn)定性測試和耗電測試,系統(tǒng)基本滿足應(yīng)用需求,實現(xiàn)了預(yù)定目標。但也發(fā)現(xiàn)了一些局限性,比如:系統(tǒng)UI設(shè)計還有很大的完善空間;取樣數(shù)據(jù)也可以自己降頻后再行處理;對于鼾聲的識別,準確性還需要進一步增強;市場上一些類似產(chǎn)品還具有鼾聲回放功能,使得軟件數(shù)據(jù)可信度更高等。
[1]Adam Gerber,Clifton Craig.Android Studio實戰(zhàn)[M].北京:清華大學出版社,2016.
[2]張軍朝.Android技術(shù)及應(yīng)用[M].北京:電子工業(yè)出版社,2016.
[3]朱元波.Android傳感器開發(fā)與智能設(shè)備案例實戰(zhàn)[M].北京:人民郵電出版社,2016.
[4]彭好,許輝杰,黃魏寧,等.阻塞性睡眠呼吸暫停低通氣綜合征和單純鼾癥者鼾聲的基頻及共振峰分析[J].聽力學及言語疾病雜志,2013(1):27-31.
[5]許輝杰,余力生,黃魏寧,等.OSAHS患者與單純打鼾者鼾聲聲學特性初步研究[J].聽力學及言語疾病雜志,2009(3):235-238.
[6]張詩玙.基于安卓手機的睡眠呼吸暫停綜合癥篩查系統(tǒng)[D].大連:大連理工大學,2016.
[7]錢昆.鼾聲相關(guān)信號自動檢測與分類研究[D].南京:南京理工大學,2014.
[8]Ryo Nonaka.Automatic snore sound extraction from sleep sound recordings via auditory image modeling[J].Biomed?ical Signal Processingamp;Control,2016(27):7-14.
Design and Implementation of a Sleep Snoring Recording Analysis Application System
Wu Jincan1Li Yang2Cheng Fengjuan1
(1.College of Information Science and Technology,Henan University of Technology,Zhengzhou Henan 450000;2.Zhengzhou Staff Training Base,Zhengzhou Railway Bureau,Zhengzhou Henan 450000)
Aiming at more and more sleep apnea patients,this paper designed a sleep snoring recording analysis application system based on Android mobile phone,by monitoring the sound waveform and frequen?cy information,detect users snoring and obstructive apnea,and make record for users to view,to provide help for potential sleep apnea patients.This system uses Android smart phone open platform,has better pri?vacy protection,and has a good application prospect,will form a better social effect.
snoring recording analysis;sound characteristics;obstructive apnea
TP274
A
1003-5168(2017)10-0011-03
2017-09-15
河南省教育廳自然科學項目科學技術(shù)重點研究項目(15B520004)。
吳金燦(1994-),男,本科,研究方向:計算機運用;李揚(1984-),女,本科,助理工程師,研究方向:計算機運用。
程鳳娟(1976-),女,碩士,副教授,研究方向:軟件工程網(wǎng)絡(luò)安全。