Opus (音声圧縮)

機能

6 kbit/sから510 kbit/s、フレームサイズ2.5 msから60 ms、サンプリングレート8 kHz（帯域幅4 kHz）から48 kHz（帯域幅20 kHz、つまり、人間の持っている聴覚系の全聴力範囲を再現することが可能）の範囲での固定及び可変ビットレートエンコードに対応している。Opusを使ったストリーミングはミッド/サイドコーディングを使って2つのチャンネルを結合できるため255までの音声チャンネルに対応できる。
Opusが持つ本質的な低遅延（既定値22.5 ms）の性質により、電話、VoIP、ビデオ会議で必要とされる同一のリアルタイムコンピューティングを実現することができる。高品質な音声のためにより高いビットレートで低遅延を維持する技術はXiph.Org FoundationがCELTというコーデックの開発で実現している。Opusを使ったストリーミング中（生放送もしくはファイル）のビットレート、帯域幅や遅延は、オーディオの歪みや断絶を伴わずに迅速かつシームレスに変更することができる。
他のオープン標準同様、アルゴリズムは文書で公開されており、またリファレンス実装（ソースコード含む）も公開されている。ブロードコムとXiph.Org FoundationはCELTのアルゴリズムでソフトウェア特許を、スカイプ・テクノロジーズとマイクロソフトがSILKのアルゴリズムでソフトウェア特許を取得しているが、両特許ともIETF標準として一度承認されたコーデックであるOpusの使用に際してロイヤリティーフリーで使用できるようになっている。また、第三者による侵害訴訟対策として自身の特許を利用する権利も所有している。クアルコムや華為技術がOpusに対し非ロイヤリティーフリー特許の適用性を主張していて論争となっている。
Opusは低レイテンシのCELTとスピーチ用途のSILK（両方とも統合するために大きく変更されており、それらのオリジナル形式と互換性が無くなるほどレンダリングされている）が元となっている。変換 (en) レイヤー (CELT) はCELP（周波数領域であるものの励起コードブックである）によるアプローチのある修正離散コサイン変換 (MDCT) を元にしているだけでなく、20 msフレームの追加などの変更がなされている。スピーチ信号に特化されたSILKレイヤーは線形予測符号 (LPC) とオプションの長期予測フィルタが基になっていて、10 msフレームの追加などの変更がなされている。パケットの余計な負荷を最低限に抑えるためにSILKは60 msのより長い遅延（対してCELTは20 ms）に対応している。ハイブリッドストリーミングにおける両パーツの共有レンジコーダーはCELTによって賄われている。
このコーデックは3つの異なるモードが有り、純粋なスピーチ信号のための2つのモードと一般的なオーディオ（音楽含む）のための3番目のモードがある。スピーチモードの1つは人間が聴くことのできる範囲の完全なスペクトラムを再生することができ、CELTは周波数範囲の上部（8 kHz以上）で使われ、SILKは下部で使用される。低ビットレート（約30 kbit/s以下）において上限周波数を遮断することができ、SILKはここでも下部で使用される。オーディオでの高ビットレートではスピーチ信号に特化したSILKレイヤーは省かれ、特化していないCELTレイヤーが使用される。
レファレンス実装はC言語で書かれ、FPUのあるなしに関係なくハードウェアアーキテクチャでコンパイルされる。
OpusのデータはOggのコンテナでカプセル化することができる。そのようなOgg Opusストリームの内容はaudio/ogg; codecs=opusで指定する必要があり、Ogg Opusのファイルの拡張子は.opusにすることが推奨される。その他、Matroska、WebMのコンテナに格納することができる。

歴史

Opusは新たな音声コーデックの標準化としてIETFで計画され、IETFのコーデックワーキンググループによって最終的に承認された。Xiph.Org Foundationとスカイプ・テクノロジーズ（現マイクロソフト）による2つの当初分類されていた標準化計画に基づくものだった。主要開発者にジーン＝マーク・ヴァリン (Xiph.Org, Octasic, Mozilla Corporation)、コエン・ボス（スカイプ）、ティモシー・B・テリーベリー (Xiph.Org, Mozilla Corporation) がおり、他にジュアン＝ヒュイ（レイモンド）・チェン（ブロードコム）、グレゴリー・マクスウェル（Xiph.Org、ウィキメディア財団）、クリストファー・モンゴメリー (Xiph.Org) も関わっていた。
コーデックにおけるCELTの開発は「Ghost」のコードネームだったVorbisの後継として回帰した。OpusはXiphの古いスピーチ用コーデックでヴァリンによる初期のプロジェクトでもあるSpeexを置換するものとなっている。CELTは2007年9月より公開されている。
SILKはスカイプがiSACやiLBCといったサードパーティ製コーデックと同様、それにそれぞれのライセンスへの支払のために会社から独立させた内部プロジェクトだったSVOPCの後継として2007年1月より開発を始めた。
2009年3月、スカイプはIETFによる広帯域音声コーデックの開発と標準化を承認したが、適切なワーキンググループの形成に関する多数の議論でほぼ1年費やした。G.719の作成者でライセンサーであるポリコムとエリクソンの担当者、G.718の開発に携わったフランステレコム、華為技術、オレンジラブズ（フランステレコムの子会社）といった特許を妨げる競合するフォーマットの標準化に参加した数社の企業代表者が、ロイヤリティーフリーのコーデックの標準化プロセスの開始に関して異議を唱えた。ワーキンググループが最終的に形成されたのは2010年2月で、ITU-TのStudy Group 16が作業を支援することになった。
2010年6月、ハイブリッドフォーマットのプロトタイプがSILKとCELTの2つの計画されたコーデックを組み合わせる形で登場した。9月、OpusはIETFに標準化の提案として提出された。短期間だが、2010年10月までに現名称になるまでこのフォーマット名が「Harmony」だった時期がある。2011年2月始め、ビットストリームフォーマットが最終変更の影響で暫定的に凍結された。7月終わり近く、ジーン＝マーク・ヴァリンはOpusの開発を続けるためにMozilla Corporationに雇用された。11月、ワーキンググループはビットストリームフォーマットの変更のためにラストコールを出したが、ビットストリームは2012年1月8日以降凍結されたままとなっている。2012年7月2日、Opusの標準化がIETFによって承認された。リファレンスソフトウェアは8月8日にリリース候補状態になり、最終的な仕様は2012年9月10日に RFC 6716 としてリリースされ、リファレンス実装のバージョン1.0と1.0.1が後日公開された。一方で、とりわけフォーマットの可変ビットレートメカニズムのより広範的な利用に関するリファレンスエンコーダーの実験的な分野での開発作業が行われ、特に人声が中心のサンプルにおいて、有意なほど高いオーディオ品質を生み出すと報告された。

品質比較と低レイテンシパフォーマンス

Opusは優れた品質を持っていることが示されており、高いビットレートにおいてHE-AACやVorbisのような非常に大きい遅延のあるコーデックと競合する結果となった。
64kbpsでのリスニングテストにおいて、プロプライエタリなSpectral Band Replication (SBR) 技術を使用することで低ビットレートの分野では支配的だったHE-AACと比べても、やはり優れた品質を示した。96kbpsではOpusはわずかにAACより良く、VorbisやMP3との比較では著しく良い結果となった。
Opusは会話、ネットワークを通じた音楽公演、ライブイベントでのリップシンクを可能にする低遅延のオーディオ通信リンクの一部として使用するために必須な、非常に低いアルゴリズム遅延を備える。
コーデックの総アルゴリズム遅延は、CPUの処理速度やネットワークの伝送速度に依存しない、エンコーダとデコーダが本質的に負う遅延の合計である。このような遅延には、オーディオサンプルをバッファ上で複数のブロックやフレームに分割し、ウインドウオーバーラップができるようにするための遅延の他、ノイズシェーピングのための先読みを可能にするための遅延やその他のあらゆる先読みのための遅延、またMP3では、ビットリザーバーを使うための遅延も含むかもしれない。
150 ms以下になっている合計の一方向レイテンシは発話交替による遅延の影響が軽微な状態で自然な会話を実現するために、ほとんどのVoIPシステムとの相性が良いものになっている。音楽家が典型的にリアルタイムで感じる30 msまでのオーディオレイテンシはハース効果の融合時間とおおよそ一致するが、ユーザーの各楽器の再生遅延と往復待ち時間とのマッチングも助けることができる。45-100 msあたりのオーディオレイテンシが許容可能なリップシンクも提案されている。
Opusは更に小さいアルゴリズム遅延（最小5.0 ms）を実現するために、品質とビットレートのトレードオフを許可している。既定値のOpusのフレームは20 msの長さだが、一般的に22.5 msの遅延が与えられるCELTレイヤーによるウインドウオーバーラップやSILKレイヤーによるノイズシェーピングのためにさらに2.5 msの先読みが必要である。SILKレイヤーの最小限はフレーム10 ms（遅延12.5 ms）でCELTレイヤーの最小限はフレーム2.5 ms（遅延5.0 ms）である。

対応

フォーマットとアルゴリズムはドキュメントやリファレンス実装としてオープンになっており、フリーソフトウェアとして公開されている。別々のエンコーダーとデコーダーで構成されているリファレンス実装 (Opus Audio Tools, opus-tools) はBSDライクライセンスの下で公開されている。C言語で書かれており、FPUの有るハードウェア用にも、FPUの無いハードウェア用にもコンパイルできる。付属する診断ツールであるopusinfoはビットストリームフォーマットの標準準拠情報を含むOpusファイルの技術的情報を詳細に表示するが、vorbisツールのogginfoがベースとなっており、従ってエンコーダやデコーダーと異なりGPLV2の規約の下に公開されている。