If we don't find the way, no one else can. 國立成功大學資訊工程學系 音樂與多媒體實驗室
這有點難看耶!我們的目標是8Kbps to 4 Kbps, 2-ch. 我知道這有點難, 不過這就有挑戰性了吧, 我們打垮AAC就在此一舉. 拜託你了.In case 我忘記我講過什麼. 我說應該分bands, Adaptive, Multiple codebooks, 還有嗎? 請你補充一下.還有, 應該在peak map與 main coder之間所需佔的bit取一個折衷, 也就是Threshold要砍在哪裡很重要, 我的意思是, 簡單的應該要有.
http://ludwig.csie.ncku.edu.tw/members/LunaDance/peakmap_2.pdf最近嘗試了String Distance Matching來當作儲存peakmap的方式以上老師所提的都在投影片內近期會先做這個RDO的嘗試,然後確認一下字串比對這邊有沒有bug目前292 per frame 朝一百邁進!
如果目標訂在4~8Kbps, 2-ch, 44.1KHz,那麼就是speech,請一定要參考LPC-based的"想法",如何儘早表現出"Format"。如果concern significant map overhead,另外可以考慮如何利用psychoauostic phenomenon來改變coding order,同時間保證音質。
維城, 假如我講錯請更正我.1. 利用LPC modeling來產生那個Binary的Peak map, 然後記錄LPC coef就OK了. 這樣的話, 雖然比較不準, 可是peak map的overhead會比較省. 對texture coding 也還是有幫助.2. 利用心理模型來產生另一種reordering的演算法, overhead可能小一點, 但是對音值會有正面的改善.
老師說的是對的,我再對這兩點做點補充:1. LPC modelling可以很方便地設定一個base layer(例如:14階),overhead應該能控制在一個upper bound以下。(是否能做成progressive式的LPC?MDCT跟LPC如何對應?)2. 基本上scalable coder使用psychoacoustic model差不多可以確定是要用"被動式"的,也就是說利用前一次refined的結果來當作參考音源(形成masking threshould),跟mpeg video利用前一張decoded image來做motion estimation一樣的想法,因為這樣是zero overhead。
想問一下學長XD1. progressive LPC 不太了解@@2. "被動式"的意義是什麼,是指用X(n-k) 來預測X(n)的方式嗎(k is constant)
順便問些笨問題 :p1. progressive LPC是指order可隨著目前的進展改變,以逼近最少overhead嗎?還沒看過這種做法。2. 套用psychoacoustic model來保留音質可以理解,但不太清楚為何它跟被動式編碼的關係哩,如果不套用,是否一樣可以用被動式的方式達到zero overhead效果?
1.對於第一點,showmin的提問是對的,progressive LPC只是我的一種想法,可行與否並不明確,所以我也同時丟出了另一個問題,是否可以從MDCT和LPC filter間找出關聯?不過這應該擺在傳統LPC作法在目前框架上所做的實驗結果,才能進一步評估。2.對於第二點,D.N.A.的理解是對的,所謂的"被動"是相對於由原音分析出masking curve這樣的動作,這樣的masking curve是一種supervisal的資訊,它指出"哪一個頻率不需要補強",不存在被編碼的data bitstream中,只能以side information存在不同data-rate的bitstream;相反地,以lower bitrate bitstream所解出來的音訊,算出的masking curve,事實上提供了一個相反的資訊,就是"哪一個頻率還可以再補強",這樣的作法基本上是overhead free的。被動式的PM雖然在high bitrate的壓縮效率比傳統的低,但是在low bitrate卻一定比較好。
關於第二點, 我想補充一下可能的做法.傳統的PM計算後事實上是將PM的資訊用Scalefactor記錄下來, 當然會耗掉一些bits. 利用維城提的方式雖然可以不花bits, 帶來的影響可能是quality的降低. 好了, 有實作方法嗎? 有折衷方案嗎?1. 我覺得可以利用現行AAC的做法, 對不同bit rate情況下, AAC會採取的scalefactors以及當時所解出來的係數來當訓練資料. 當我們的coder解出一些資料後, 可以根據一定法則決定接下來的refinement bits是要給誰的或新的bits要讓哪一些係數進來. 這可以套用在原來的 AAC嗎?2. 假如上面做法不夠準, 那麼加一點點side information可以變好嗎?
我可能要強調一下,就我的了解,PM的運用還是跟coder本身是fixed-rate或scalable coder有本質上不可分割的關係;而我的觀察,就fixed-rate觀點,AAC應該已經把PM的運用推到一個極致(指scalefactor選擇的影響),而scalable觀點,主要可以有兩個好處:就是scalability和在low bitrate下可以達到比較好的quality(理論上);所以先建立一個base layer(即某個bitrate以下或某個quality以下),是屬於fixed-rate的範圍,再依序增加quality就是scalable的範圍。由AAC採用SBR和Parametric coding,我認為兩種不同壓縮觀點的決戰點是在中低bitrate,只要scalable coder在中低bitrate有非常好的表現,高bitrate在聽覺感知上與fixed-rate coder的差異是非常小的,而scalable coder的其他好處則是fixed-rate coder無法彌補的。
我回憶一下過去小路做的東西:小路先建立一個依照PM找出各個band的Quantization parameters然後進行SPIHT coding, 在第一次沒辦法被壓縮的係數就被掃到第二個tree, 有剩下的bits的情況下才被編碼, 但是這方法的問題是:能符合PM所需消耗的bits已經在100K bps了, 所以我們能improve的只有在100k bps以上, 這實在是不太有用, 因為一般人聽不出來差別.問題出在, 我們是以最好的狀況估的, 而不是像AAC一樣一邊壓一邊調, 在我們的coder不能比AAC有效率的情況下要比他好是不可能的, 因為我們缺乏adaptive機制.怎麼辦?
維城提出的看法inspire我思維的是:1. 可以不要像AAC一樣花一堆bits記錄scalefactor嗎?2. 可以用解出來的資訊(或已壓縮的資料)配合上一些side information來決定接下來bits要分給哪一個bands? 其實就是減少這些bands的Quantization step.3. 承接第二點要做的是, 我們應該倒過來先由low bit rate來壓, 而不是一下子就由high rate來壓.4. 這方式應該同時適合bit plane coding與一般的AAC吧!!!???
DNA跟我討論過:假如我們先對high rate與low rate的spectrum與scalefactor進行profiling, 然後用簡單的方式記錄之. 這樣, 當我們的bit rate由低到高時, 可以一步步依照此profiles來決定bits要給誰.還有誰要補充的嗎?
請Gary開一串討論他要實驗的Perceptual model的做法
張貼留言
15 則留言:
這有點難看耶!
我們的目標是8Kbps to 4 Kbps, 2-ch. 我知道這有點難, 不過這就有挑戰性了吧, 我們打垮AAC就在此一舉. 拜託你了.
In case 我忘記我講過什麼. 我說應該分bands, Adaptive, Multiple codebooks, 還有嗎? 請你補充一下.
還有, 應該在peak map與 main coder之間所需佔的bit取一個折衷, 也就是Threshold要砍在哪裡很重要, 我的意思是, 簡單的應該要有.
http://ludwig.csie.ncku.edu.tw/members/LunaDance/peakmap_2.pdf
最近嘗試了String Distance Matching來當作儲存peakmap的方式
以上老師所提的都在投影片內
近期會先做這個RDO的嘗試,然後確認一下字串比對這邊有沒有bug
目前292 per frame 朝一百邁進!
如果目標訂在4~8Kbps, 2-ch, 44.1KHz,那麼就是speech,請一定要參考LPC-based的"想法",如何儘早表現出"Format"。
如果concern significant map overhead,另外可以考慮如何利用psychoauostic phenomenon來改變coding order,同時間保證音質。
維城, 假如我講錯請更正我.
1. 利用LPC modeling來產生那個Binary的Peak map, 然後記錄LPC coef就OK了. 這樣的話, 雖然比較不準, 可是peak map的overhead會比較省. 對texture coding 也還是有幫助.
2. 利用心理模型來產生另一種reordering的演算法, overhead可能小一點, 但是對音值會有正面的改善.
老師說的是對的,我再對這兩點做點補充:
1. LPC modelling可以很方便地設定一個base layer(例如:14階),overhead應該能控制在一個upper bound以下。(是否能做成progressive式的LPC?MDCT跟LPC如何對應?)
2. 基本上scalable coder使用psychoacoustic model差不多可以確定是要用"被動式"的,也就是說利用前一次refined的結果來當作參考音源(形成masking threshould),跟mpeg video利用前一張decoded image來做motion estimation一樣的想法,因為這樣是zero overhead。
想問一下學長XD
1. progressive LPC 不太了解@@
2. "被動式"的意義是什麼,是指用X(n-k) 來預測X(n)的方式嗎(k is constant)
順便問些笨問題 :p
1. progressive LPC是指order可隨著目前的進展改變,以逼近最少overhead嗎?還沒看過這種做法。
2. 套用psychoacoustic model來保留音質可以理解,但不太清楚為何它跟被動式編碼的關係哩,如果不套用,是否一樣可以用被動式的方式達到zero overhead效果?
1.對於第一點,showmin的提問是對的,progressive LPC只是我的一種想法,可行與否並不明確,所以我也同時丟出了另一個問題,是否可以從MDCT和LPC filter間找出關聯?不過這應該擺在傳統LPC作法在目前框架上所做的實驗結果,才能進一步評估。
2.對於第二點,D.N.A.的理解是對的,所謂的"被動"是相對於由原音分析出masking curve這樣的動作,這樣的masking curve是一種supervisal的資訊,它指出"哪一個頻率不需要補強",不存在被編碼的data bitstream中,只能以side information存在不同data-rate的bitstream;相反地,以lower bitrate bitstream所解出來的音訊,算出的masking curve,事實上提供了一個相反的資訊,就是"哪一個頻率還可以再補強",這樣的作法基本上是overhead free的。被動式的PM雖然在high bitrate的壓縮效率比傳統的低,但是在low bitrate卻一定比較好。
關於第二點, 我想補充一下可能的做法.
傳統的PM計算後事實上是將PM的資訊用Scalefactor記錄下來, 當然會耗掉一些bits. 利用維城提的方式雖然可以不花bits, 帶來的影響可能是quality的降低. 好了, 有實作方法嗎? 有折衷方案嗎?
1. 我覺得可以利用現行AAC的做法, 對不同bit rate情況下, AAC會採取的scalefactors以及當時所解出來的係數來當訓練資料. 當我們的coder解出一些資料後, 可以根據一定法則決定接下來的refinement bits是要給誰的或新的bits要讓哪一些係數進來. 這可以套用在原來的 AAC嗎?
2. 假如上面做法不夠準, 那麼加一點點side information可以變好嗎?
我可能要強調一下,就我的了解,PM的運用還是跟coder本身是fixed-rate或scalable coder有本質上不可分割的關係;而我的觀察,就fixed-rate觀點,AAC應該已經把PM的運用推到一個極致(指scalefactor選擇的影響),而scalable觀點,主要可以有兩個好處:就是scalability和在low bitrate下可以達到比較好的quality(理論上);所以先建立一個base layer(即某個bitrate以下或某個quality以下),是屬於fixed-rate的範圍,再依序增加quality就是scalable的範圍。
由AAC採用SBR和Parametric coding,我認為兩種不同壓縮觀點的決戰點是在中低bitrate,只要scalable coder在中低bitrate有非常好的表現,高bitrate在聽覺感知上與fixed-rate coder的差異是非常小的,而scalable coder的其他好處則是fixed-rate coder無法彌補的。
我回憶一下過去小路做的東西:
小路先建立一個依照PM找出各個band的Quantization parameters然後進行SPIHT coding, 在第一次沒辦法被壓縮的係數就被掃到第二個tree, 有剩下的bits的情況下才被編碼, 但是這方法的問題是:
能符合PM所需消耗的bits已經在100K bps了, 所以我們能improve的只有在100k bps以上, 這實在是不太有用, 因為一般人聽不出來差別.
問題出在, 我們是以最好的狀況估的, 而不是像AAC一樣一邊壓一邊調, 在我們的coder不能比AAC有效率的情況下要比他好是不可能的, 因為我們缺乏adaptive機制.
怎麼辦?
維城提出的看法inspire我思維的是:
1. 可以不要像AAC一樣花一堆bits記錄scalefactor嗎?
2. 可以用解出來的資訊(或已壓縮的資料)配合上一些side information來決定接下來bits要分給哪一個bands? 其實就是減少這些bands的Quantization step.
3. 承接第二點要做的是, 我們應該倒過來先由low bit rate來壓, 而不是一下子就由high rate來壓.
4. 這方式應該同時適合bit plane coding與一般的AAC吧!!!???
DNA跟我討論過:
假如我們先對high rate與low rate的spectrum與scalefactor進行profiling, 然後用簡單的方式記錄之. 這樣, 當我們的bit rate由低到高時, 可以一步步依照此profiles來決定bits要給誰.
還有誰要補充的嗎?
請Gary開一串討論他要實驗的Perceptual model的做法
張貼留言