OPUS是由Silk和CELT兩個編碼器組成的,用來處理全頻帶的語音和音樂訊號,OPUS在整合Silk的時候,對Silk的一些細節做了改動,這裡簡單整理一下OPUS中的Silk模組和純的Silk編解碼器的不同之處。
一、預測部分:計算邏輯上來看,二者是相同的。不同之處有:
1、OPUS的整體計算精度更高一些,由Silk裡的Q10轉換成了Q14後進行判斷,包括LPC、LTP和excition部分。
2、在做Delaydecision的時候,OPUS中對判斷演算法進行了重寫,增加了一個quantoffset,重新規劃了量化的範圍,這裡和Silk比較,帶來的MOS分增益我自己測的是大約在0.05左右,不一定準確。
3、OPUS是使用SHIFT_ROUND將Q10轉化成了Q0傳入到編碼模組,Silk使用的是SHIFT方法,兩者的不同之處在於,SHIFT_ROUND會將[-512,512]的值都轉化為0,而SHIFT的置零區間為[0,1024],這裡使用不同的SHIFT演算法會影響到後續編碼激勵時分配的位元速率。
4、OPUS的Delaydecision預設是計算40個取樣點的總誤差,Silk是32個,這兩個我試了一下對MOS分的影響基本沒有。
5、OPUS通過調整計算步驟,加新的引數(如delayedgain和diff等)等方法,減少了少量計算量。
二、編碼部分:
1、OPUS中的編碼模組由依賴Silk中的概率密度函式轉成了逆概率密度函式,我這裡也不清楚做這種改動的原因,從結果上來看,使用CDF和iCDF的編碼效率是差不多的。
2、OPUS將編碼index和excition的函式區分開了,但函式的實現及各個引數的編碼順序是相同的。Silk的編碼函式都在了一起顯得有點擁擠,也不太方便後續自己開發。
三、其餘部分:
1、增益計算部分,OPUS在較多函式裡使用的是Q7,Silk使用的是Q0,從程式碼上來看OPUS對增益的控制能稍微準一些
2、OPUS的位元速率控制演算法進行了重寫,但總體邏輯是一樣的,我個人感覺OPUS的位元速率控制更為激進一點
3、OPUS的抖動演算法中Seed的判斷方法也改變了,OPUS中通過判斷Seed是否小於0進行符號的轉換,Silk通過把Seed右移31位後做異或後自減進行判斷,其實這兩種方法的結果是一樣的,只是表現方法不一樣。
先寫到這裡吧,以後有想起來的再補充。
OPUS裡的Silk和原始Silk簡單比較
相關文章
- mongodb和hbase的簡單比較MongoDB
- Silk Road 2 Loses Over $2.6 Million in Bitcoins in Alleged Hack
- WPF 使用 Silk.NET 進行 DirectX 渲染入門
- Android 多媒體之 Silk 格式音訊解碼Android音訊
- 字串-簡單字串比較字串
- Java 趣史-差點把 Java 命名成了 Silk(絲綢)Java
- Java 之父 Jame:差點把 Java 命名成了 Silk(絲綢)Java
- 商業智慧工具Shiny、Tableau和PowerBI簡單比較
- 簡單比較 Apache Kafka 和 Apache Pulsar要點 - JaroslawApacheKafkaJARROS
- 前端動畫效果實現的簡單比較前端動畫
- ABAP OPEN SQL裡OPEN CURSOR和SELECT的比較SQL
- Java Python 和Nodejs在web開發方面的簡單比較JavaPythonNodeJSWeb
- 簡單介紹Go 字串比較的實現示例Go字串
- js 深比較和淺比較JS
- Kotlin和Java的簡單對比KotlinJava
- UUID7與UUID4簡單比較UI
- Go和Python比較的話,哪個比較好?GoPython
- Python中x=y與x==y的區別。(比較簡單)Python
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- ==和equals方法的比較
- SAP CRM和Cloud for Customer裡的Formatted Text控制元件的比較CloudORM控制元件
- Oracle date 型別比較和String比較Oracle型別
- LSM 優化系列(三)-- SILK- Preventing Latency Spikes in Log-Structured Merge Key-Value Stores ATC‘19優化Struct
- not in 和 not exists 比較和用法
- TreeMap和HashMap的元素比較HashMap
- OceanBase簡介及其與MySQL的比較MySql
- Go 與 C++ 的對比和比較GoC++
- etcd和redis比較Redis
- TCP和UDP比較TCPUDP
- Redis 和 Memcached 比較Redis
- Java和JavaSciprt比較Java
- 新增字幕哪個視訊剪輯軟體比較簡單?
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- EasyReact的簡單試用及和RAC的對比React
- powershell中的where和foreach比較
- tbase和postgres-xl的比較
- EXCEL,POI,EASYEXCEL的使用和比較Excel