好久沒更新文章了,蠢作者剛好最近寫了個有意思的小工具,所以就寫它好啦~
1.什么是聲波配網(wǎng)
2.聲波傳輸?shù)募夹g(shù)原理
3.聲波傳輸編碼
4.聲波傳輸解碼
1.什么是聲波配網(wǎng)
現(xiàn)在很火的一些智能硬件壶冒,比如對話機器人,智能音響等截歉,在使用的過程中都是需要聯(lián)網(wǎng)的胖腾,比如聯(lián)網(wǎng)抓取語料,獲取服務(wù)器指令瘪松,或者與手機APP綁定咸作。而由于成本限制,這些智能硬件很多又沒有屏幕宵睦、鍵盤或者其它輸入設(shè)備無法輸入WIFI初始化信息(SSID+密碼)记罚。所以通過手機播放聲波把WIFI的初始化連接信息傳遞給智能設(shè)備,讓設(shè)備識別完成WIFI初始化流程建立網(wǎng)絡(luò)連接是值得考慮的一種方式壳嚎。
2.聲波傳輸?shù)募夹g(shù)原理
顯然聲波配網(wǎng)技術(shù)中的技術(shù)難點就是聲波傳輸技術(shù)桐智。而聲波傳輸?shù)膽?yīng)用其實已經(jīng)很廣啦:支付寶的聲波支付,QQ音樂中的歌曲的聲波分享烟馅,茄子快傳说庭,蛐蛐兒等等。
聲波傳輸可以理解為類似NFC的一種近場通訊技術(shù)郑趁。聽起來很高大上有沒有~
其實原理很簡單啦刊驴,可以近似理解為對稱加密,加解密的過程大概如下所示~
簡單的說就是在發(fā)送端把你把要識別的字符映射成頻率穿撮,然后把一個頻率映射成一個音節(jié)信號(單頻率的正弦波)編碼成音頻播放缺脉;在接收端接收到音頻信號后痪欲,解析出頻率,然后根據(jù)兩邊共同的碼表找到頻率對應(yīng)的字符攻礼,從而解碼出數(shù)據(jù)业踢。具體來說就是我們可以將700HZ的正弦波對應(yīng)成字符'a',800HZ的正弦波對應(yīng)數(shù)字'b'礁扮,900HZ的正弦波對應(yīng)數(shù)字'c'知举,以此類推。那么數(shù)字串"abc"就對應(yīng)成頻率串就是{700太伊,800雇锡,900},然后把這個頻率串變成3個音節(jié)的正弦波音頻僚焦。如果規(guī)定每個音節(jié)持續(xù)100ms锰提,則{700,800芳悲,900}對應(yīng)300毫秒的音頻段立肘。接收方錄制聲音,對收到的聲音進行解析名扛,識別出700HZ谅年,800HZ,900HZ三段正弦波頻率肮韧,然后查找碼表融蹂,解碼出的字符串就是"abc"。
關(guān)于聲波傳輸最根本的原理其實是時域頻域的相互轉(zhuǎn)換弄企,所以我們繞不開傅里葉變換的相關(guān)知識超燃, 貼兩篇不錯的科普,可以點進去看個熱鬧哈桩蓉。
如果看了此文你還不懂傅里葉變換淋纲,那就過來掐死我吧【完整版】
看了嗎~~~是不是懷疑自己大學(xué)上了假的高數(shù)課~~~~
不過其實,看不懂沒關(guān)系啦hiahiahia院究,記住下面這張圖就好啦洽瞬,反正不影響我們寫代碼的~
網(wǎng)上關(guān)于聲波傳輸?shù)馁Y料不多,零星幾篇分析原理的文章詳細寫了聲波的編碼业汰,解碼卻是一筆帶過伙窃。Github上面能找到的開源項目,識別成功率高的沒有核心代碼(他們的so庫按平臺收費23333样漆,好吧为障,知識變現(xiàn),沒毛病~),有完整源碼的識別成功率又達不到投入實際中使用的要求鳍怨。所以蠢作者花了一些時間呻右,在了解原理之后嘗試了好幾種解碼的方案,踩過一些坑才最終把這個小工具優(yōu)化好鞋喇。
最終的效果是在手機中等播放音量声滥,距離接收端30cm內(nèi)的時候可以做到識別成功率100%,不受環(huán)境噪音影響侦香,沒有傳輸長度的限制(網(wǎng)上有一個說法【一般來說傳輸總字符如果達到40個以上落塑,解碼正確率就會下降,數(shù)據(jù)量越大罐韩,出錯率就會升高】憾赁,雖然看不到他們的核心代碼,但踩過一些坑之后散吵,大概知道造成這種現(xiàn)象的原因龙考,在聲波傳輸解碼里我會說明)。當然隨著距離的增加错蝴,受環(huán)境噪音的影響洲愤,成功率也就有所下降颓芭。不過用作配網(wǎng)顷锰,30cm夠用啦,有處理音頻底子的寶寶可以自己加降噪的算法亡问,這樣識別距離就可以變長啦~
關(guān)于聲波傳輸?shù)木幋a和解碼我都會單獨寫一篇詳細的文章(避坑指南)出來官紫,有興趣的寶寶可以關(guān)注一下奧~
(都看到這里了就點個贊吧!^^)
End~