如何避免音頻信號處理中的常見錯誤
發布時間:2023-01-11 責任編輯:lina
【導讀】音頻信號處理產品的設計和編碼軟件有其獨特的挑戰。那麼,開發人員最常犯的錯誤是什麼?如何避免這些錯誤呢?
無論最終產品是什麼,無論他們使用什麼語言編寫代碼,世界各地的軟件開發人員都麵臨著同樣的挑戰——不斷變化的客戶需求、緊迫的交期、整合和客戶支持,以上隻是幾個例子。
danshiyouyizhongleixingderuanjiankaifashejilejiehejiejuefeichangjutidewenti。yinpinxinhaochulichanpindeshejihebianmaruanjianyouqidutedetiaozhan。name,kaifarenyuanzuichangfandecuowushishenme?ruhebimianzhexiecuowune?
了解信號處理對於在音頻領域工作的軟件工程師很有幫助,但這不是必需的。然而,有些領域對音頻有一些了解確實有所幫助。
shouxian,shizengyijiegou,lejieyinliangkongzhikeyiweiwomendexitongzengjiazengyi。zheshiyongyuwomenruanjiandeneibujiegou,bingjiangyingxiangwomencharuyuanxingdesuoyouxiaogongju。jieguokenengshishengyinshuchulingrenbumanyi。kaifarenyuanyiweizheshiyouyudaimazhongdecuowuzaochengde,ershijishangzheshizengyijiegoudewenti。zhidaozheyidiankeyizaibubiyaodetiaoshizhongjieshengdaliangshijian。
其qi次ci,軟ruan件jian開kai發fa人ren員yuan有you時shi會hui忘wang記ji音yin頻pin濾lv波bo會hui增zeng加jia群qun延yan遲chi。如ru果guo我wo們men忘wang記ji了le這zhe個ge基ji本ben事shi實shi,我wo們men可ke能neng會hui過guo分fen承cheng諾nuo我wo們men的de算suan法fa的de性xing能neng,我wo們men會hui認ren為wei它ta會hui比bi實shi際ji行xing動dong得de更geng快kuai。
第di三san,一yi個ge雖sui然ran很hen小xiao但dan很hen重zhong要yao的de點dian是shi實shi際ji數shu據ju和he理li論lun數shu據ju之zhi間jian的de差cha異yi。數shu學xue有you零ling,但dan音yin頻pin沒mei有you。在zai數shu學xue中zhong,算suan法fa的de設she計ji使shi用yong理li論lun數shu據ju。當dang使shi用yong實shi際ji數shu據ju測ce試shi我wo們men的de係xi統tong時shi,我wo們men可ke能neng會hui發fa現xian一yi個ge信xin號hao似si乎hu是shi無wu聲sheng的de。在zai那na種zhong情qing況kuang下xia,放fang大da它ta總zong是shi值zhi得de的de——它可能有點嘶嘶聲,也可能全是零。
最後,我們不可能隻采用一種算法並將其部署在所有設備上。我們需要在開發過程中盡早考慮我們的算法將要有的部署約束條件。一些DSP非常高效且功耗低,但它們的內存可能有限。其他的可能非常適合用於AI處(chu)理(li),但(dan)它(ta)們(men)會(hui)引(yin)入(ru)更(geng)高(gao)的(de)延(yan)遲(chi)。如(ru)果(guo)你(ni)能(neng)設(she)計(ji)一(yi)個(ge)權(quan)衡(heng)空(kong)間(jian)和(he)時(shi)間(jian)的(de)算(suan)法(fa),那(na)就(jiu)太(tai)好(hao)了(le)。但(dan)實(shi)際(ji)上(shang),大(da)多(duo)數(shu)算(suan)法(fa)無(wu)法(fa)做(zuo)到(dao)這(zhe)一(yi)點(dian),因(yin)此(ci)我(wo)們(men)可(ke)能(neng)會(hui)發(fa)現(xian)自(zi)己(ji)無(wu)法(fa)獲(huo)得(de)功(gong)耗(hao)最(zui)低(di)的(de)嵌(qian)入(ru)式(shi)設(she)備(bei)。
在(zai)任(ren)何(he)開(kai)發(fa)中(zhong),在(zai)開(kai)發(fa)開(kai)始(shi)之(zhi)前(qian)了(le)解(jie)客(ke)戶(hu)需(xu)求(qiu)是(shi)必(bi)不(bu)可(ke)少(shao)的(de)。但(dan)在(zai)處(chu)理(li)音(yin)頻(pin)時(shi),這(zhe)一(yi)點(dian)更(geng)為(wei)重(zhong)要(yao)。為(wei)什(shen)麼(me)呢(ne)?因(yin)為(wei)對(dui)於(yu)音(yin)頻(pin),客(ke)戶(hu)不(bu)僅(jin)需(xu)要(yao)一(yi)個(ge)運(yun)行(xing)良(liang)好(hao)的(de)係(xi)統(tong),他(ta)們(men)還(hai)需(xu)要(yao)一(yi)個(ge)可(ke)以(yi)輸(shu)出(chu)出(chu)色(se)音(yin)頻(pin)的(de)係(xi)統(tong)。問(wen)題(ti)是(shi)每(mei)個(ge)人(ren)聽(ting)到(dao)的(de)聲(sheng)音(yin)都(dou)不(bu)一(yi)樣(yang)(例如,年齡會影響聽力敏銳度),而且我們對聽起來“好”的聲音都有個人偏好。我們可能會發現我們花了很長時間開發的一種產品,最終客戶根本不喜歡。
對(dui)於(yu)大(da)多(duo)數(shu)音(yin)頻(pin)開(kai)發(fa)人(ren)員(yuan)來(lai)說(shuo),這(zhe)是(shi)一(yi)個(ge)持(chi)續(xu)存(cun)在(zai)的(de)問(wen)題(ti)。音(yin)頻(pin)的(de)評(ping)估(gu)比(bi)視(shi)覺(jiao)算(suan)法(fa)的(de)評(ping)估(gu)更(geng)難(nan)。這(zhe)是(shi)為(wei)什(shen)麼(me)?因(yin)為(wei)視(shi)覺(jiao)結(jie)果(guo)可(ke)以(yi)並(bing)排(pai)放(fang)置(zhi)並(bing)同(tong)時(shi)將(jiang)它(ta)們(men)相(xiang)互(hu)進(jin)行(xing)比(bi)較(jiao)。但(dan)你(ni)不(bu)能(neng)同(tong)時(shi)比(bi)較(jiao)音(yin)頻(pin):你不能同時聽兩件事。因此,音頻結果的A/B測(ce)試(shi)隻(zhi)能(neng)是(shi)順(shun)序(xu)的(de),不(bu)能(neng)同(tong)時(shi)進(jin)行(xing)。所(suo)以(yi),測(ce)試(shi)音(yin)頻(pin)需(xu)要(yao)更(geng)長(chang)的(de)時(shi)間(jian),我(wo)們(men)可(ke)能(neng)需(xu)要(yao)聽(ting)兩(liang)個(ge)小(xiao)時(shi)的(de)測(ce)試(shi)錄(lu)音(yin)僅(jin)僅(jin)是(shi)為(wei)了(le)評(ping)估(gu)對(dui)算(suan)法(fa)的(de)小(xiao)調(tiao)整(zheng)。我(wo)們(men)要(yao)確(que)保(bao)項(xiang)目(mu)的(de)計(ji)劃(hua)包(bao)含(han)有(you)比(bi)我(wo)們(men)認(ren)為(wei)需(xu)要(yao)的(de)更(geng)長(chang)的(de)測(ce)試(shi)時(shi)間(jian)。
我們可以通過商定使用一種普遍被接受的音頻測試指標(例如MOS分數)來(lai)避(bi)免(mian)這(zhe)種(zhong)主(zhu)觀(guan)性(xing)。這(zhe)些(xie)輸(shu)入(ru)的(de)音(yin)頻(pin)和(he)預(yu)期(qi)所(suo)需(xu)的(de)觀(guan)眾(zhong)對(dui)結(jie)果(guo)的(de)評(ping)價(jia)。確(que)實(shi)有(you)助(zhu)於(yu)評(ping)估(gu)質(zhi)量(liang),但(dan)不(bu)會(hui)給(gei)我(wo)們(men)提(ti)供(gong)改(gai)進(jin)的(de)原(yuan)因(yin)。許(xu)多(duo)常(chang)見(jian)的(de)測(ce)試(shi)和(he)指(zhi)標(biao)是(shi)為(wei)有(you)線(xian)電(dian)話(hua)等(deng)傳(chuan)統(tong)的(de)現(xian)有(you)應(ying)用(yong)開(kai)發(fa)的(de),並(bing)且(qie)偏(pian)向(xiang)於(yu)這(zhe)些(xie)應(ying)用(yong)。因(yin)此(ci),使(shi)用(yong)指(zhi)標(biao)會(hui)有(you)所(suo)幫(bang)助(zhu),但(dan)這(zhe)不(bu)是(shi)絕(jue)對(dui)的(de)答(da)案(an)。在(zai)我(wo)們(men)開(kai)始(shi)工(gong)作(zuo)之(zhi)前(qian),要(yao)確(que)保(bao)我(wo)們(men)的(de)客(ke)戶(hu)把(ba)他(ta)們(men)的(de)願(yuan)景(jing)告(gao)訴(su)我(wo)們(men),因(yin)為(wei)他(ta)們(men)希(xi)望(wang)音(yin)頻(pin)聽(ting)起(qi)來(lai)像(xiang)什(shen)麼(me),這(zhe)一(yi)點(dian)至(zhi)關(guan)重(zhong)要(yao)。
lejiekehudeyuanjingduiyuxiayigeyaozhuyidewentizhengheyehenzhongyao。womendeyinpinshixitongdeyibufen。suoyoubufendoubixuxietonggongzuo,danxitongdeqiyubufenshouchuliyinpindexiaohaoxianzhi,erwomendeyinpinyeshouxitongqiyubufenxiaohaodexianzhi。ruguoyinpinzaishijidexitongshangduanduanxuxu,namezaikongdexitongshangkaifayunxinglianghaodedongxishimeiyouyiyide,erqiehuilangfeihenduoziyuan。suoyi,zaodianzhengheba。danshi,zhengrukaifarenyuandouzhidaode,zhenghedechengbenhengao。weilefangzhijiangshijianlangfeizaizhenghebuheshideneirongshang,womenshouxianxuyaoyukehujiaotan。bingqie,zaikaishikaifazhiqian,huoqusuoxuanyonglizhongdeyixieluyinyangben,tongshiyulantamenhuolixiangongzuolaigujiwomenjiangnenggoushixiandemubiaobingquebaotafuhekehudeyuanjing。
kaifarenyuanhuifandeyigechangjiancuowushizaikaifaguochengzhongmeiyoujinzaohuoderuanjianliu。zhehenzhongyao,yinweiruguowomenbujinzaojinxingliushichuanshu,womenkenenghuiyaochulidaozhijieguoguofenchengnuodewenjian。ruguowomenzhengzaibianxieyizhongsuanfa,tameifangwenyiweiyinpinjiuxiangshujujiegoutianjiayigechengfen,zeshujujiegoudedaxiaoyuwomenzhengzaichulidewenjiandedaxiaochengzhengbi。raner,yidanwenjianbeiyinpinliutihuan,shujujiegoukenenghuizaishebeiyunxingshiwuxianzengda。tongguojinzaoliushichuanshu,keyijiangdikaifafengxian,bingqiekeyijinyibuquebaowomendesuanfayizhunbeihaojinxingdaguimoshengchan。
另(ling)外(wai),從(cong)一(yi)開(kai)始(shi)就(jiu)考(kao)慮(lv)測(ce)試(shi)過(guo)程(cheng)。僅(jin)通(tong)過(guo)音(yin)頻(pin)輸(shu)出(chu)進(jin)行(xing)測(ce)試(shi)很(hen)困(kun)難(nan),因(yin)為(wei)它(ta)是(shi)實(shi)數(shu)信(xin)號(hao)。要(yao)確(que)保(bao)盡(jin)可(ke)能(neng)多(duo)地(di)進(jin)行(xing)單(dan)元(yuan)測(ce)試(shi),而(er)不(bu)是(shi)依(yi)賴(lai)於(yu)不(bu)同(tong)處(chu)理(li)器(qi)和(he)平(ping)台(tai)之(zhi)間(jian)可(ke)能(neng)不(bu)同(tong)的(de)音(yin)頻(pin)輸(shu)出(chu)。
查看編碼過程本身,我們需要在定點和浮點之間做出決定。定點曾經是表示用於存儲和計算的音頻樣本的“go to”方法。定點計算將使用與整數計算相同的ALU部件,一個簡單的數學技巧是大致估計連續變化的數量,在精度和數量大小之間進行權衡。
浮點在ALU中實現起來更複雜,但在現代CPU中(例如在移動設備中)使(shi)用(yong)它(ta)幾(ji)乎(hu)沒(mei)有(you)或(huo)完(wan)全(quan)沒(mei)有(you)損(sun)失(shi)。存(cun)在(zai)的(de)損(sun)失(shi)被(bei)工(gong)程(cheng)時(shi)間(jian)要(yao)求(qiu)的(de)減(jian)少(shao)和(he)用(yong)於(yu)優(you)化(hua)算(suan)法(fa)的(de)時(shi)間(jian)量(liang)的(de)增(zeng)加(jia)所(suo)抵(di)消(xiao)。音(yin)頻(pin)算(suan)法(fa)通(tong)常(chang)龐(pang)大(da)而(er)複(fu)雜(za),而(er)浮(fu)點(dian)可(ke)以(yi)用(yong)更(geng)少(shao)的(de)工(gong)程(cheng)資(zi)源(yuan)實(shi)現(xian)它(ta)們(men),因(yin)為(wei)它(ta)簡(jian)化(hua)了(le)運(yun)算(suan)。使(shi)用(yong)浮(fu)點(dian)數(shu)的(de)開(kai)發(fa)人(ren)員(yuan)無(wu)需(xu)擔(dan)心(xin)整(zheng)數(shu)上(shang)溢(yi)或(huo)下(xia)溢(yi)。
關於手機,值得記住的是,手機中通常使用的CPU不僅會處理浮點運算,還會將其矢量化。因此,如果這是我們的用例,請確保我們設計的代碼能夠進行矢量化。
另一個技巧是在試驗係統行為時將音頻大量寫入文件。根據我們寫入的介質,我們可能需要一個工作線程,例如一張SD卡。這個工作線程就像一個軟件管家,我們可以將音頻數據提供給它;它ta耐nai心xin等deng待dai,然ran後hou將jiang其qi交jiao給gei設she備bei。這zhe意yi味wei著zhe我wo們men的de核he心xin算suan法fa不bu必bi等deng待dai和he阻zu止zhi運yun行xing時shi的de行xing為wei。如ru果guo要yao寫xie入ru多duo個ge文wen件jian,請qing檢jian查zha它ta們men是shi否fou都dou從cong同tong一yi位wei置zhi開kai始shi。例li如ru,如ru果guo我wo們men停ting止zhi其qi中zhong一yi個ge文wen件jian的de開kai頭tou40ms,我們會發現係統中會出現無法解釋的40ms延遲。
在音頻信號處理方麵,粗心的人會遇到很多陷阱。但是,通過正確的準備,我們可以通往成功的產品開發。
(原文刊登於EDN姊妹網站Embedded,參考鏈接:Common mistakes in audio signal processing – and how to avoid them,由Ricardo Xie編譯。)
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯係小編進行處理。
推薦閱讀:
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
- 築基AI4S:摩爾線程全功能GPU加速中國生命科學自主生態
- 一秒檢測,成本降至萬分之一,光引科技把幾十萬的台式光譜儀“搬”到了手腕上
- AI服務器電源機櫃Power Rack HVDC MW級測試方案
- 突破工藝邊界,奎芯科技LPDDR5X IP矽驗證通過,速率達9600Mbps
- 通過直接、準確、自動測量超低範圍的氯殘留來推動反滲透膜保護
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall


