本發明涉及聲音數據表示與存儲,特別是涉及一種基于模板技術的聲音采集數據壓縮與存儲方法及其系統。
背景技術:
1、機器聲音反映了機器的運行狀況并可能預示著設備問題,利用機器聲音進行異常檢測是方便、易用、無損不停機檢測的一種方法,也是工業智能化、自動化領域的熱門研究方向。而為了更加準確地分析出機器聲音表達出來的信息,需要采集質量高、數量多的聲音數據,這就對磁盤存儲空間具有很高的要求,需要大量的磁盤存儲空間和網絡帶寬。
2、目前,對數據規模比較大的實時監測數據存儲方法主要包括以下幾種:
3、(1)二進制數據存儲:首先通過采樣將連續的模擬信號轉換為離散的振幅值,然后進行量化將這些振幅值映射為固定位數的二進制數字。這些數字以連續的方式存儲在計算機內存或磁盤上,構成了pcm(脈沖編碼調制)形式的聲音數據。在實際應用中,聲音文件可能包含附加的元數據,而不同的編碼方式如mp3、aac則引入更為復雜的算法以在減小文件大小的同時保持音頻質量。
4、(2)聲音文件存儲:可以存儲將機器采集到的聲音數據保存在計算機本地磁盤中,可以選擇不同的存儲格式,如wav、mp3等。也可以存儲在分布式文件系統中,如hadoop的hdfs和谷歌的gfs等,采用分布式存儲的方式,將文件劃分成多個塊并存儲在不同的節點上,實現高可靠性和高性能的數據存儲。
5、(3)數據庫存儲:將機器采集到的聲音數據存儲在分布式數據庫系統hbase中,以便進行快速查詢、分析和檢索。
6、上述存儲方法中,二進制形式的聲音數據存儲,原始的pcm數據是非壓縮的,無法充分利用資源,且在實時傳輸應用中可能引入延遲。并且,對于一些特殊應用如語音識別,可能需要額外的處理或轉換。文件存儲音頻數據的缺點包括占用大量存儲空間、傳輸速度慢、對實時訪問的限制、易受損、備份和恢復復雜、耗電量相對較高以及數據有安全性風險,影響了存儲效率、讀寫性能。使用hbase提供的數據壓縮功能可以在一定程度上優化數據存儲和訪問效率,但是由于壓縮算法需要占用cpu資源對數據進行壓縮和解壓縮,因此采用較高壓縮比的算法可能會導致讀寫性能的下降,特別是對于數據量巨大的聲音檢測數據。
7、綜上所述,對于大規模的實時監測數據,這些存儲方法存在存儲開銷較大、檢索速度慢、網絡帶寬要求高等問題。因此亟需提供一種新型的基于模板技術的聲音采集數據壓縮與存儲方法及其系統來解決上述問題。
技術實現思路
1、本發明所要解決的技術問題是提供一種基于模板技術的聲音采集數據壓縮與存儲方法及其系統,能夠針對有固定運行場景的機器設備,提出一種機器聲音數據壓縮存儲方法,并對大規模聲音數據索引優化,用來降低聲音數據的存儲成本和檢索時間的同時不影響讀寫性能。
2、為解決上述技術問題,本發明采用的第一個技術方案是:提供一種基于模板技術的聲音采集數據壓縮與存儲方法,包括以下步驟:
3、s1:根據機器運行場景建立相應模板聲紋庫,模板聲紋庫中存儲有模板聲音片段及其編碼;
4、s2:利用步驟s1建立的模板聲紋庫針對該機器運行場景的聲音數據進行數據采集;當新存儲聲音數據時,需要與所述模板聲紋庫進行匹配,模板聲紋庫已有的典型場景數據只需存入模板聲紋庫中對應的數據編碼,模板聲紋庫中沒有的聲音數據則存入新建的機器聲紋庫中,并進行編碼;同時將模板聲紋庫中數據的編碼及機器聲紋庫中數據的編碼均存入一數據索引表中;
5、s3:當進行數據調用時,調用所述數據索引表,根據數據索引表存儲的索引,在所述模板聲紋庫和機器聲紋庫中查找數據并輸出。
6、在本發明一個較佳實施例中,在步驟s1中,建立模板聲紋庫的具體步驟包括:
7、s101:判斷聲音采樣數據是否為空,若為空,則結束流程;若不為空,則進入下一步驟;
8、s102:對聲音采樣數據進行固定時長分段,再對分段之后的數據分片;
9、s103:對分片之后的每一幀聲音數據進行命名標注編碼;
10、s104:創建一個候選模板庫,當候選模板庫為空的時候均方誤差設置為無窮大,與預設的閾值進行比較,顯然均方誤差大于閾值,則對第一個聲音分片數據進行編碼,并存入候選模板庫中;
11、s105:當候選模板庫不為空的時候,將剩余的聲音分片數據與候選模板庫中的聲音分片數據進行計算均方誤差,若計算的均方誤差小于等于閾值,則獲取該聲音分片數據的編碼,記錄該聲音分片數據出現次數n=n+1,并且對n的大小進行判斷,如果此聲音分片數據出現到達設定次數,則判定此聲音分片數據為典型的場景聲音,把此聲音分片數據和編碼進行復制存入模板聲紋庫,否則把該聲音分片數據出現的次數加一,并更新候選模板庫;若計算的均方誤差大于閾值,則對該聲音分片數據進行編碼,并存入候選模板庫中。
12、進一步的,在步驟s102中,數據分片的具體步驟包括:
13、s1021:對聲音采樣數據確定聲音周期;
14、s1022:將固定時長的聲音數據的長度設置為聲音周期的整數倍,作為滑動窗口的長度;
15、s1023:設置滑動窗口步長,即每次滑動的距離;
16、s1024:根據總聲音數據段的時長和滑動窗口的步長,計算需要的分片數量來覆蓋整個聲音數據,分片數量=((總聲音時長?-?滑動窗口長度)/步長)+1;
17、s1025:使用滑動窗口,從聲音數據的起始位置開始,以設定的滑動窗口步長滑動窗口,并將每個窗口視為一個分片,完成聲音數據的分割。
18、在本發明一個較佳實施例中,步驟s2的具體步驟包括:
19、s201:判斷聲音采樣數據是否為空,若為空,則結束流程;若不為空,則進入下一步驟;
20、s202:對聲音采樣數據進行固定時長分段,再對分段之后的數據分片,得到分片數據;
21、s203:把所述分片數據與模板聲紋庫中的數據進行比較,計算均方誤差,若計算的均方誤差小于等于閾值,則獲取模板聲紋庫中該分片數據對應的編碼,并存儲在建立的數據索引表中;若計算的均方誤差大于閾值,則對該分片數據進行編碼,將該分片數據及編碼存入機器聲紋庫中,同時將該分片數據的編碼存入所述數據索引表中。
22、進一步的,所述編碼采用字母和數字組合的形式,用來唯一的表示一段聲音數據。
23、在本發明一個較佳實施例中,步驟s3的具體步驟包括:
24、s301:進行數據調用時,調用所述數據索引表,根據數據索引表檢索數據;
25、s302:在所述模板聲紋庫和機器聲紋庫中判斷所要檢索的索引是否存在;
26、s303:若存在,則在所述模板聲紋庫和機器聲紋庫中查找數據,并且返回該數據;若不存在,則返回null值。
27、為解決上述技術問題,本發明采用的第二個技術方案是:提供一種基于模板技術的聲音采集數據壓縮與存儲系統,包括:
28、模板聲紋庫建立模塊,用于根據機器運行場景建立相應模板聲紋庫,模板聲紋庫中存儲有模板聲音片段及其編碼;
29、數據存儲模塊,用于利用所述模板聲紋庫建立的模板聲紋庫針對該機器運行場景的聲音數據進行數據采集;當新存儲聲音數據時,需要與所述模板聲紋庫進行匹配,模板聲紋庫已有的典型場景數據只需存入模板聲紋庫中對應的數據編碼,模板聲紋庫中沒有的聲音數據則存入新建的機器聲紋庫中,并進行編碼;同時將模板聲紋庫中數據的編碼及機器聲音數據庫中數據的編碼均存入一數據索引表中;
30、數據調用模塊,用于當進行數據調用時,調用所述數據索引表,根據數據索引表存儲的索引,在所述模板聲紋庫和機器聲紋庫中查找數據并輸出。
31、在本發明一個較佳實施例中,所述模板聲紋庫建立模塊根據機器運行場景建立相應模板聲紋庫的具體步驟包括:
32、s101:判斷聲音采樣數據是否為空,若為空,則結束流程;若不為空,則進入下一步驟;
33、s102:對聲音采樣數據進行固定時長分段,再對分段之后的數據分片;
34、s103:對分片之后的每一幀聲音數據進行命名標注編碼;
35、s104:創建一個候選模板庫,當候選模板庫為空的時候均方誤差設置為無窮大,與預設的閾值進行比較,顯然均方誤差大于閾值,則對第一個聲音分片數據進行編碼,并存入候選模板庫中;
36、s105:當候選模板庫不為空的時候,將剩余的聲音分片數據與候選模板庫中的聲音分片數據進行計算均方誤差,若計算的均方誤差小于等于閾值,則獲取該聲音分片數據的編碼,記錄該聲音分片數據出現次數n=n+1,并且對n的大小進行判斷,如果此聲音分片數據出現到達設定次數,則判定此聲音分片數據為典型的場景聲音,把此聲音分片數據和編碼進行復制存入模板聲紋庫,否則把該聲音分片數據出現的次數加一,并更新候選模板庫;若計算的均方誤差大于閾值,則對該聲音分片數據進行編碼,并存入候選模板庫中。
37、為解決上述技術問題,本發明采用的第三個技術方案是:提供一種基于模板技術的聲音采集數據壓縮與存儲的裝置,包括存儲器和處理器,所述存儲器用于存儲至少一個程序,所述處理器用于加載所述至少一個程序以執行上述任一項所述方法。
38、為解決上述技術問題,本發明采用的第四個技術方案是:提供一種計算機可讀存儲介質,其中存儲有處理器可執行的指令,所述處理器可執行的指令在由處理器執行時用于執行如上任一項所述方法。
39、本發明的有益效果是:本發明針對聲學設備建模分析需要大規模的聲音數據時,進行多通道實時數據采集時會耗費大量存儲空間和網絡帶寬等問題,提出了一種數據壓縮存儲方法,對機器聲音采集數據進行壓縮表示和存儲,可以有效地降低數據規模、存儲成本以及網絡帶寬,并能實現機器運行聲音數據快速檢索。