Opus是一個有損音頻壓縮的數碼音頻編碼格式,由Xiph.Org基金會開發,之後由互聯網工程任務組(IETF)進行標準化,目標是以單一格式對語音和一般音頻進行高效編碼,確保音質同時保持足夠低的延遲以實現即時互動通訊,並且對於低階嵌入式處理器來說有足夠低的複雜性[3][4],適用於網絡上低延遲的即時聲音傳輸,取代Speex和Vorbis,標準格式定義於RFC 6716檔案。Opus格式是一個開放格式,使用上沒有任何專利或限制。
開發者 | Xiph.Org基金會 |
---|---|
首次發佈 | 2012年8月26日 |
目前版本 | 1.3.1(2019年4月12日 | )
程式語言 | C89 |
平台 | 跨平台 |
類型 | 聲音編碼,參考實作 |
許可協定 | 3-clause BSD 許可證 |
網站 | Opus codec downloads |
Opus整合了兩種聲音編碼的技術:以語音編碼為導向的SILK和低延遲的CELT。Opus可以無縫調節高低位元速率。在編碼器內部它在較低位元速率時使用線性預測編碼在高位元速率時候使用變換編碼(在高低位元速率交界處也使用兩者結合的編碼方式)。Opus具有非常低的演算法延遲(預設為22.5 ms)[5],非常適合用於低延遲語音通話的編碼,像是網絡上的即時聲音串流、即時同步聲音旁白等等,此外Opus也可以透過降低編碼位元率,達成更低的演算法延遲,最低可以到5 ms。在多個聽覺盲測中,Opus都比MP3、AAC、HE-AAC等常見格式,有更低的延遲和更好的聲音壓縮率。
技術特性
Opus可以處理各種音頻應用,包括IP語音、影片會議、遊戲內聊天、串流音樂、甚至遠端現場音樂表演。它可以從低位元速率窄帶語音擴展到非常高清音質的立體聲音樂。支援的功能包括:
- 6 kb/秒到510 kb/秒的位元速率;單一頻道最高256 kb/秒
- 取樣率從8 kHz(窄頻)到48 kHz(全頻)
- 幀大小從2.5毫秒到60毫秒
- 支援恆定位元速率(CBR)、受約束位元速率(CVBR)和可變位元速率(VBR)
- 支援語音(SILK層)和音樂(CELT層)的單獨或混合模式
- 支援單聲道和立體聲;支援多達255個音軌(多數據流的幀)
- 可動態調節位元速率,音頻頻寬和幀大小
- 良好的魯棒性遺失率和封包遺失隱藏(PLC)
- 浮點和定點實現
開發歷史
Opus被提出用於在IETF上標準化新的音頻格式,最終被IETF編解碼器工作組接受和授予。它基於Xiph.Org基金會和Skype技術公司兩項最初分開的標準提案。其主要開發人員包括Jean-Marc Valin(Xiph.Org,Octasic,Mozilla Corporation),Koen Vos(Skype)和Timothy B. Terriberry(Xiph.Org,Mozilla Corporation)。其中包括Juin-Hwey(Raymond)Chen(Broadcom),Gregory Maxwell(Xiph.Org,Wikimedia)和Christopher Montgomery(Xiph.Org)也參與其中。
CELT的發展部分格式可以追溯到Vorbis的繼任者的工作名稱Ghost下。作為Xiph.Org基金會的新一代語音編解碼器,Opus取代了Xiph的較早的語音編解碼器Speex,該版本是Jean-Marc Valin先前的一個項目。CELT自2007年11月起開始工作。
SILK部分自2007年1月起一直在Skype開發,作為其SVOPC的繼任者,該公司是一個內部項目,使公司獨立於iSAC和iLBC等第三方編解碼器和相應的許可證付款。
2009年3月,Skype建議在IETF內開發和規範寬頻音頻格式。之後一年內,在是否要建立IETF工作群組方面發生了巨大辯論。[6]。參與專利保護競爭格式標準化的幾家公司的代表表示反對開始免版稅格式的標準化過程,其中包括G.719的創始人和許可人Polycom和愛立信,以及G.718的建立者法國電信,華為和橙色實驗室(法國電信部門)。
2010年2月,工作群組正式建立。2010年7月,提出了一種混合格式的原型,將兩種提出格式的候選者SILK和CELT相結合。2010年9月,Opus作為標準化提案提交給IETF。在短時間內,格式在2010年10月獲得現有名稱之前,以Harmony的名義出現[7]。2011年2月初,位元流格式暫時凍結,但有待最後更改[8]。2011年7月底,Jean-Marc Valin被Mozilla公司僱用,繼續開發Opus[9]。2011年11月,工作組最近發出了關於位元流格式的更改的通知。位元流自2012年1月8日以來已被凍結[9]。2012年7月2日,Opus被IETF批准用於標準化[10]。參考軟件中輸入8月8日發佈的候選狀態[11]最後的規範發佈的RFC 6716於2012年9月10日[12][13],和版本為1.0和1.0.1 參考實現被釋放一天之後。
2013年7月11日,Opus 1.0.3帶來了錯誤修復和一個新的Surround聲音API,可以提高音軌分配和質素,特別是低頻音軌(LFE)[14]。
2013年12月5日,Opus 1.1發佈[14],整體速度提升和顯著的編碼器質素改進:調諧估計提高了以前有問題的樣本的位元速率和質素(如大鍵)、自動語音/音樂檢測提高了混合音頻的質素、中階立體聲降低了許多歌曲的位元速率需求、提高瞬態帶寬精度、以及DC抑制低於3 Hz。增加了兩種新的VBR模式:不受限制質素一致和即時VBR,可以提升響亮的畫面,並通常提高清音質。
Opus 1.1.1於2015年11月26日發佈,並於2016年1月12日發佈了1.1.2,同時增加了速度優化和錯誤修復。2016年7月15日發佈版本1.1.3,並包含錯誤修復、優化、文件更新和實驗性的Ambisonics工作。
2017年6月26日,Opus 1.2.1版本發佈,精簡了音頻檔體積,改善了音頻質素,增強了部分情況下的安全性,編解碼器效率提升。準備推動RFC 6716標準更新,標準未更新之前繼續相容RFC 6716。此版本也帶來了面向VR的立體聲音頻解決方案。
libopus 1.3 於 2018 年 10 月 18 日發佈。 Opus 1.3 主要版本再次帶來質素改進、新功能和錯誤修復。自 1.2.x 以來的變化包括:
- 使用循環神經網絡 (RNN) 改進語音偵測和語音/音樂分類
- 支援使用通道對映系列 2 和 3 的 Ambisonics 編碼
- 改進低位元率下立體聲語音的效果
- 在 9 kbit/s 的位元率下使用寬頻語音編碼(不再使用中帶)
- 使 SILK 的位元率可降至 5 kbit/s
- 音調質素略有改善
- 預設啟用 RFC 8251 中的規格修復
- 安全/強化改進
值得注意的錯誤修復包括:
- 對 CELT PLC 的修復
- 頻寬偵測修復
音質和低延遲比較
Opus在更高的位元速率下,已被證明具有優異的音質,而它的音頻格式比AAC、HE-AAC和Vorbis更具有競爭力[15]。
在64kbit / s的聽力測試中,與HE-AAC編解碼器相比,Opus表現出更優異的音質,HE-AAC由於使用了專利的頻譜帶複製(SBR)技術,這些編解碼器在以前佔主導地位[16][17]。在96 kbit / s的聽力測試中,Opus顯示出比Vorbis略高的音質,與AAC和MP3相比音質明顯更好[18]。
Opus具有非常低的演算法延遲,作為低音頻延遲通訊鏈路一部分的必要性,可以在現場活動中允許自然對話,網絡音樂表演或對嘴表演。音頻格式的總演算法延遲是無論處理速度和傳輸速度如編碼器和實況音頻流的解碼器必須承擔的延遲的總和,例如將音頻樣本緩衝到塊或幀中,允許窗口重疊和可能允許對噪聲整形在解碼器中先行和任何其他形式的先行的,或用於將MP3編碼器,使用的位元儲存器[19]。
150毫秒以下的單向延遲是大多數VoIP系統的首選目標[20] ,使自然對話與轉向受到延遲的影響很小。音樂家通常會感覺到高達約30毫秒音頻延遲的時間[21],大致符合Haas效果的融合時間,儘管將每個用戶自己的樂器的播放延遲與往返延遲相匹配也可以有所幫助[22]。音頻╱影片同步,約45-100毫秒的音頻延遲可能是可以接受的[23]。
Opus允許減少質素或提高位元速率以實現更小的演算法延遲(最小5.0 ms)[24]。雖然參考實現的默認Opus幀為20.0 ms長,但SILK層需要進一步5.0 ms的前瞻加1.5 ms進行重採樣,默認延遲為26.5 ms。當CELT層處於活動狀態時,默認情況下,為了與SILK層同步,窗口重疊需要2.5 ms的前視,其中添加了4.0 ms的匹配延遲。如果編碼器在特殊限制低延遲模式下實例化,則刪除4.0 ms匹配延遲,並禁用SILK層,允許5.0 ms的最小演算法延遲[5]。
部署與採用
格式和演算法是公開的,參考實作是作為自由軟件發佈的。Xiph的參考實現稱為libopus,一個名為opus-tools的包提供命令列編碼器和解碼器實用程式。它是根據BSD授權條款發佈的。它是用C語言編寫的,可以針對具有或不具有浮點單元的硬件架構進行編譯。隨附的診斷工具opusinfo報告有關Opus檔案的詳細技術資訊,包括有關位元流格式標準符合性的資訊。它是基於ogginfo從因此,與編碼器和解碼器不同,vorbis-tools可以在GPL第2版的條款下使用。
RFC 6716包含用C編寫的參考實現的完整原始碼。FFmpeg的項目[25]和GStreamer的項目[26]具有編碼器和解碼器的實現不是從參考庫的。libopus參照庫已作為名為Concentus的項目的一部分移植到C#和Java。這些移植版本犧牲了效能,以便輕鬆整合到跨平台應用程式中。[27]
該GatesAir Intraplex IP Link和Tieline廣播IP音頻編解碼器的梅林和精靈族和Tieline報告-IT移動編解碼器添加到嵌入式和流動裝置的作品的支援。[28]Digital Radio Mondiale - AM頻率的數字無線電格式 - 可以使用Dream 軟件定義的無線電廣播和接收Opus音頻(儘管在官方標準中未被識別)。在維基媒體基金會贊助的免費和開源的在線的JavaScript作品編碼器,瀏覽器支援所需的HTML5功能。[29]
自 2016 年以來,WhatsApp一直使用 Opus 作為其音頻檔格式。[30]
Signal在2017年初從Speex切換到Opus音頻編解碼器,以提供更好的音頻質素。
2018 年,SoundCloud 從 MP3 切換到 Opus,將音樂串流媒體所需的頻寬減少了一半。[31]
大多數最終用戶軟件依賴於作業系統提供的多媒體框架。Native Opus編解碼器支援在類Unix作業系統的大多數主要多媒體框架中實現,包括GStreamer,FFmpeg和Libav庫。[33][34][35]
谷歌在Android 5.0(「Lollipop」)中添加了對Opus音頻播放的原生支援。[36]將載體限定,然而,對作品的音頻包封在Matroska的容器,如.mkv和.webm檔案。[37][38]Android 6.0(「Marshmallow」)和Android 7.0(「Nougat」)增加了對封裝在Ogg容器中的Opus音頻的支援。
由於在Apple的WebKit彩現引擎中增加了WebRTC支援,macOS High Sierra和iOS 11為封裝在核心音頻格式(Core Audio Format)容器中的Opus音頻提供原生播放支援。[39]
在Windows 10上,Microsoft為封裝在Matroska中的 Opus音頻和Windows 10週年更新(1607)裝置的WebM檔案提供本機支援。[40] Web Media Extensions提供了對封裝在Ogg容器中的Opus音頻的支援,Web Media Extensions是Windows 10 Fall Creators Update(1709)裝置的可選附件。[41]在Windows 8.1及更早版本中,第三方解碼器(如LAV過濾器)可用於提供有限的支援。[42]
Microsoft Windows | macOS | Linux | Android | iOS | |
---|---|---|---|---|---|
編解碼器支援 | 是 部分:Win 10 v1607 完整:Win 10 v1903 |
是 (有限的容器支援) |
是 | 是 部分:Android 5 完整:Android 10 |
是 完整:iOS 17+ |
容器支援 | 在Windows 10週年更新(1607): WebM (.webm) Matroska (.mka, .mkv) 在Windows 10 Fall Creators更新(1709)上使用Web Media Extensions附加組件: Ogg[a]在 Windows 10 October 2018 更新 (1809): WebM 在 Windows 10 May 2019 更新 (1903): Ogg (.opus, .oga, .ogg) |
核心音頻格式 (.caf) | Ogg (.opus) WebM (.webm) Matroska (.mka, .mkv) MPEG-TS (.ts) MP4 (.mp4) |
在 Android 5: WebM (.webm) Matroska (.mka, .mkv) 在 Android 6/Android 7: Ogg[a] 在 Android 10: Ogg (.opus, .oga, .ogg) |
核心音頻格式 (.caf) MP4 (.mp4) |
備註 | 在Windows 10上: - 需要Fall Creators Update(1709)並安裝Web Media Extensions附加組件以支援Ogg容器。 - 在通用Windows平台應用程式(Groove Music,Microsoft Movies&TV)上受支援。Windows Media Player上不支援。 - 直到v1809,無法識別檔案擴展名.opus(替換為.m4a)[44] 在Windows 8.1及更早版本中: - 需要安裝LAV Filters |
僅支援CAF容器中的Opus音頻。 | – | 直到Android 9,無法識別檔案擴展名.opus。(用.ogg或.m4a代替)[43] | 支援MP4/CAF容器中的Opus音頻。 |
雖然多媒體框架中的支援自動支援Opus對基於此類框架構建的軟件的支援,但是一些應用程式開發人員為在其軟件中支援Opus音頻格式做出了額外的努力。這種支援被添加到AIMP[45], Amarok[46],cmus,音樂播放器守護進程,foobar2000[47],Mpxplay,MusicBee[48],SMplayer,VLC多媒體播放器[49], Winamp[50] 和Xmplay音頻播放器; Icecast[51],Airtime(軟件)[52]音頻流軟件; 和Asunder音頻CD,CDBurnerXP CD刻錄機,FFmpeg,Libav和MediaCoder媒體編碼工具。流媒體Icecast無線電試驗自2012年9月和2013年1月開始實施[53][54]。SteamOS使用Opus或Vorbis進行串流音頻[55]。
對於WebRTC實現,Opus支援是強制性的[56]。Opus在Mozilla Firefox[57],Chromium和Google Chrome[58],基於Blink的Opera[59][60],以及依賴GStreamer支援多媒體格式的類Unix系統的所有瀏覽器中得到支援。雖然Internet Explorer本身不提供播放Opus音頻的功能,但Microsoft Edge瀏覽器內建了對Opus格式(和VP9)的支援,從而實現了對WebM的完全支援[61][62]。從iOS 11和MacOS High Sierra開始,Safari支援Opus[63]。
由於其能力,Opus從VoIP軟件供應商那裏獲得了早期的興趣。幾個SIP客戶端,包括Acrobits Softphone,Bria X-Lite,CSipSimple(通過附加外掛程式),Empathy(通過GStreamer),Jitsi[64],Tuenti[65],Line2(目前僅在iOS上)[66],Linphone[67],Phoner和PhonerLite[68],SFLphone[69],Mumble,Discord[70]和TeamSpeak 3語音聊天軟件也支援Opus[71][72][73]。TrueConf在其VoIP產品中支援Opus[74]。由於法律原因,Asterisk缺乏內建的Opus支援[75],但第三方補丁可供下載[76]並且2016年9月增加了通過二進制blob的官方支援[77]。Tox P2P影片會議軟件使用Opus只[78]。分類廣告分佈式訊息傳遞應用程式在其VoIP實現中在TLS通訊端內傳送原始opus幀[79]。的PlayStation 4遊戲機也採用了CELT /電視劇編解碼器,其系統黨的聊天[80]。
從版本3.13開始,Rockbox在支援的可攜式媒體播放器上播放Opus ,包括Apple的iPod系列產品,iriver,Archos和Sandisk製造的裝置,以及使用「Rockbox as a Application」的Android裝置[81][82]。所有最近的Grandstream IP電話都支援Opus音頻編碼和解碼。OBihai OBi1062,OBi1032和OBi1022 IP電話全部支援Opus。最近的BlueSound無線揚聲器支援Opus播放[83]。
註釋
參考資料
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.