論文關(guān)鍵詞:聲卡 數(shù)據(jù)采集 MATLAB 信號處理 圖2-1 典型數(shù)據(jù)采集系統(tǒng)的組成
而一般的外置式數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)如圖2-2所示。模擬信號由傳感器采得經(jīng)過信號調(diào)理模塊送入數(shù)據(jù)采集硬件設(shè)備。在數(shù)據(jù)采集設(shè)備中完成A/D轉(zhuǎn)換,包括采樣、量化、編碼,轉(zhuǎn)化成數(shù)字信號后送入與之相連的PC機中。根據(jù)不同的要求,在PC機上利用MATLAB以及二次編程實現(xiàn)數(shù)據(jù)的實時分析與處理。用戶可以通過人機交互界面修改、設(shè)定各項參數(shù)來控制數(shù)據(jù)采集硬件設(shè)備的工作狀態(tài),同時可以得到數(shù)據(jù)的采集與分析結(jié)果, 從而實現(xiàn)數(shù)據(jù)采集與分析的自動化。 ![]() 圖2-2 一般的外置式數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu) 利用聲卡在WINDOWS環(huán)境下開發(fā)數(shù)據(jù)采集系統(tǒng)時,由于受編程語言的限制,其數(shù)據(jù)分析與處理的功能非常有限。例如,為了對所采集的數(shù)據(jù)進行功率譜分析,則需要用戶以VB或C語言來編寫功率譜分析的子程序,這顯然增加了開發(fā)的難度,并且也極不利于分析功能的進一步擴展。 而利用聲卡作為A/D轉(zhuǎn)換工具,經(jīng)過衰減和取樣電路得到的模擬信號送至聲卡的線路輸入端LINEIN,并利用MATLAB中提供的數(shù)據(jù)采集工具箱,可滿足控制聲卡進行數(shù)據(jù)采集的要求。用戶通過調(diào)用MATLAB命令, 可對采集的數(shù)據(jù)進行分析和處理。 整個系統(tǒng)可分為數(shù)據(jù)采集和數(shù)據(jù)分析兩大部分,以友好的圖形界面與用戶進行交互溝通。數(shù)據(jù)采集部分實現(xiàn)數(shù)據(jù)采集功能,根據(jù)用戶選擇的采樣頻率和預設(shè)的采樣時間,從聲卡獲得用戶需要的數(shù)據(jù);數(shù)據(jù)分析部分對采集到的數(shù)據(jù)進行頻譜分析。全部數(shù)據(jù)的時域和頻域波形以圖形方式直觀地呈現(xiàn)于用戶面前。此外,還提供保存數(shù)據(jù)以及回放數(shù)據(jù)的功能。 圖2-3給出了基于MATLAB的數(shù)據(jù)采集系統(tǒng)的簡圖,主要部件數(shù)據(jù)采集工具箱提供了硬件驅(qū)動程序和MATLAB環(huán)境之間“對話”所需的硬件驅(qū)動程序適配器、數(shù)據(jù)采集引擎和M-文件函數(shù). ![]() 圖2-3 基于MATLAB的數(shù)據(jù)采集系統(tǒng)簡圖 硬件驅(qū)動程序適配器在硬件驅(qū)動程序和數(shù)據(jù)采集引擎之間交換屬性數(shù)值、數(shù)據(jù)和事件;數(shù)據(jù)采集引擎用來存儲各個設(shè)備對象,以及每個設(shè)備對象的屬性值;對采集到的數(shù)據(jù)進行存儲并且使不同事件同步;M-文件用來創(chuàng)建設(shè)備對象、采集或輸出數(shù)據(jù)、配置屬性值和檢測數(shù)據(jù)采集狀態(tài)和數(shù)據(jù)采集設(shè)備。 2.2 系統(tǒng)的特點和性能指標 現(xiàn)代數(shù)據(jù)采集系統(tǒng)發(fā)展到今天,一般來說具有如下主要特點: ?。?)現(xiàn)代采集系統(tǒng)一般都由計算機控制,使得數(shù)據(jù)采集的質(zhì)量和效率等大為提高,也節(jié)省了硬件投資。 ?。?)軟件在數(shù)據(jù)采集系統(tǒng)中的作用越來越大,增加了系統(tǒng)設(shè)計的靈活性。 ?。?)數(shù)據(jù)采集與數(shù)據(jù)處理相互結(jié)合的日益緊密,形成數(shù)據(jù)采集與處理系統(tǒng),可實現(xiàn)從數(shù)據(jù)采集、處理到控制的全部工作。 (4)數(shù)據(jù)采集過程一般都具有“實時”特性,實時的標準是能滿足實際需要;對于通用采集系統(tǒng)一般希望有盡可能高的速度,以滿足更多的應用環(huán)境。 ?。?)隨著電子技術(shù)的發(fā)展,電路集成度的提高,數(shù)據(jù)采集系統(tǒng)的體積越來越小,可靠性越來越高,甚至出現(xiàn)了單片數(shù)據(jù)采集系統(tǒng)。 ?。?)總線在數(shù)據(jù)采集系統(tǒng)中有著廣泛的應用,總線技術(shù)它對數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)的發(fā)展起著重要作用。 評價一個數(shù)據(jù)采集系統(tǒng)的性能有很多指標,但是一般采用以下幾個比較常用的指標進行評價。 (1)系統(tǒng)分辨率 系統(tǒng)分辨率是指數(shù)據(jù)采集系統(tǒng)可以分辨的輸入信號的最小變化量。通??梢杂萌缦聨追N方法表示系統(tǒng)分辨率: 使用系統(tǒng)所采用的 A/D 轉(zhuǎn)換器的位數(shù)表示系統(tǒng)分辨率; 使用最低有效位值(LSB)占系統(tǒng)滿度值的百分比表示系統(tǒng)分辨率; 使用系統(tǒng)可分辨的實際電壓數(shù)值表示系統(tǒng)分辨率; 使用滿度值可以分的級數(shù)表示系統(tǒng)分辨率。 ?。?)系統(tǒng)精度 系統(tǒng)精度是指當系統(tǒng)工作在額定采集速率下,整個數(shù)據(jù)采集系統(tǒng)所能達到的轉(zhuǎn)換精度。A/D 轉(zhuǎn)換器的精度是系統(tǒng)精度的極限值。實際上,系統(tǒng)精度往往達不到A/D 轉(zhuǎn)換器的精度。因為系統(tǒng)精度取決于系統(tǒng)的各個環(huán)節(jié)(子系統(tǒng))的精度,如前置放大器、濾波器、模擬多路開關(guān)等。只有當這些子系統(tǒng)的精度都明顯優(yōu)于 A/D 轉(zhuǎn)換器的精度時,系統(tǒng)精度才有可能達到 A/D 轉(zhuǎn)換器的精度。系統(tǒng)精度是系統(tǒng)的實際輸出值與理論輸出值之差,它是系統(tǒng)各種誤差的總和,通常表示為滿度值的百分數(shù)。 ?。?)采集速率 采集速率又稱為系統(tǒng)通過速率或吞吐率,是指在滿足系統(tǒng)精度指標的前提下,系統(tǒng)對輸入的模擬信號在單位時間內(nèi)所能完成的采集次數(shù),或者說是系統(tǒng)每個通道、每秒鐘可采集的有效數(shù)據(jù)的數(shù)量。這里說的“采集”包括對被測物理量進行采樣、量化、編碼、傳輸和存儲的全部過程。 ?。?)動態(tài)范圍 動態(tài)范圍是指某個確定的物理量的變化范圍。信號的動態(tài)范圍是指信號的最大幅度和最小幅度之比的分貝數(shù)。 2.3 系統(tǒng)常見的幾種結(jié)構(gòu)形式 ?。?)多通道共享采樣/保持器和 A/D 轉(zhuǎn)換器數(shù)據(jù)采集系統(tǒng) 這種系統(tǒng)構(gòu)成如下圖所示,這種結(jié)構(gòu)形式采用分時轉(zhuǎn)換工作的方式,多路被測信號共用一個采樣/保持器和一個 A/D 轉(zhuǎn)換器。當采樣保持器的輸出已充分逼近輸入信號(按給定精度)時,在控制命令的作用下,采樣保持器由采樣狀態(tài)進入保持狀態(tài),A/D 轉(zhuǎn)換器開始進行轉(zhuǎn)換,轉(zhuǎn)換完畢后輸出數(shù)字信號。在轉(zhuǎn)換期間,多路開關(guān)將下一路信號切換到采樣/保持器的輸入端,系統(tǒng)不斷重復以上的操作,可以實現(xiàn)對多通道模擬信號的數(shù)據(jù)采集。采樣方式可以按順序或隨機進行。 ![]() 多通道共享采樣保持器和 AD 轉(zhuǎn)換器數(shù)據(jù)采集系統(tǒng)圖 這種采集系統(tǒng)結(jié)構(gòu)形式最簡單,所用芯片數(shù)量少,適用于信號變化率不高、對采樣信號不要求同步的場合。如果被測信號變化速率較慢,可以不用采樣保持器,直接進行 A/D 轉(zhuǎn)換。如果信號很弱而干擾噪聲強,需要在系統(tǒng)電路中增加信號放大電路和濾波環(huán)節(jié)。 ?。?)多通道同步數(shù)據(jù)采集系統(tǒng) ![]() 多通道同步型數(shù)據(jù)采集系統(tǒng)圖 其結(jié)構(gòu)如上圖所示,也屬于分時轉(zhuǎn)換系統(tǒng)。 多路模擬輸入信號共用一個 A/D 轉(zhuǎn)換器,但是每個通道各有一個采樣/保持器,在同一采樣指令控制下對各路信號同步進行信號采樣,得到各路信號在同一時刻的瞬時值。模擬開關(guān)分時將各路采樣/保持器切換到 A/D 轉(zhuǎn)換器上,進行模數(shù)轉(zhuǎn)換。這些同步數(shù)據(jù)可以描述各路信號的相位關(guān)系,所以這種結(jié)構(gòu)被稱為同步型數(shù)據(jù)采集系統(tǒng)。 由于各路信號必須串行的在共用的 A/D 轉(zhuǎn)換器中進行轉(zhuǎn)換和計算,若采樣信號回路過多時,這種采集結(jié)構(gòu)的速度仍然較慢。 ?。?)多通道并行數(shù)據(jù)采集系統(tǒng) ![]() 多通道并行數(shù)據(jù)采集系統(tǒng)框圖如上圖所示。這種結(jié)構(gòu)形式中,每個通道都有自己的采樣保持器和A/D轉(zhuǎn)換器,經(jīng)過A/D轉(zhuǎn)換的數(shù)據(jù)經(jīng)過接口電路送到計算機中。相對于前兩種數(shù)據(jù)采集系統(tǒng),這種結(jié)構(gòu)形式的數(shù)據(jù)采集速度最快,但所用的硬件電路復雜,成本較高。 通用型模擬量數(shù)據(jù)采集模塊則屬于這一類的數(shù)據(jù)采集子系統(tǒng)。數(shù)據(jù)采集模塊是屬于單片機的智能器件,在整個數(shù)據(jù)采集系統(tǒng)中,每個模塊可以認為是實時、并行地工作,每個模塊僅完成幾路信號的檢測和采集,實時響應性能優(yōu)。 ?。?)分布式數(shù)據(jù)采集系統(tǒng) 以上介紹的三種結(jié)構(gòu)形式中,系統(tǒng)各部件之間的空間距離很近,邏輯上耦合程度緊密,都可以稱之為數(shù)據(jù)采集系統(tǒng)。這種系統(tǒng)的優(yōu)點是:結(jié)構(gòu)簡單,容易實現(xiàn),能滿足中小規(guī)模的集中數(shù)據(jù)采集的要求。在市面上均有成熟產(chǎn)品可供選用。系統(tǒng)的體積和設(shè)備量小,造價低。 由于工作原理、結(jié)構(gòu)形式和性能設(shè)計等原因,這類系統(tǒng)也存在不少缺點: 因為系統(tǒng)結(jié)構(gòu)不靈活,不易擴展,所以不適合大規(guī)模的數(shù)據(jù)采集應用場合??垢蓴_能力差,尤其對于被測對象物理位置分散、傳感器輸出的微弱信號需要長距離傳輸時,所受的干擾不容忽視的??煽啃圆睢O到y(tǒng)結(jié)構(gòu)中某一部件出現(xiàn)故障會導致整個系統(tǒng)工作崩潰。由于各部件之間緊密耦合,導致系統(tǒng)的可擴展性和靈活性差。分布式數(shù)據(jù)采集系統(tǒng)是數(shù)據(jù)采集技術(shù)、計算機技術(shù)和通信技術(shù)綜合和發(fā)展的產(chǎn)物,基于“分散采集、集中管理”的思想設(shè)計的系統(tǒng)結(jié)構(gòu)形式,由若干個“數(shù)據(jù)采集點”和上位機以及通信接口組成。分布式數(shù)據(jù)采集系統(tǒng)結(jié)構(gòu)如下圖所示: ![]() 分布式數(shù)據(jù)采集系統(tǒng)圖 處于分散部位的數(shù)據(jù)采集點相當于小型的集中數(shù)據(jù)采集系統(tǒng),位于被測對象的附近,可獨立完成數(shù)據(jù)采集和預處理任務,并將采集的數(shù)據(jù)轉(zhuǎn)換為數(shù)字信號的形式傳送給上位機,采用數(shù)據(jù)傳輸?shù)姆椒梢钥朔M信號傳輸?shù)墓逃腥毕荨7植际綌?shù)據(jù)采集系統(tǒng)的主要特點是: ?。?)系統(tǒng)適應能力強。因為可以通過選用適當數(shù)量的數(shù)據(jù)采集點來構(gòu)成相應規(guī)模的系統(tǒng),所以無論是大規(guī)模的系統(tǒng),還是中小規(guī)模的系統(tǒng),分布式結(jié)構(gòu)都能夠適應。 ?。?)系統(tǒng)可靠性高。由于采用了多個數(shù)據(jù)采集點,若某個數(shù)據(jù)采集點出現(xiàn)故障,只會影響某項數(shù)據(jù)的采集,而不會對系統(tǒng)的其他部分造成任何影響。 ?。?)系統(tǒng)實時相應性好。由于系統(tǒng)各個數(shù)據(jù)采集點之間是真正“并行”工作的,所以系統(tǒng)的實時相應性較好。 ?。?)另外,這種數(shù)據(jù)采集系統(tǒng)是用數(shù)字信號傳輸代替模擬信號傳輸,有利于克服常模干擾和共模干擾。因此,這種系統(tǒng)特別適合于在惡劣的環(huán)境下工作。目前對于大規(guī)模的數(shù)據(jù)采集場合一般都采用分布式結(jié)構(gòu),根據(jù)不同的數(shù)據(jù)采集工作原理、結(jié)構(gòu)形式和性能特點,在本系統(tǒng)中采用集中式的數(shù)據(jù)采集器件作為數(shù)據(jù)采集終端,采用上下位的連接方式,最終組成整個數(shù)據(jù)采集系統(tǒng)。 3 MATLAB軟件 3.1 MATLAB 簡介 MATLAB 是美國MathWorks 公司開發(fā)的一種功能極其強大的高技術(shù)計算機語言和內(nèi)容極其豐富的軟件庫,它適合于工程各領(lǐng)域的分析設(shè)計與復雜計算的軟件,該軟件包括基本部分和專業(yè)擴展兩大部分.擴展部分稱為工具箱,用于解決某一方面的專業(yè)問題.它以矩陣和向量的運算以及運算結(jié)果的可視化為基礎(chǔ),把廣泛應用于各個學科領(lǐng)域的數(shù)值分析、矩陣計算、函數(shù)生成、信號處理、圖形及圖像處理、建模與仿真等諸多強大功能集成在一個便于用戶使用的交互式環(huán)境中,為使用者提供了一個高效的編程工具及豐富的算法資源。對于信號處理和圖像處理等數(shù)字處理領(lǐng)域,MATLAB 更是得天獨厚,它豐富的M文件和強大的繪圖可視功能為使用者帶來了極大的方便, 被廣泛的應用于信號與圖像處理、控制系統(tǒng)設(shè)計、通信、系統(tǒng)仿真等諸多領(lǐng)域,尤其對初學者可起到事半功倍之效。 MATLAB是一種解釋語言,所有的程序和指令都必須在MATLAB解釋器中讀入后才能運行,因而極大地限制了代碼執(zhí)行速度。MATLAB強大的計算功能只能在其平臺上才能使用,也就是說,必需在安裝了其解釋器的機器上才能使用MATLAB的M文件,這樣就給工程應用帶來了很大不便。對于一般用戶來講,MATLAB只能作為離線的計算和分析工具,而不能作為實時的工程工具。幸運的是,開發(fā)MATLAB的MathWorks公司為廣大的應用者提供了應用程序接口(API,ApplicationProgram Interface)和編譯器(Compiler)。利用MATLAB和C語言交互,也可以開發(fā)基于MATLAB的數(shù)據(jù)采集系統(tǒng)。如果配上數(shù)據(jù)采集線路,該系統(tǒng)就可以作為一個虛擬儀器來使用。 3.2 數(shù)據(jù)采集工具箱及聲卡簡介 MATLAB 自帶的數(shù)據(jù)采集工具箱(Data Acquisitiontoolbox, DAQ) 能更容易地將實驗測得的數(shù)據(jù)進行分析和可視化操作。數(shù)據(jù)采集設(shè)備包括: 多媒體聲卡、美國國家儀器E系列和1200 系列接口板、Hewlett-Packard-VXIE1432- 系列接口板及其他各種數(shù)據(jù)采集硬件設(shè)備。數(shù)據(jù)采集硬件設(shè)備的內(nèi)部特性對MATLAB 的接口完全透明, 無論是使用一個或幾個硬件設(shè)備, 數(shù)據(jù)采集工具箱都會向所有硬件設(shè)備提供單一和統(tǒng)一的接口。通過調(diào)用MATLAB 命令和函數(shù)可對與計算機兼容的數(shù)據(jù)采集硬件設(shè)備進行訪問并對其屬性進行可視化監(jiān)控。 數(shù)據(jù)采集工具箱是一種建立在MATLAB環(huán)境下的M函數(shù)文件和MEX動態(tài)鏈接庫文件的集合,包含3大區(qū)域的組件:M文件函數(shù)、數(shù)據(jù)采集引擎及硬件驅(qū)動適配器。它具有如下特點:是一種通過使用與PC機兼容的、即插即用的數(shù)據(jù)采集設(shè)備在MATLAB環(huán)境中的架構(gòu);支持模擬信號的輸入輸出以及數(shù)字信號的輸入、輸出,子系統(tǒng)還包括同步模擬輸入輸出的轉(zhuǎn)換;支持聲卡;事件驅(qū)動采集。 在MATLAB數(shù)據(jù)采集工具箱里集成了數(shù)據(jù)采集的M 文件格式的函數(shù)和MEX文件格式的動態(tài)鏈接庫。其主要特征如下: (1)提供了將實時測量數(shù)據(jù)從數(shù)據(jù)采集硬件采集到MATLAB中的框架。 (2)支持模擬量輸入(AI)、模擬量輸出(A0)以及數(shù)字量I/0子系統(tǒng),包括模擬量I/O實時變換。 (3)支持PC聲卡和業(yè)界非常流行的數(shù)據(jù)采集設(shè)備如NI卡、并行口(LPT1-LPT3)、Keithley卡等。 (4)采用事件驅(qū)動模式進行數(shù)據(jù)采集。數(shù)據(jù)采集工具箱由3部分組成:M文件格式的函數(shù)、數(shù)據(jù)采集引擎和硬件驅(qū)動,如圖3-1所示。這些組成部分使得MATLAB與數(shù)據(jù)采集硬件之間的信息傳遞成為可能。 ![]() 圖3-1 數(shù)據(jù)采集引擎與硬件驅(qū)動 目前市面上的數(shù)據(jù)采集卡一般都包含了完整的數(shù)據(jù)采集電路和與計算機的接口電路,如NI公司的E系列數(shù)據(jù)采集卡、研華的數(shù)據(jù)采集卡等, 其價格是與性能成正比的,可以說比較昂貴。在采樣頻率要求不高的情況下,可以利用計算機的聲卡作為數(shù)據(jù)采集的輸入和輸出。而如今聲卡技術(shù)已經(jīng)成熟,成本越來越低。一般的聲卡都可以實現(xiàn)雙通道、16 位、高保真的數(shù)據(jù)采集,采樣率甚至可以達到48KHz。對于許多科學試驗和工程測量來說,其樣本量化精度和采樣率是足夠高的,甚至優(yōu)于目前常用數(shù)據(jù)采集卡的性能。將其用于數(shù)據(jù)采集,性價比相當高。
聲卡是一個非常優(yōu)秀的音頻信號采集系統(tǒng),其數(shù)字信號處理器包括模數(shù)轉(zhuǎn)換器(ADC) 和數(shù)模轉(zhuǎn)換器(DAC) ,ADC 用于采集音頻信號,DAC用于重現(xiàn)這些數(shù)字聲音,轉(zhuǎn)換率達到44.1KHz。聲卡已成為多媒體計算機的一個標準配置,利用聲卡進行采樣與輸出,就不需要購買專門的采集卡可以降低虛擬儀器的開發(fā)成本,且在音頻范圍內(nèi)可以完全滿足實驗要求。 3.3 MATLAB在數(shù)據(jù)采集中的應用 數(shù)據(jù)采集工具箱集成于MATLAB中,所以在進行數(shù)據(jù)采集的同時,可以對采集的數(shù)據(jù)進行實時分析,或者存儲后再進行處理,或者針對數(shù)據(jù)分析的需要對測試條件的設(shè)立進行不斷的更新。應用數(shù)據(jù)采集工具箱提供的命令和函數(shù)可以控制任何類型的數(shù)據(jù)采集。例如,在硬件設(shè)備運行時,可以獲取事件信息,評估采集狀態(tài),定義觸發(fā)器和回訪狀態(tài),預覽數(shù)據(jù)以及進行實時分析,可以設(shè)置和顯示所有的硬件特性以滿足用戶的技術(shù)指標。 4系統(tǒng)設(shè)計方案 聲音信號的采集與分析處理在工程應用中是經(jīng)常需要解決的問題,如何實時采集聲音信號并對其分析處理,從而找出聲音信號的特征在科學研究中是一項非常有意義的工作。 聲卡是多媒體計算機系統(tǒng)中最基本、最常用的硬件之一,其技術(shù)發(fā)展已經(jīng)成熟,它具有AD/DA轉(zhuǎn)換功能,現(xiàn)已被廣泛應用于聲音信號采集和虛擬儀器系統(tǒng)的設(shè)計。MATLAB則是一種功能強大、計算效率高、交互性好的數(shù)學計算和可視化計算機高級語言,它將數(shù)值分析、信號采集與處理和圖形顯示有機地融為一體,形成了一個極其方便、用戶界面友好的操作環(huán)境。本文所設(shè)計的聲音信號采集與分析系統(tǒng)就是充分利用了聲卡的AD/DA轉(zhuǎn)換功能和MATLAB強大的數(shù)據(jù)處理功能,同時,該系統(tǒng)還是建立在MATLAB軟件的圖形界面實現(xiàn)的,因而使系統(tǒng)具有良好的交互性。 基于計算機聲卡的數(shù)據(jù)采集系統(tǒng)有以下特點: ?。?)價格低廉。在數(shù)據(jù)采集時,所要采用的是模數(shù)轉(zhuǎn)換芯片,對于某些應用場合,可以利用計算機上所附帶的聲卡實現(xiàn)數(shù)據(jù)采集任務。 ?。?)靈活性強。用戶不僅可以進行實時監(jiān)視和控制操作,還可以把數(shù)據(jù)保存到硬盤,供以后分析使用。在CPU足夠快的條件下,還可以實時處理數(shù)據(jù),動態(tài)顯示波形的頻譜、功率譜。另外在一臺計算機上,可以插若干塊聲卡,組成多通道數(shù)據(jù)采集系統(tǒng)。 (3)頻率范圍較窄,不能測直流。由于受聲卡的硬件限制,要得到較好的波形,輸入信號的頻率最好在100Hz~15kHz范圍內(nèi)。 總之,運用廉價的聲卡,構(gòu)成一個較高的采樣精度,中等采樣頻率,且具有很大靈活性的數(shù)據(jù)采集系統(tǒng),對于一些應用領(lǐng)域是一種很好的選擇。 4.1 系統(tǒng)結(jié)構(gòu)設(shè)計 MATLAB提供了一個數(shù)據(jù)采集工具箱(Data Acquisition Toolbox),在該數(shù)據(jù)采集工具箱中,有一整套的命令和函數(shù),可用來直接控制與PC機兼容的數(shù)據(jù)采集設(shè)備進行數(shù)據(jù)采集,因此,利用MATLAB的這一工具箱便可進行聲音信號的采集。然后在MATLAB中直接調(diào)用頻譜分析函數(shù)、功率譜分析函數(shù)或數(shù)值分析函數(shù)等,就可以將采集到的聲音信號分別進行頻譜、功率譜分析等多種譜分析。因此,在MATLAB中可以很容易地實現(xiàn)信號采集與分析處理工作。 ![]() 圖4-1系統(tǒng)實現(xiàn)的總體框圖 從系統(tǒng)框圖上看,整個系統(tǒng)結(jié)構(gòu)簡單,而且數(shù)據(jù)的后續(xù)分析方便,不需要再進行數(shù)據(jù)轉(zhuǎn)移,而直接在MATLAB軟件中完成分析處理工作。在該系統(tǒng)中,從硬件上來講,只需必要的信號預處理電路和一臺普通的多媒體計算機(或筆記本電腦)即可;從軟件上來講,則只需使用本文中所編制的程序,便可從聲卡獲取數(shù)據(jù)并保存為文件,然后再可根據(jù)實際需要進行數(shù)據(jù)分析處理。 4.2 系統(tǒng)功能設(shè)計
本系統(tǒng)由數(shù)據(jù)采集和數(shù)據(jù)分析兩大部分組成,數(shù)據(jù)采集部分是實現(xiàn)信號采集功能,根據(jù)用戶選擇的采樣頻率和預設(shè)的采樣樣本數(shù)從聲卡獲得用戶需要的數(shù)據(jù)。數(shù)據(jù)分析部分主要實現(xiàn)以下功能:(1)從信號采集部分獲取數(shù)據(jù),或者從數(shù)據(jù)文件讀取數(shù)據(jù);(2)實現(xiàn)將采集到的聲音信號數(shù)據(jù)進行頻譜分析,畫出頻譜圖以圖形方式很直觀地反映出信號特征;(3)保存數(shù)據(jù),包括保存所有數(shù)據(jù)和部分數(shù)據(jù)的功能,同時保存對應的頻譜數(shù)據(jù);(4)顯示聲音信號數(shù)據(jù)的時域圖和頻譜圖;(5)其他功能。根據(jù)不同的需要,還可以進行修改,以選擇合適的實驗方案。 4.3 系統(tǒng)設(shè)計實現(xiàn) 聲音信號采集功能的實現(xiàn)是由MATLAB控制計算機聲卡將傳感器得到的模擬信號轉(zhuǎn)換為數(shù)字信號并存儲在計算機中;而信號分析功能是將采集得到的數(shù)據(jù)進行時、頻域分析和各項數(shù)值分析等。整個系統(tǒng)設(shè)計主要包括系統(tǒng)的硬件配置、編制程序?qū)崿F(xiàn)數(shù)據(jù)采集、編制程序?qū)崿F(xiàn)數(shù)據(jù)分析及系統(tǒng)的界面設(shè)計四部分。 4.3.1 聲音信號采集的硬件配置 將聲卡插入計算機的PCI插槽,安裝好相應的驅(qū)動程序后,將聲音傳感器設(shè)備與聲卡的模擬輸入端連接起來,這就構(gòu)建了聲音采集的硬件設(shè)備,需要注意的是對聲音傳感器的選擇,應選擇音頻專用電纜或屏蔽電纜以減小噪聲信號的引入,最好能選擇單向性聲音傳感器。在MATLAB的信號采集工具箱中有專門為聲卡生成一個操作對象的函數(shù),初始化該操作對象即能建立MATLAB與聲卡的通信,并為已創(chuàng)建的聲卡設(shè)備對象增加數(shù)據(jù)采集通道和觸發(fā)方式。若缺省設(shè)置則系統(tǒng)采用一個數(shù)據(jù)通道、手動觸發(fā)方式啟動工作。進行數(shù)據(jù)采集時,根據(jù)所配置的聲卡的工作特性和信號分析的設(shè)計要求,可設(shè)置相應的參數(shù)來控制聲卡在數(shù)據(jù)采集時的行為,如采樣頻率、采樣時間、預計模擬信號的輸入/輸出范圍、采樣的出發(fā)方式,采樣點數(shù)據(jù)的存儲等。另外需要注意的一點是采樣頻率是由聲卡的物理特性決定的,實際應用中可以根據(jù)情況選擇一個聲卡支持的采樣頻率.MATLAB支持電平觸發(fā)、事件觸發(fā)和手動觸發(fā)三種方式來啟動數(shù)據(jù)采集工作。聲音信號采集硬件配置的具體實現(xiàn)過程: sound=analoginput(‘winsound’);% ‘winsound’為聲卡的驅(qū)動程序 channel=addchannel(sound,1);% 添加通道為單聲道 set(sound, ‘SampleRate’,44100);% 設(shè)置采樣頻率為44100Hz set(sound, ‘SamplesPerTrigger’,22050);% 設(shè)置采樣時間為0.5s set(sound, ‘TriggerType’, ‘manual’);% 設(shè)置觸發(fā)方式為手工觸發(fā) ...% 其它的相關(guān)設(shè)置 4.3.2 數(shù)據(jù)采集 啟動設(shè)備對象,控制聲卡開始采集數(shù)據(jù),采集過程中可以向聲卡發(fā)送控制命令,如暫停采集、退出采集等。采集到的數(shù)據(jù)被暫時存放在計算機的內(nèi)存中,理論上可采集的最大數(shù)據(jù)量是由計算機的內(nèi)存量所決定的。同時, MATLAB能夠記錄采集設(shè)備的硬件屬性、采集的啟動時刻、采集時間、采樣頻率及采樣通道等信息,如果采集過程中出現(xiàn)了錯誤,則出錯的時刻、錯誤產(chǎn)生的來源等信息也都會被記錄下來供后續(xù)工作參考。需要注意的是,執(zhí)行完一次數(shù)據(jù)采集工作后應刪除設(shè)備對象,將內(nèi)存中的數(shù)據(jù)存儲在硬盤上之后釋放數(shù)據(jù)存儲所占用的內(nèi)存空間,以備下一次采集能有足夠的內(nèi)存空間存儲新的數(shù)據(jù),聲音信號采集的實現(xiàn)程序為: start(sound);% 啟動設(shè)備對象 try time=0;data=0; [data,time]=getdata(sound);% 獲取采樣數(shù)據(jù) catch time=0;data=0;disp(‘A timeout occurred’); end stop(sound);% 停止設(shè)備對象 delete(sound);% 刪除設(shè)備對象 4.3.3 數(shù)據(jù)分析 在設(shè)計該部分時,不僅要求實現(xiàn)能從數(shù)據(jù)采集部分直接獲取數(shù)據(jù),還需實現(xiàn)能從文件中讀取以前所保持好的數(shù)據(jù)。之后,用戶可以根據(jù)實際研究的需要,在MATLAB中調(diào)用頻譜分析函數(shù)(periodogram等)、功率譜分析函數(shù)(psd等)或數(shù)值分析函數(shù)(fminbnd等),就可以將采集到的聲音信號分別進行頻譜、功率譜分析等多種譜分析,并且可方便地將分析結(jié)果以圖形的形式顯示出來,如圖4-2所示。在研究蛋殼破損自動檢測過程中,通過對所采集的蛋殼聲音信號進行頻譜分析,找出區(qū)分損殼蛋與好殼蛋的特征變量,從而實現(xiàn)蛋殼破損的自動檢測。對所采集的聲音信號進行頻譜分析的程序為: ...% 獲取采樣數(shù)據(jù) Px=abs(fft(data,512)) 2/512;% 對所采集的數(shù)據(jù)進行傅立葉變換 px=Px(1:256); s=60+10*log10(px); ...% 其它功能 ![]() 圖4-2 聲音信號的采集與頻譜分析 4.3.4 系統(tǒng)界面設(shè)計 利用MATLAB軟件中GUI模塊進行設(shè)計,在MATLAB中可以方便地設(shè)計出基于對話框的圖形用戶界面,它提供了諸如編輯框、按鈕、滾動條等圖形對象,通過對這些圖形對象的有機組合,再對相應的圖形對象編寫程序,就可以設(shè)計出界面友好、操作方便的系統(tǒng)軟件。圖4-2所示為聲音信號采集與頻譜分析系統(tǒng)的運行界面,還可再根據(jù)實際需要進行擴展。 建立基于聲卡和MATLAB的信號采集與分析系統(tǒng),能夠?qū)崿F(xiàn)信號采集、設(shè)備控制、數(shù)據(jù)分析以及結(jié)果顯示等功能。實踐證明該系統(tǒng)具有精度高、實時性好、性價比高、人機界面友好、升級修改簡單等優(yōu)點。在進行項目研究過程中,常常需要進行多次實驗,采集大量的數(shù)據(jù),并且要求對數(shù)據(jù)能實時地進行分析處理,該系統(tǒng)能很好地滿足這種研究需要。此外,這一系統(tǒng)還可以擴展應用到其他相關(guān)的領(lǐng)域中,如在語音識別工作中可以用該系統(tǒng)采集語音信號并且加入語音處理的相關(guān)分析等。因此,該系統(tǒng)不僅具有良好的實用性,還可為其他的相關(guān)研究提供理論和應用基礎(chǔ)。 語音信號分析處理系統(tǒng)一般由聲電傳感器(麥克風) 、數(shù)據(jù)采集卡、處理器(計算機) 、軟件系統(tǒng)等幾部分組成。商品數(shù)據(jù)采集卡(A/ D 板) 都包含了完整的數(shù)據(jù)采集電路和計算機接口電路,并同時提供驅(qū)動程序,產(chǎn)品和種類繁多,性能價格各異,價格一般都比較貴。PC 機的聲卡本身就是一個廉價同時又非常優(yōu)秀的語音信號采集系統(tǒng),它采用直接內(nèi)存讀取方式傳輸數(shù)據(jù),極大地降低了CPU 的占用率;不僅如此,聲卡16 位的A/ D 轉(zhuǎn)換精度比普通16 位A/ D 卡要高,能夠滿足語音信號采集分析要求。 5 應用設(shè)計 一、 對聲卡產(chǎn)生的模擬輸入對象(AI) 進行操作 聲卡是MATLAB數(shù)據(jù)采集工具箱所支持的一種硬件,用聲卡完成一個簡單的數(shù)據(jù)采集過程,麥克風就成了數(shù)據(jù)采集系統(tǒng)中的傳感器. 1)創(chuàng)建設(shè)備對象,這里創(chuàng)建的是一個聲卡AI設(shè)備對象,硬件設(shè)備標示符為2. ai=analoginput(‘winsound’,2); 2)給設(shè)備對象添加通道,這里添加1個通道. addchannel(ai,1); 3)設(shè)定設(shè)備屬性值,控制數(shù)據(jù)采集. freq=8 000; \采樣頻率8 000 Hz set(AI,SampleRate.freq) duration=2; \采樣時間2 s set(AI,SamplesPerTrigger,duration*freq); 4)數(shù)據(jù)采集及結(jié)果處理.在這里首先將所采集到的數(shù)據(jù)進行快速傅立葉變換,然后轉(zhuǎn)化成分貝,并顯示結(jié)果的實數(shù)部分. start(ai); data=getdata(ai); fftdata= abs(fft(data)); mag =20*logl0(fftdata); mag= mag(1:end/2); 5)清除內(nèi)存中的設(shè)備對象. delete(ai); clear ai; ![]() 圖5-1 采樣過程中沒有對麥克風講話 ![]() 圖5-2 采樣過程中對麥克風講話 結(jié)果分析:圖5-1是在采樣過程中打開麥克風,但是沒有對麥克風講話的結(jié)果(對不同品牌、質(zhì)量的聲卡,結(jié)果可能有所不同),圖5-2是在采樣的過程中對麥克風講話的結(jié)果.可以看出,講話與否(傳感器感受端的變化)改變了所采集到的數(shù)據(jù)的結(jié)果. 二、 直接利用MATLAB數(shù)據(jù)采集箱中提供的函數(shù)命令進行采集 一般的采樣過程是對聲卡產(chǎn)生的模擬輸入對象(AI) 進行操作的,由于計算機配置和模擬通道的運用使得數(shù)據(jù)采集過程顯得煩瑣難以理解,有時還不易獲得采樣數(shù)據(jù)。實驗過程發(fā)現(xiàn)一種更為簡單實用的方法可以進行數(shù)據(jù)采集。在闡述之前,首先介紹一下MATLAB數(shù)據(jù)采集箱中的幾條有關(guān)命令: wavrecord : wavrecord 利用Windows 音頻輸入設(shè)備記錄聲音,其調(diào)用形式為:wavrecord (n ,fs ,ch) 。利用Windows音頻輸入設(shè)備記錄n個音頻采樣, 頻率為fs Hz ,通道數(shù)為ch。采樣值返回到一個大小為n*ch 的矩陣中。缺省時,fs = 11025 ,ch = 1。 waveplay: waveplay 利用Windows音頻輸出設(shè)備播放聲音,其調(diào)用形為:waveplay(y ,fs) 。以采樣頻率fs向Windows 音頻設(shè)備發(fā)送向量信號。標準的音頻采樣率有:8000、11025、22050 和44100Hz。 wavread :wavread 用于讀取Microsoft 的擴展名為“.wav”的聲音文件。其調(diào)用形式為: y = wavread (file) 。其作用是從字符串file 所指的文件路徑讀取wave 文件,將讀取的采樣數(shù)據(jù)送到y(tǒng) 中。Y的取值范圍: [ -1 ,1 ] 。 sound:音頻信號是以向量的形式表示聲音采樣的。sound 函數(shù)用于將向量轉(zhuǎn)換為聲音,其調(diào)用形式為:sound (y ,fs) ,作用是向揚聲器送出向量y 中的音頻信號(采樣頻率為fs) 。 應用上述所講到的MATLAB數(shù)據(jù)采集箱提供的函數(shù)進行一次簡單的語音信號的采集實驗。記錄5 秒鐘的8 位音頻語音信號并回放之, 采樣頻率設(shè)為11025Hz。 ﹥﹥fs = 11025 ; \ 設(shè)置采樣頻率 ﹥﹥y1 = wavrecord (5*fs ,fs ,‘uint8’) ; \ 進行無語音采集 ﹥﹥plot (y1) ; ﹥﹥y2 =wavrecord (5*fs ,fs ,‘uint8’) ; \ 開始采集8位語音信號,時間為5s ﹥﹥plot (y2) ; ﹥﹥wavplay(y2 ,fs) ; \ 回放所采集的語音 ﹥﹥sound (y2 ,fs) ; ﹥﹥y1 =fft (y2) ; \ 做信號的fft 變換 ﹥﹥plot (y2) ; ![]() 圖5-3 無聲音信號輸入波形 ![]() 圖5-4 有聲音信號輸入波形 ![]() 圖5-5 聲音信號傅里葉變換 圖形分析:用戶可以變換采樣頻率及采樣時間,也可以不同的頻率回放語音。感受不同函數(shù)在相同的頻率下回放的語音信號是否一致。此例進行的是實時回放,若要事后回放則可用wavread 函數(shù)。從程序語言及實現(xiàn)上可看出此方法簡便了許多,而且實驗結(jié)果與傳統(tǒng)方法得到的實驗結(jié)果完全一致。圖5-3為在采樣過程中打開麥克風,但是沒有對麥克風講話的結(jié)果(對不同品牌、質(zhì)量的聲卡,結(jié)果可能不同) ,從圖上可以看到除開始采樣的極短一段時間內(nèi)有個信號接收過程產(chǎn)生階躍外,其余時間內(nèi)波形都在很小的范圍內(nèi)平穩(wěn)的波動。圖5-4是采樣過程中對麥克風講話的結(jié)果,可以看出,講話(傳感器端接收到信號)改變了采集的數(shù)據(jù)的結(jié)果。從圖5-4中看出波形發(fā)生了很大的變化,波形隨聲音信號的高低強弱而發(fā)生變化,可知計算機已經(jīng)通過麥克風接收到了語音信號,說明信號采集工作成功。圖5-5為對采集到的信號進行的快速傅立葉變換所得到的圖形。 上面介紹的基于聲卡和MATLAB的語音數(shù)據(jù)采集系統(tǒng),具有實現(xiàn)簡單、性價比和靈活度高的特點。經(jīng)實例分析證明,利用該系統(tǒng)可實現(xiàn)在線連續(xù)采集語音信號并進行分析和處理。 應用前文所述的MATLAB 數(shù)據(jù)采集工具箱提供的命令函數(shù)和系統(tǒng)環(huán)境為Windows98 的計算機上的板載聲卡進行簡單數(shù)據(jù)采集。記錄5s的16 bit音頻語音信號并回放, 采樣頻率設(shè)為11025 Hz。 fs=11025 %設(shè)置采樣頻率 y1=wavrecord( 5*fs, fs, ‘unit16’) %進行無語音采集 plot( y1) %畫出所采集到的信號的波形 y2=wavrecord( 5*fs, fs, ‘unit16’) %進行語音采集 wavplay( y1, fs) sound( y2, fs) %回放所采集的語音 圖5-6是用MATLAB的DAQ工具箱中的命令函數(shù)的方法采集數(shù)據(jù), 采樣過程中傳聲器無語音輸入;圖5-7是用創(chuàng)建聲卡設(shè)備對象的方法采集數(shù)據(jù), 采樣過程中傳聲器有語音輸入。 ![]() 圖5-6 傳聲器無語音輸入 ![]() 圖5-7 傳聲器有語音輸入 |
|