Opus (音声圧縮)

Opus(オーパス)は、インターネットでの双方向通信に特化した非可逆音声圧縮フォーマットであり、IETFによって標準化されています。RFC 6716として公開されており、そのリファレンス実装BSDライセンスの下で提供されています。特筆すべきは、Opusに関連する全ての既知のソフトウェア特許がロイヤリティフリーでライセンスされている点です。

Opusは、スピーチ向けに設計されたSILKと、低遅延で音楽にも対応できるCELTという2つのコーデック技術を統合しています。ビットレートをシームレスに調整でき、低ビットレート時は線形予測コーデック、高ビットレート時は変換コーデックを使用します。必要に応じて、両者を短時間オーバーラップさせるハイブリッドモードも可能です。

Opusの大きな特徴は、非常に小さいアルゴリズム遅延(デフォルトで22.5ms)を持つことです。これにより、会話、ネットワーク上での音楽演奏、ライブイベントなどでのリップシンクが実現可能となり、低遅延オーディオ通信に不可欠な要素となります。さらに、音声品質をある程度犠牲にすれば、アルゴリズム遅延を5msまで縮小することも可能です。MP3Vorbis、HE-AACなどの従来の音楽コーデックが100ms以上の遅延を持つことを考えると、Opusは遅延を大幅に削減しつつ、音質も遜色ないレベルを維持しています。また、Opusは個々のファイルに巨大なコードブック定義を持たせる必要がないため、短い音声クリップの保管にも適しています。

機能



Opusは、6kbpsから510kbpsのビットレート範囲、2.5msから120msのフレームサイズ、8kHzから48kHzのサンプリングレートに対応し、固定および可変ビットレートエンコードをサポートしています。ストリーミングでは、ミッド/サイドコーディングにより2つのチャンネルを結合できるため、最大255チャンネルの音声に対応可能です。

Opusの低遅延性(デフォルト22.5ms)は、電話VoIPビデオ会議といったリアルタイム通信に最適です。Xiph.Org Foundationが開発したCELTコーデック技術により、高品質な音声を維持しながら低遅延を実現しています。また、ストリーミング中のビットレート、帯域幅、遅延は、音の歪みや中断なしにシームレスに変更可能です。

オープンスタンダードとして、Opusのアルゴリズムは文書で公開されており、リファレンス実装ソースコードを含む)も提供されています。CELTのアルゴリズムにはブロードコムXiph.Org Foundation、SILKのアルゴリズムにはスカイプ・テクノロジーズ(現マイクロソフト)がソフトウェア特許を保有していますが、IETF標準として承認されたOpusの使用に関しては、これらの特許はロイヤリティフリーで利用可能です。

Opusは、低遅延のCELTとスピーチ用のSILKをベースにしていますが、両コーデックともOpusに統合するために大幅な変更が加えられています。CELTは、修正離散コサイン変換(MDCT)をベースにした変換レイヤーであり、20msフレームの追加などの変更が加えられています。SILKは、線形予測符号(LPC)とオプションの長期予測フィルタをベースとしたスピーチ信号に特化したレイヤーで、10msフレームの追加などが行われています。

Opusには3つの異なるモードがあります。2つは純粋なスピーチ信号用で、残りの1つは一般的なオーディオ(音楽を含む)用です。スピーチモードの一つは、全可聴範囲のスペクトラムを再生可能で、高周波数帯域(8kHz以上)はCELT、低周波数帯域はSILKが担当します。低ビットレート(約30kbps以下)では、上限周波数を遮断し、SILKが低周波帯域を処理します。高ビットレートのオーディオでは、SILKレイヤーは省略され、CELTレイヤーが使用されます。

リファレンス実装C言語で記述されており、FPU(浮動小数点演算装置)の有無に関わらず、多様なハードウェアアーキテクチャで利用可能です。浮動小数点は、主に音声帯域検出とエンコードモードの動的な切り替え、速度最適化のために利用されます。

OpusのデータはOggコンテナに格納できます。この場合、ストリームの内容は`audio/ogg; codecs=opus`で指定する必要があり、ファイルの拡張子は`.opus`にすることが推奨されます。その他、MatroskaWebMコンテナにも格納可能です。

歴史



Opusは、IETFで新たな音声コーデック標準として計画されました。Xiph.Org Foundationとスカイプ・テクノロジーズ(現マイクロソフト)による2つの標準化計画が統合されたものです。主要開発者としてジーン=マーク・ヴァリン、コエン・ボス、ティモシー・B・テリーベリーらが挙げられます。

CELTの開発は、Vorbisの後継として始まり、Speexを置き換えるものとして位置づけられました。CELTは2007年9月より公開されています。一方、SILKはスカイプが内部プロジェクトとして開発していたSVOPCの後継として2007年1月より開発が開始されました。

2009年3月、スカイプはIETFによる広帯域音声コーデックの開発と標準化を提案しましたが、ワーキンググループの形成に時間を要しました。ロイヤリティフリーのコーデック標準化に対し、競合するフォーマットの標準化を進める企業が異議を唱えたためです。ワーキンググループが最終的に形成されたのは2010年2月です。

2010年6月、SILKとCELTを組み合わせたハイブリッドフォーマットのプロトタイプが登場し、9月にはOpusとしてIETFに標準化提案が提出されました。一時「Harmony」という名称だった時期もありましたが、最終的にOpusとして定着しました。ビットストリームフォーマットの最終変更を経て、2012年7月2日、Opusの標準化がIETFによって承認されました。リファレンスソフトウェアは8月8日にリリース候補となり、最終的な仕様は2012年9月10日にRFC 6716としてリリースされました。その後、リファレンス実装のバージョン1.0および1.0.1が公開されました。

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



Opusは、高いビットレートにおいてHE-AACVorbisといった遅延の大きいコーデックと競合するほどの高品質を実現しています。64kbpsでのリスニングテストでは、低ビットレートで優位だったHE-AACよりも優れた品質を示し、96kbpsではAACよりもわずかに優れ、VorbisMP3と比較すると著しく良い結果となりました。

レイテンシは、会話、音楽演奏、リップシンクなどのリアルタイム用途において重要な要素です。Opusは、これらの用途に必要な低アルゴリズム遅延を備えています。一般的な音声コーデックのアルゴリズム遅延は、信号をブロックに分割し、オーバーラップ処理を行うための遅延、先読みによるノイズシェーピングのための遅延などから構成されます。

合計の一方向遅延が150ms以下であれば、会話中の発話交代による遅延の影響を最小限に抑えられ、自然な会話が実現可能です。音楽家がリアルタイムで感じる30msまでのオーディオ遅延はハース効果の融合時間と一致し、楽器の再生遅延と往復待ち時間の調整にも役立ちます。45msから100ms程度の遅延はリップシンクが許容できる範囲とされています。

Opusは、品質とビットレートのバランスを取りながら、アルゴリズム遅延を最小5.0msまで縮小可能です。デフォルトのOpusフレームは20msですが、CELTレイヤーのオーバーラップ処理やSILKレイヤーのノイズシェーピングのために、さらに2.5msの先読みが必要となり、合計22.5msの遅延となります。SILKレイヤーの最小フレームは10ms(遅延12.5ms)、CELTレイヤーの最小フレームは2.5ms(遅延5.0ms)です。

対応



Opusのフォーマットとアルゴリズムはオープンであり、リファレンス実装も自由ソフトウェアとして公開されています。エンコーダーとデコーダーで構成されるリファレンス実装(Opus Audio Tools, opus-tools)はBSDライセンスの下で提供されています。C言語で書かれており、FPUの有無に関わらずコンパイル可能です。

Opusは様々なプラットフォーム、ソフトウェア、ハードウェアで幅広くサポートされています。Discord、Mumble、Skype、TrueConf、JitsiなどのVoIPソフトウェア、Firefox、Chrome、OperaなどのWebブラウザ、Icecastなどのストリーミングサービス、Linux、Windows、Android、iOSなどのオペレーティングシステム、AIMP、foobar2000、VLC media playerなどのメディアプレーヤーで利用できます。

Opusは、WebRTCの実行に不可欠であり、現代のインターネット通信において重要な役割を果たしています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。