在實(shí)時(shí)通訊技術(shù)迅猛發(fā)展的今天,人們對(duì)通話時(shí)的降噪要求也不斷提高。深度學(xué)習(xí)也被應(yīng)用于實(shí)時(shí)的噪聲抑制。本次LiveVideoStackCon 2021 上海站中,我們邀請(qǐng)到了聲網(wǎng)Agora音頻算法負(fù)責(zé)人馮建元老師為我們分享深度學(xué)習(xí)落地移動(dòng)端的范例,遇到的問(wèn)題和未來(lái)的展望。
今天給大家介紹一下我們?cè)谌绾位谏疃葘W(xué)習(xí)做實(shí)時(shí)噪聲抑制,這也是一個(gè)深度學(xué)習(xí)落地移動(dòng)端的范例。 我們就按照這樣一個(gè)順序來(lái)進(jìn)行介紹。首先噪聲其實(shí)是有一些不同的種類,它們是如何進(jìn)行分類的,如何選擇算法并怎樣通過(guò)算法去解決這些噪聲的問(wèn)題;另外,會(huì)介紹如何通過(guò)深度學(xué)習(xí)的方式去設(shè)計(jì)一些這樣的網(wǎng)絡(luò),如何通過(guò)AI的模型去進(jìn)行算法的設(shè)計(jì);
另外,我們都知道深度學(xué)習(xí)網(wǎng)絡(luò)的算力,模型不可避免的都會(huì)比較大。我們?cè)诼涞匾恍㏑TC的場(chǎng)景時(shí),不可避免會(huì)遇到一些問(wèn)題,有哪些問(wèn)題是需要我們解決的,如何解決模型大小的問(wèn)題、算力的問(wèn)題;最后會(huì)介紹目前降噪能達(dá)到什么樣的效果和一些應(yīng)用的場(chǎng)景,以及如何能將噪聲抑制等做得更好。
01.噪聲的分類與降噪算法的選擇
先了解下我們平時(shí)的噪聲都有哪些種類。
其實(shí)噪聲不可避免的會(huì)跟著你所處的環(huán)境,所面臨的物體都會(huì)發(fā)出各種各樣的聲音。其實(shí)每一個(gè)聲音都有自己的意義,但如果你在進(jìn)行實(shí)時(shí)溝通時(shí),只有人聲是有意義的,那其他聲音你可能會(huì)把它認(rèn)為是噪音。其實(shí)很多噪聲是一個(gè)穩(wěn)態(tài)的噪聲,或者說(shuō)平穩(wěn)的噪聲。比如說(shuō)我這種錄制的時(shí)候可能會(huì)有一些底噪,你現(xiàn)在可能聽(tīng)不到。
比如說(shuō)空調(diào)運(yùn)行時(shí)會(huì)有一些呼呼的風(fēng)聲。像這些噪聲都是一些平穩(wěn)的噪聲,它不會(huì)隨著時(shí)間變化而去變化。這種可以通過(guò)我知道這個(gè)噪聲之前是什么樣的,我把它estimate出來(lái),就通過(guò)這樣的方式,在之后如果這個(gè)噪聲一直出現(xiàn)就可以通過(guò)很簡(jiǎn)單的減法的方式把它去掉。像這種平穩(wěn)的噪聲其實(shí)很常見(jiàn),但其實(shí)不是都那么平穩(wěn),都能那么方便的去去除。
另外,還有很多噪聲是不平穩(wěn)的,你不能預(yù)測(cè)這個(gè)房間里會(huì)不會(huì)有人突然手機(jī)鈴聲響起來(lái)了;突然有人在旁邊放了一段音樂(lè)或者在地鐵、在馬路上車子呼嘯而過(guò)的聲音。這種聲音都是隨機(jī)出現(xiàn)的,是不可能通過(guò)預(yù)測(cè)的方式去解決的。其實(shí)這塊也是我們會(huì)用深度學(xué)習(xí)的原因,像傳統(tǒng)的算法對(duì)于非穩(wěn)態(tài)的噪聲會(huì)難以消除和抑制。
在使用場(chǎng)景上來(lái)說(shuō),就算你是很安靜的會(huì)議室或者在家,可能也不可避免的會(huì)被設(shè)備引入的一些底噪或一些突發(fā)的噪聲都會(huì)產(chǎn)生一些影響。這一塊也是在實(shí)時(shí)通訊中不可避免的一道前處理的工序。
拋開(kāi)我們平時(shí)會(huì)碰到的這些噪聲在感官上的理解??吹剿跀?shù)字方面,在信號(hào)層面是一個(gè)怎么樣的表現(xiàn)。噪聲,聲音都是通過(guò)空氣的傳播介質(zhì)的傳播最后到你耳朵里,通過(guò)你耳毛的感應(yīng),最后形成心里的感知。在這些過(guò)程中,比如我們采用一些麥克風(fēng)的信號(hào),在一些采集的時(shí)候它是一個(gè)wave的信號(hào)。
它是一些上下震蕩的一些波形。那如果是干凈的人聲,他說(shuō)話的時(shí)候會(huì)看到一些波形,他不說(shuō)話的時(shí)候基本就是0,那如果加上一些噪聲它就會(huì)變成右邊一樣,會(huì)有波形上的一些混疊,噪聲的震動(dòng)會(huì)和人聲的震動(dòng)混疊在一起,會(huì)有一些模糊不清。即使不在說(shuō)話也會(huì)有一些波形。這是直接從wave信號(hào)的層面,如果說(shuō)把它通過(guò)傅里葉變換,變到頻域上來(lái)看,在不同的頻率上,人聲的發(fā)音一般在20赫茲到2k赫茲之間,人還會(huì)有基頻、振峰、諧波的產(chǎn)生。
你可以看到人在頻譜上是這樣一些形狀,但是你加上噪聲會(huì)發(fā)現(xiàn)頻譜變得模糊不清,頻譜不該出現(xiàn)能量的地方有很多能量。
做噪聲抑制其實(shí)就是做一個(gè)inverse,一個(gè)反向的過(guò)程。把這些時(shí)域的信號(hào)通過(guò)一些濾波的方式變成一個(gè)純凈的信號(hào)。也可以通過(guò)頻域的方式把這些嘈雜的噪點(diǎn)去掉,形成一些比較純凈的語(yǔ)料。
降噪這種算法很早之前就有了,在貝爾實(shí)驗(yàn)室發(fā)明電話的時(shí)候就發(fā)現(xiàn)噪聲會(huì)有很大的通信的影響。不同的信噪比會(huì)導(dǎo)致由于香農(nóng)定理影響你的帶寬,你是一個(gè)純凈的信號(hào)甚至可以用比較小的帶寬進(jìn)行一個(gè)傳輸。在2000年之前我們可以把這些算法統(tǒng)稱為,知之為知之。 第一塊,它們主要針對(duì)比較穩(wěn)態(tài)的噪聲就是Stationary Noise,為什么叫知之為知之呢,就是你不再說(shuō)話沒(méi)有人聲的時(shí)候就只有噪聲,另外你去通過(guò)靜音段噪聲的捕捉去構(gòu)建出噪聲的一些分布。
因?yàn)樗欠€(wěn)態(tài)的噪聲,它隨著時(shí)間的變化也沒(méi)有那么劇烈,以后就算是有人聲了,你也可以通過(guò)你estimate好的模型去進(jìn)行一些譜減或者是維納濾波的方式解決。像這種Stationary Noise是因?yàn)橐婚_(kāi)始我們的元器件有很多底噪,所以他們第一個(gè)會(huì)干掉這種Stationary Noise的噪聲。其實(shí)方法來(lái)說(shuō)就是一些譜減法、維納濾波,后來(lái)可能有高級(jí)一點(diǎn)波差、小波分解,這些方法都萬(wàn)變不離其宗,它會(huì)通過(guò)靜音段estimate它的這樣的noise,在以后的過(guò)程中就可以通過(guò)一些譜減的方法來(lái)解決。
慢慢大家會(huì)發(fā)現(xiàn)除了Stationary Noise其實(shí)平時(shí)通話中想要只保有人聲,其他的噪聲也要處理,這塊到了2000年之后我們會(huì)說(shuō),因?yàn)槠鋵?shí)人的聲音的分布和風(fēng)的聲音的分布是不一樣的,有些風(fēng)聲經(jīng)過(guò)麥克風(fēng)的,比如我這樣吹的,低頻部分可能會(huì)高一些,高頻部分可能衰減的更快。其實(shí)都是通過(guò)聚類的方式可以把人聲和噪聲分解開(kāi)來(lái),主要的思想都是把聲音的信號(hào)投射到更高維的空間進(jìn)行聚類,聚類的方式就會(huì)有些自適應(yīng)的方法慢慢可以去使用,也類似于深度學(xué)習(xí)的前身,會(huì)把聲音分成不同的種類,在高維空間進(jìn)行降噪時(shí)把符合人聲的特點(diǎn)保留下來(lái),其他部分舍去就可以做到。
這塊方法來(lái)說(shuō)比如Subspace 空間分解,在圖像領(lǐng)域大獲成功,在音頻領(lǐng)域去風(fēng)噪也比較好的非負(fù)矩陣分解。再比如說(shuō)不止一種噪聲,要分解出好多種噪聲,像字典學(xué)習(xí)這種方式也是可以做的。 像常見(jiàn)的一種噪聲我們把它叫Non-Stationary Noise with Simple Patterns,是不穩(wěn)定的噪聲,像呼呼的風(fēng)聲,但它可能有固定的模式。
比如呼呼的風(fēng)聲有時(shí)出現(xiàn)有時(shí)沒(méi)有出現(xiàn),但它是遵循風(fēng)的低頻比較密集等等這種特征。其中是可以通過(guò)一個(gè)一個(gè)去學(xué)習(xí),比如風(fēng)聲、雷電的聲音、底噪的聲音等等,可以通過(guò)學(xué)習(xí)的方式去實(shí)現(xiàn)。現(xiàn)在我們發(fā)現(xiàn),物以類聚的話,噪聲的種類是無(wú)窮無(wú)盡的,每一種機(jī)械每一種摩擦每一種風(fēng)吹過(guò)的聲音導(dǎo)致的渦流可能都是不一樣的。
在這種情況下很多噪聲混疊我們無(wú)法去窮盡,這時(shí)候我們就想到通過(guò)大量數(shù)據(jù)去訓(xùn)練一個(gè)模型,這樣采集到的噪聲也好人聲的混加也好,能過(guò)通過(guò)不斷的去學(xué)習(xí),我們叫它熟能生巧2020。通過(guò)訓(xùn)練的方式,通過(guò)大量的數(shù)據(jù)樣本,能讓模型學(xué)到足夠的知識(shí),對(duì)噪聲更加魯棒,不用一個(gè)一個(gè)去做分解。 按照這樣的思路,已經(jīng)有很多深度學(xué)習(xí)的模型可以做到這樣噪聲的抑制,同時(shí)保證它對(duì)不同的噪聲都有抑制效果。
很多噪聲不是單一存在的,尤其是一些復(fù)合的噪聲。比如你在一個(gè)咖啡館里可能會(huì)聽(tīng)到那些觥籌交錯(cuò)的聲音混雜著各種人在聊天談話的聲音。我們把背景的人聲叫Babble noise,Babble就是呢喃的聲音,這種背景的噪聲你也是想去掉的。多個(gè)聲音混雜在一起你就會(huì)發(fā)現(xiàn)它的頻譜就像洪水過(guò)路一般所有東西都混雜在里面,會(huì)很難去去除。
如果你用傳統(tǒng)的算法,它把明顯的人聲會(huì)保留,比較高頻的混疊會(huì)更加嚴(yán)重,其實(shí)很難去區(qū)分開(kāi),它把在4k以上的高頻統(tǒng)一當(dāng)成噪聲去除掉了。這是傳統(tǒng)降噪方法的一些缺陷。 像深度學(xué)習(xí)的方法,判斷一個(gè)降噪方法的好壞主要是兩點(diǎn): 第一點(diǎn),對(duì)原聲人聲的保留程度是怎么樣的,是不是對(duì)語(yǔ)譜的損傷盡量的小。 第二點(diǎn),把噪聲去得盡量的干凈。 滿足這兩點(diǎn),右邊是深度學(xué)習(xí)的方法,語(yǔ)譜在高頻也可以得到保留,同時(shí)噪聲也沒(méi)有混雜在其間。
02.基于深度學(xué)習(xí)的算法設(shè)計(jì)
現(xiàn)在針對(duì)深度學(xué)習(xí)方法怎樣去設(shè)計(jì)。
和其他深度學(xué)習(xí)一樣也會(huì)包括這幾個(gè)步驟。
第一步,喂給模型什么樣的輸入,輸入可以去進(jìn)行選擇,我們的聲波信號(hào)可以通過(guò)wave的形式通過(guò)頻譜的形式或者是更加高維的MFCC的形式甚至心理聽(tīng)閾BARK域的形式去給到它。不同的輸入決定了你的模型采用的結(jié)構(gòu)也不一樣。在模型結(jié)構(gòu)上,可能會(huì)選擇類似圖像的,如果是頻譜可能類似CNN的方法去做。聲音是有一定時(shí)間連續(xù)性的,你也可以通過(guò)waveform直接去做。
這塊選擇不同的模型結(jié)構(gòu),但是我們發(fā)現(xiàn)在移動(dòng)端的時(shí)候,也會(huì)受到算力和存儲(chǔ)空間的限制,可能會(huì)對(duì)模型進(jìn)行一些組合,不是用單一的模型去做。在模型的選擇這塊會(huì)有所考量,另外一塊也會(huì)比較重要就是選擇一個(gè)合適的數(shù)據(jù)去訓(xùn)練模型 。
訓(xùn)練模型的過(guò)程比較簡(jiǎn)單,就是把人聲信號(hào)和噪聲信號(hào)混在一起喂到程序里,這樣模型會(huì)給你一個(gè)純凈的人聲信號(hào)。這時(shí)就會(huì)選擇我這個(gè)數(shù)據(jù)是不是為了cover所有不同的語(yǔ)言,上一個(gè)會(huì)議上也提到不同的語(yǔ)言組成的因素也是不一樣的,比如中文會(huì)比日文多五六個(gè)音素,如果是英文還有五六個(gè)音素和中文是不一樣的,為了cover住這些的語(yǔ)言可能會(huì)選擇多語(yǔ)言的數(shù)據(jù)。
另外一塊性別也是不一樣的,如果語(yǔ)料訓(xùn)練不夠均衡,對(duì)男聲和女聲的降噪能力可能有所偏差。另外噪聲上的類型可能會(huì)有一些選擇上的考慮,因?yàn)椴豢赡馨阉性肼暥几F盡,所以會(huì)選擇一些typical noise。這邊大概羅列出來(lái),不同F(xiàn)eature 的選擇,模型的設(shè)計(jì),以及數(shù)據(jù)的準(zhǔn)備回來(lái)看看要注意哪些方向。
我們先看一下我們會(huì)選擇什么樣的數(shù)據(jù)給到模型。 第一個(gè)考慮的是把最原始的wave信號(hào)做一個(gè)端到端的處理生存一個(gè)wave信號(hào)。這個(gè)想法一開(kāi)始的時(shí)候是被否定的,因?yàn)閣ave信號(hào)和它的采樣率有關(guān),可能16K的采樣率1幀10毫秒會(huì)有160個(gè)點(diǎn),數(shù)據(jù)量非常龐大如果直接喂的話可能導(dǎo)致模型處理需要很大一個(gè)模型才能handle。
我們?cè)谥熬驮谙肽懿荒苻D(zhuǎn)化成頻域,在頻域上做能減少數(shù)據(jù)的輸入。在17、18年之前都是在頻域上去做這個(gè)事情,但是在2018年像Tasnet模型已經(jīng)能通過(guò)時(shí)域端到端的去生成降噪的一個(gè)效果。 頻域可能會(huì)更早一些,之前在頻域上做噪點(diǎn)的去除,通過(guò)掩碼的形式去解決噪聲的問(wèn)題。比如把噪聲的能量去除掉只保留人聲的能量。
19年有一篇paper做了一個(gè)比較,無(wú)論從時(shí)域還是頻域都可以得到一個(gè)比較好的降噪效果,而且模型計(jì)算復(fù)雜度不是相當(dāng)?shù)摹?/p>
這個(gè)輸入信號(hào)不會(huì)很大程度上決定你模型的算力或者效果,就是可以的。 在這個(gè)基礎(chǔ)上,時(shí)域頻域都是可以的話,我們想要進(jìn)一步減少模型的算力可能需要選用一些高維度像MFCC這種形式去做,這塊也是一開(kāi)始設(shè)計(jì)模型考量的地方。根據(jù)算力限制,本來(lái)200多個(gè)頻點(diǎn)到MFCC只有40個(gè)bin,這樣就可以減少輸入。因?yàn)槁曇舸嬖谝恍┱诒涡?yīng)你可能把它分成一些足夠細(xì)小的子帶就能做到噪聲抑制的作用,所以也是行之有效能減少模型算力的方法。
剛剛是講到信號(hào)的輸入,在做模型結(jié)構(gòu)選擇的時(shí)候也會(huì)有很多對(duì)模型結(jié)構(gòu)算力的考量,可以把模型算力的復(fù)雜度和模型參數(shù)量畫(huà)一個(gè)XY軸去表正。像一些CNN方法,因?yàn)槭蔷矸e的存在,里面很多算子是可以復(fù)用的,卷積核可以在整個(gè)頻譜上復(fù)用。這種情況下,在同樣參數(shù)結(jié)構(gòu)中它的算力復(fù)雜度會(huì)最高,因?yàn)樗菑?fù)用的它的參數(shù)量就很小。
如果一些手機(jī)APP對(duì)參數(shù)量有限制,比如手機(jī)APP不能大于200M可能模型給你的空間就1-2兆,這種情況下盡量選擇CNN模型。 參數(shù)量并不是一個(gè)很大的限制而運(yùn)算力可能會(huì)受到一些挑戰(zhàn),比如一個(gè)算力較差的芯片,只有1GHz。這時(shí)卷積神經(jīng)網(wǎng)絡(luò)的方式并不是適合的,這時(shí)可能是用一些linear 這種層來(lái)表征,所以linear 也是矩陣乘。
矩陣乘在一些DSP芯片和傳統(tǒng)CPU方面表現(xiàn)的算力都不是很高,缺點(diǎn)是每個(gè)算子是不可復(fù)用的。這種情況下參數(shù)量比較大,但計(jì)算力上可能會(huì)更加的小。但只用linear這種方式就像DNN一樣只有l(wèi)inear 層,就是它參數(shù)很大算力也很大。 前面提到人的說(shuō)話時(shí)間是有連續(xù)性的,可以用RNN這種有短時(shí)或長(zhǎng)時(shí)記憶的這種方式,把參數(shù)通過(guò)實(shí)時(shí)的自適應(yīng)去記憶出當(dāng)前噪聲的狀態(tài),這樣可以進(jìn)一步減少它的算力。
綜合下來(lái)說(shuō),當(dāng)你選擇模型時(shí)盡量少去使用linear layers,這種會(huì)帶來(lái)很大參數(shù)量的提升和算力的提升。你可以去融合這些不同的結(jié)構(gòu),比如先用CNN再用RNN這種CRN的形式,那它第一步通過(guò)壓縮你輸入的維度,再通過(guò)長(zhǎng)短時(shí)記憶的方式,把模型算力進(jìn)一步的減少。 根據(jù)不同場(chǎng)景,如果做離線的處理,可能使用雙向的人工神經(jīng)網(wǎng)絡(luò)去做效果可能是最好的。在RTC場(chǎng)景中不能去增加延遲。像LSTM這種單向型的網(wǎng)絡(luò)可能更加合適。如果想進(jìn)一步減少算力,三個(gè)門的LSTM還是太大那就用兩個(gè)門結(jié)構(gòu)的GRU等等,在一些細(xì)節(jié)上提升算法的能力。
怎么選擇模型結(jié)構(gòu)和使用場(chǎng)景和算力有關(guān)。另外一塊就是怎么選擇喂到模型的數(shù)據(jù)。數(shù)據(jù)里面一塊是語(yǔ)譜的損傷,要準(zhǔn)備更充分干凈的語(yǔ)料,里面包括不同的語(yǔ)言、性別,以及語(yǔ)料本身可能含有底噪,盡量選擇錄音棚消音室錄的比較純凈的語(yǔ)料。這樣你的reference決定了你的目標(biāo)可能是比較純凈的,效果會(huì)更好一些。
還有一塊是能不能cover住噪聲,噪聲是無(wú)窮無(wú)盡的,可以根據(jù)你的場(chǎng)景,比如會(huì)議場(chǎng)景選擇一些比較典型的辦公室里的人聲、手機(jī)提示音等等,這些作為訓(xùn)練語(yǔ)料。其實(shí)很多噪聲是簡(jiǎn)單噪聲的一些組合,當(dāng)簡(jiǎn)單噪聲數(shù)量足夠多的時(shí),模型的魯棒性也會(huì)提升,哪怕是一些沒(méi)有見(jiàn)過(guò)的噪聲也能cover。噪聲有時(shí)不能收集的話可以自己做一些,人工合成一些,比如日光燈管、輝光效應(yīng)造成的雜音、50赫茲的交流電時(shí)時(shí)刻刻都在釋放50赫茲、100赫茲的諧波的噪聲。這種噪聲可以通過(guò)人造的方法去加入訓(xùn)練集里面提升模型的魯棒性。
03.RTC移動(dòng)端困境
假設(shè)我們已經(jīng)有一個(gè)比較好的模型了,在落地時(shí)會(huì)遇到哪些困難呢?
在實(shí)時(shí)互動(dòng)的場(chǎng)景中,首先它有別于離線的操作,對(duì)實(shí)時(shí)性的要求更高,它要求逐幀計(jì)算,非因果不可用,未來(lái)的信息是無(wú)法去獲得的,這樣的場(chǎng)景下一些雙向的神經(jīng)網(wǎng)絡(luò)不可用。 另外要去適配不同的手機(jī)、不同的移動(dòng)終端,這里面受到各種芯片算力的影響,如果想使用更加廣泛模型算力會(huì)有限制同時(shí)模型參數(shù)大小也不能過(guò)大,尤其是調(diào)用芯片是模型參數(shù)量很大算力不是很高,但是由于參數(shù)的讀取IO的操作也會(huì)影響到模型最終表現(xiàn)。
場(chǎng)景的豐富性剛才也有提到,一些比較成功的,不同語(yǔ)音比如中英文、日文的cover程度以及噪聲的類型。在實(shí)時(shí)互動(dòng)場(chǎng)景中不可能讓每一個(gè)人都在同一個(gè)場(chǎng)景說(shuō)同樣的話,場(chǎng)景的豐富性也要考慮其中。
04.如何落地移動(dòng)端
在這樣一些條件下,如何去落地深度學(xué)習(xí)呢?我們可以從兩個(gè)方面去解決這些問(wèn)題。
首先,算法方面可以通過(guò)算法突圍的方式。剛剛有提到一點(diǎn),像全卷積的、全linear的,對(duì)它的參數(shù)對(duì)它的算力都有不同,可以通過(guò)不同模型的組合,針對(duì)不同算力可以組合出不同算力的結(jié)構(gòu)。效果來(lái)說(shuō)可能會(huì)有一些偏頗差異,什么樣的機(jī)型能適用什么樣的算法,可以通過(guò)這樣的模型結(jié)構(gòu)來(lái)解決,整體來(lái)說(shuō)是一個(gè)組合式的算法,通過(guò)模型組合使它的算力能盡量滿足它的芯片和存儲(chǔ)空間的要求。
第二,整個(gè)算法的場(chǎng)景是不一樣的,所以會(huì)選擇不一樣的模型去解決,在一開(kāi)始如果能夠選擇出場(chǎng)景,比如會(huì)議場(chǎng)景,不可能會(huì)有音樂(lè)、動(dòng)物的叫聲,這些噪聲指標(biāo)就不用特別關(guān)注,這些東西可以作為模型裁剪的方向。
算法本身可能模型就是這么大,出來(lái)還是一個(gè)5-6兆的參數(shù),你可能覺(jué)得它還是不夠?;蛘哒f(shuō)它的算力在移動(dòng)端不進(jìn)行優(yōu)化,它在內(nèi)存的調(diào)用,芯片存儲(chǔ)cache的方面可能都會(huì)有問(wèn)題。會(huì)影響到它在推理過(guò)程中,實(shí)際使用過(guò)程中的結(jié)果,明明在訓(xùn)練時(shí)跑的是ok的,但在落地不同芯片時(shí)跑的是不一樣的。
在工程上也會(huì)進(jìn)行突圍,主要針對(duì)模型推理以及一些處理的方式會(huì)有所不一樣。首先在模型方面會(huì)做一些算子的優(yōu)化,在訓(xùn)練搭建模型的時(shí)候都是一層層加上去的,但很多算子可以進(jìn)行一些融合,包括算子融合、凸優(yōu)化。一些參數(shù)做模型的剪枝、量化,這些都是可以進(jìn)一步減少模型的算力以及參數(shù)量的大小。
第一步就是對(duì)模型進(jìn)行一些裁剪量化,這一塊已經(jīng)能做到讓你的模型是最優(yōu)的最符合場(chǎng)景的。另外在不同的移動(dòng)終端它的芯片也是不一樣的,有些手機(jī)可能只有CPU有些好點(diǎn)的手機(jī)會(huì)有GPU NPU甚至?xí)械腄SP芯片甚至能開(kāi)放它的算力。 這塊我們能更好的去適應(yīng)芯片,會(huì)有一些不同的推理框架,各家都會(huì)有一些比較開(kāi)源的框架可以去使用,比如蘋果的Core ML、谷歌的TensorFlow Lite,它會(huì)把芯片調(diào)度編譯層的優(yōu)化做在里面。
在這步上來(lái)說(shuō),做和不做差異是非常巨大的,因?yàn)檎麄€(gè)算法怎么運(yùn)算是一回事,怎么做內(nèi)存調(diào)用、矩陣的計(jì)算、浮點(diǎn)計(jì)算還是另一回事。做工程化的優(yōu)化,這種效果可能是百倍的提升。優(yōu)化可以用開(kāi)源的框架去做,也可以自己做一些編譯的優(yōu)化,如果你對(duì)芯片的算力比較熟悉,比如不同的cache的怎么調(diào)用,它的大小是什么,你可以自己去做??赡苣阕龀鰜?lái)的結(jié)果比這種開(kāi)源的框架更有針對(duì)性,效果會(huì)更好。 在我們把模型和推理引擎整合起來(lái)之后,就是我們最后的產(chǎn)品,我們幾乎能在所有的終端做好適配,在所有芯片上完整工程化的一個(gè)產(chǎn)品,這樣能實(shí)時(shí)使用。
05.降噪demo試聽(tīng)
我們現(xiàn)在聽(tīng)一聽(tīng)降噪效果是什么樣的。
這邊羅列了幾種比較常見(jiàn)的噪聲。
我們先聽(tīng)鍵盤上的原聲,再聽(tīng)鍵盤降噪的效果。鍵盤聲基本上都已經(jīng)被消除掉了。
風(fēng)聲我們來(lái)聽(tīng)是這樣子的,這是一段德語(yǔ)在風(fēng)聲中的演講。來(lái)我們聽(tīng)聽(tīng)降噪后的效果。
地鐵也是一個(gè)比較常見(jiàn)的場(chǎng)景,我們聽(tīng)聽(tīng)原聲,這其實(shí)是我在上海地鐵10號(hào)線在念一段詩(shī)。我們聽(tīng)聽(tīng)降噪的一個(gè)效果。
車內(nèi)噪聲,比如出租車上的一個(gè)噪聲,我們聽(tīng)一下。我們聽(tīng)聽(tīng)暈車大哥在降噪后的效果,這是我們實(shí)際在出租車上錄下來(lái)的一段語(yǔ)料,并將整個(gè)機(jī)器引擎的噪聲都把它去掉了。
06.Can we do it better?
聽(tīng)完這些demo后,看看我們能做什么讓效果變得更好,場(chǎng)景變得更多一些呢?
我們還有很多難以解決的問(wèn)題。包括一些音樂(lè)信息的保留,如果你是在一個(gè)音樂(lè)場(chǎng)景去開(kāi)降噪,你會(huì)發(fā)現(xiàn)伴奏都沒(méi)有了只剩下人聲,這些場(chǎng)景可能會(huì)通過(guò)更精細(xì)化的方式,比如音源分離的方式,能不能把樂(lè)器的聲音也保留,但有些音樂(lè)聽(tīng)上去像噪聲是比較難以解決的一個(gè)領(lǐng)域。另一塊像人聲、像Babble noise,背景的這種噪聲有時(shí)和人聲比較難以區(qū)別,尤其像雞尾酒效應(yīng),大家都在說(shuō)話,通過(guò)AI判定哪個(gè)人說(shuō)話是真正有效的是比較難。
噪聲抑制,比如說(shuō)我們做的都是單通道的,采用一些麥克風(fēng)陣列可能會(huì)做一些指向性的降噪,但這些也是一個(gè)比較難的地方,什么聲音值得保留,人聲和背景聲如何分辨這塊也是比較難的方向,這也是未來(lái)我們會(huì)去探索的一個(gè)比較明確的方向。
編輯:jq
-
噪聲
+關(guān)注
關(guān)注
13文章
1113瀏覽量
47323 -
RTC
+關(guān)注
關(guān)注
2文章
519瀏覽量
66127 -
通訊技術(shù)
+關(guān)注
關(guān)注
1文章
90瀏覽量
13888
原文標(biāo)題:基于深度學(xué)習(xí)的實(shí)時(shí)噪聲抑制——深度學(xué)習(xí)落地移動(dòng)端的范例
文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論