Opus (音訊格式)

Opus是一個有損音訊壓縮的數位音訊編碼格式，由Xiph.Org基金會開發，之後由網際網路工程任務組（IETF）進行標準化，目標是以單一格式對語音和一般音訊進行高效編碼，確保音質同時保持足夠低的延遲以實現即時交互通信，並且對於低端嵌入式處理器來說有足夠低的複雜性，適用於網路上低延遲的即時聲音傳輸，取代Speex和Vorbis，標準格式定義於RFC 6716文件。Opus格式是一個開放格式，使用上沒有任何專利或限制。

Opus整合了兩種聲音編碼的技術：以語音編碼為導向的SILK和低延遲的CELT。Opus可以無縫調節高低比特率。在編碼器內部它在較低比特率時使用線性預測編碼在高比特率時候使用變換編碼（在高低比特率交界處也使用兩者結合的編碼方式）。Opus具有非常低的演演算法延遲（預設為22.5 ms），非常適合用於低延遲語音通話的編碼，像是網路上的即時聲音串流、即時同步聲音旁白等等，此外Opus也可以透過降低編碼位元率，達成更低的演演算法延遲，最低可以到5 ms。在多個聽覺盲測中，Opus都比MP3、AAC、HE-AAC等常見格式，有更低的延遲和更好的聲音壓縮率。

Opus在Discord、WhatsApp等應用程式中廣泛用作IP語音（VoIP）的編解碼器。

## 技術特性

<image>

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工作組方面發生了巨大辯論。參與專利保護競爭格式標準化的幾家公司的代表表示反對開始免版稅格式的標準化過程，其中包括G.719的創始人和許可人Polycom和愛立信，以及G.718的創建者法國電信，華為和橙色實驗室（法國電信部門）。

2010年2月，工作組正式創建。2010年7月，提出了一種混合格式的原型，將兩種提出格式的候選者SILK和CELT相結合。2010年9月，Opus作為標準化提案提交給IETF。在短時間內，格式在2010年10月獲得現有名稱之前，以Harmony的名義出現。2011年2月初，比特流格式暫時凍結，但有待最後更改。2011年7月底，Jean-Marc Valin被Mozilla公司僱用，繼續開發Opus。2011年11月，工作組最近發出了關於比特流格式的更改的通知。比特流自2012年1月8日以來已被凍結。2012年7月2日，Opus被IETF批准用於標準化。參考軟體中輸入8月8日發布的候選狀態最後的規範發布的RFC 6716於2012年9月10日，和版本為1.0和1.0.1 參考實現被釋放一天之後。

2013年7月11日，Opus 1.0.3帶來了錯誤修復和一個新的Surround聲音API，可以提高音軌分配和質量，特別是低頻音軌（LFE）。

### 1.1

2013年12月5日，Opus 1.1發布，整體速度提升和顯著的編碼器質量改進：調諧估計提高了以前有問題的樣本的比特率和質量（如大鍵）、自動語音/音樂檢測提高了混合音訊的質量、中端立體聲降低了許多歌曲的比特率需求、提高瞬態帶寬精度、以及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工作。

### 1.2

2017年6月26日，Opus 1.2.1版本發布，精簡了音訊文件體積，改善了音訊質量，增強了部分情況下的安全性，編解碼器效率提升。準備推動RFC 6716標準更新，標準未更新之前繼續兼容RFC 6716。此版本也帶來了面向VR的立體聲音頻解決方案。

### 1.3

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 的修復
- 頻寬偵測修復

## 音質和低延遲比較

<image>

Opus在更高的比特率下，已被證明具有優異的音質，而它的音訊格式比AAC、HE-AAC和Vorbis更具有競爭力。

第一個是未壓縮的WAV文件，第二個是使用LAME以16 kbit/s編碼的MP3文件，第三個是以16 kbit/s編碼的Opus文件。

在64kbit/s的聽力測試中，與HE-AAC編解碼器相比，Opus表現出更優異的音質，HE-AAC由於使用了專利的頻譜帶複製（SBR）技術，這些編解碼器在以前占主導地位。在96 kbit/s的聽力測試中，Opus顯示出比Vorbis略高的音質，與AAC和MP3相比音質明顯更好。

Opus具有非常低的演算法延遲，作為低音頻延遲通信鏈路一部分的必要性，可以在現場活動中允許自然對話，網路音樂表演或對嘴表演。音訊格式的總演算法延遲是無論處理速度和傳輸速度如編碼器和實況音訊流的解碼器必須承擔的延遲的總和，例如將音訊樣本緩衝到塊或幀中，允許窗口重疊和可能允許對噪聲整形在解碼器中先行和任何其他形式的先行的，或用於將MP3編碼器，使用的比特儲存器。

150毫秒以下的單向延遲是大多數VoIP系統的首選目標，使自然對話與轉向受到延遲的影響很小。音樂家通常會感覺到高達約30毫秒音訊延遲的時間，大致符合Haas效果的融合時間，儘管將每個使用者自己的樂器的播放延遲與往返延遲相匹配也可以有所幫助。音訊╱影片同步，約45-100毫秒的音訊延遲可能是可以接受的。

Opus允許減少質量或提高比特率以實現更小的演算法延遲（最小5.0 ms）。雖然參考實現的默認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的最小演算法延遲。

## 部署與採用

格式和算法是公開的，參考實作是作為自由軟體發布的。Xiph的參考實現稱為libopus，一個名為opus-tools的包提供命令行編碼器和解碼器實用程序。它是根據BSD授權條款發布的。它是用C語言編寫的，可以針對具有或不具有浮點單元的硬體架構進行編譯。隨附的診斷工具opusinfo報告有關Opus文件的詳細技術資訊，包括有關比特流格式標準符合性的資訊。它是基於ogginfo從因此，與編碼器和解碼器不同，vorbis-tools可以在GPL第2版的條款下使用。

### 實作

RFC 6716包含用C編寫的參考實現的完整源代碼。FFmpeg的項目和GStreamer的項目具有編碼器和解碼器的實現不是從參考庫的。libopus引用庫已作為名為Concentus的項目的一部分移植到C＃和Java。這些移植版本犧牲了性能，以便輕鬆集成到跨平台應用程序中。

### 軟體

該GatesAir Intraplex IP Link和Tieline廣播IP音訊編解碼器的梅林和精靈族和Tieline報告-IT移動編解碼器添加到嵌入式和移動設備的作品的支持。Digital Radio Mondiale - AM頻率的數字無線電格式 - 可以使用Dream 軟體定義的無線電廣播和接收Opus音訊（儘管在官方標準中未被識別）。在維基媒體基金會贊助的免費和開源的在線的JavaScript作品編碼器，瀏覽器支持所需的HTML5功能。

自 2016 年以來，WhatsApp一直使用 Opus 作為其音訊文件格式。

Signal在2017年初從Speex切換到Opus音訊編解碼器，以提供更好的音訊質量。

2018 年，SoundCloud 從 MP3 切換到 Opus，將音樂流媒體所需的帶寬減少了一半。

2021 年 1 月，Vimeo 將 Opus 引入其影片平台。

#### 作業系統支持

大多數最終使用者軟體依賴於作業系統提供的多媒體框架。Native Opus編解碼器支持在類Unix作業系統的大多數主要多媒體框架中實現，包括GStreamer，FFmpeg和Libav庫。

谷歌在Android 5.0（「Lollipop」）中添加了對Opus音訊播放的原生支持。將載體限定，然而，對作品的音訊包封在Matroska的容器，如.mkv和.webm文件。Android 6.0（「Marshmallow」）和Android 7.0（「Nougat」）增加了對封裝在Ogg容器中的Opus音訊的支持。

由於在Apple的WebKit渲染引擎中增加了WebRTC支持，macOS High Sierra和iOS 11為封裝在核心音頻格式(Core Audio Format)容器中的Opus音訊提供原生播放支持。

在Windows 10上，Microsoft為封裝在Matroska中的 Opus音訊和Windows 10週年更新（1607）設備的WebM文件提供本機支持。Web Media Extensions提供了對封裝在Ogg容器中的Opus音訊的支持，Web Media Extensions是Windows 10 Fall Creators Update（1709）設備的可選附件。在Windows 8.1及更早版本中，第三方解碼器（如LAV過濾器）可用於提供有限的支持。

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在 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 在 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）在Windows 8.1及更早版本中: - 需要安裝LAV Filters｜僅支持CAF容器中的Opus音訊。｜直到Android 9，無法識別文件擴展名.opus。（用.ogg或.m4a代替）｜支持MP4/CAF容器中的Opus音訊。

#### 媒體播放器支持

雖然多媒體框架中的支持自動支持Opus對基於此類框架構建的軟體的支持，但是一些應用程序開發人員為在其軟體中支持Opus音訊格式做出了額外的努力。這種支持被添加到AIMP， Amarok，cmus，音樂播放器守護進程，foobar2000，Mpxplay，MusicBee，SMplayer，VLC多媒體播放器， Winamp 和Xmplay音訊播放器; Icecast，Airtime（軟體）音訊流軟體; 和Asunder音訊CD，CDBurnerXP CD刻錄機，FFmpeg，Libav和MediaCoder媒體編碼工具。流媒體Icecast無線電試驗自2012年9月和2013年1月開始實施。SteamOS使用Opus或Vorbis進行流式音訊。

#### 瀏覽器支持

對於WebRTC實現，Opus支持是強制性的。Opus在Mozilla Firefox，Chromium和Google Chrome，基於Blink的Opera，以及依賴GStreamer支持多媒體格式的類Unix系統的所有瀏覽器中得到支持。雖然Internet Explorer本身不提供播放Opus音訊的功能，但Microsoft Edge瀏覽器內置了對Opus格式和VP9的支持，從而實現了對WebM的完全支持。從iOS 11和MacOS High Sierra開始，Safari支持Opus。

#### VoIP支持

由於其能力，Opus從VoIP軟體供應商那裡獲得了早期的興趣。幾個SIP客戶端，包括Acrobits Softphone，Bria X-Lite，CSipSimple（通過附加插件），Empathy（通過GStreamer），Jitsi，Tuenti，Line2（目前僅在iOS上），Linphone，Phoner和PhonerLite，SFLphone，Mumble，Discord和TeamSpeak 3語音聊天軟體也支持Opus。TrueConf在其VoIP產品中支持Opus。由於法律原因，Asterisk缺乏內置的Opus支持，但第三方補丁可供下載並且2016年9月增加了通過二進制blob的官方支持。Tox P2P影片會議軟體使用Opus只。分類廣告分佈式消息傳遞應用程序在其VoIP實現中在TLS套接字內發送原始opus幀。PlayStation 4遊戲機也採用了CELT /電視劇編解碼器，其系統黨的聊天。

### 硬體

從版本3.13開始，Rockbox在支持的便攜式媒體播放器上播放Opus，包括Apple的iPod系列產品，iriver，Archos和Sandisk製造的設備，以及使用「Rockbox as a Application」的Android設備。所有最近的Grandstream IP電話都支持Opus音訊編碼和解碼。OBihai OBi1062，OBi1032和OBi1022 IP電話全部支持Opus。最近的BlueSound無線揚聲器支持Opus播放。

## 基本資料

- 日語原文：Opus
- 擴展名：.opus
- mime：audio/ogg, audio/opus
- 所有者：IETF 編解碼器工作組
- 發行日期：2012年9月11日
- 類型：音訊
- 使用容器：Ogg、Matroska、WebM、MPEG-TS
- 擴展自：SILK、CELT
- 標準：RFC 6716
- 啟用：是
- 免費在線檔案：是
- 頭銜：libopus
- 日語原文：libopus
- 開發者：Xiph.Org基金會
- 發行日期：2012年8月26日
- 軟體版本週期：1.5.2
- 程式語言：C89
- 平台：跨平台
- 類型：聲音編碼，參考實作
- 許可協議：3-clause BSD 許可證