| ケルト | |
|---|---|
| 開発元 | Xiph.Org財団 |
| フォーマットの種類 | オーディオ |
| 含ま れる | オッグ |
| 拡張 | 作品 |
| 標準 | 文書 |
| libcelt | |
|---|---|
| 開発者 | Xiph.org財団、ジャン=マルク・ヴァリン |
| プレビュー版 | 0.11.1 / 2011年2月15日 ( 2011-02-15 ) |
| タイプ | オーディオコーデック、リファレンス実装 |
| ライセンス | 2条項BSD |
| Webサイト | opus-codec.org |
Constrained Energy Lapped Transform ( CELT ) は、オープンでロイヤリティフリーの非可逆音声圧縮フォーマットであり、特にアルゴリズム遅延が小さいフリーソフトウェアコーデックで、低遅延音声通信での使用に適しています。アルゴリズムは公開文書化されており、ソフトウェア特許の制限を受けることなく使用できます。このフォーマットの開発は、Xiph.Org Foundation ( Oggコーデックファミリーの一部として) によって維持され、その後、インターネット技術タスクフォース(IETF)のOpusワーキンググループによって調整されました。
CELTは、高音質と低遅延の両方が求められるアプリケーションにおいて、VorbisとSpeexの間のギャップを埋めることを目的としていました。 [ 1 ]音声と音楽の両方に適しています。CELPアルゴリズムのアイデアを取り入れていますが、周波数領域のみで動作することで、その制限の一部を回避しています。[ 1 ]
オリジナルのスタンドアロン版CELTはOpusに統合されました。そのため、スタンドアロン版CELTは現在廃止され、時代遅れとなっています。開発は、OpusのレイヤーとしてSILKと統合されたハイブリッド版のみで行われています。この記事では、歴史的なスタンドアロン版について解説します。統合版とそのOpusへの統合以降の進化については、Opusに関する記事をご覧ください。
CELT の中心的な特徴は、アルゴリズムの遅延が少ないことです。通常 3 ~ 9 ms の遅延が可能ですが、同様のオーディオ品質を達成するためにビットレートを上げることで 2 ms 未満に設定することもできます。[ 2 ] CELT はモノラルおよびステレオオーディオをサポートし、音声と音楽の両方に適用できます。32 kHzから48 kHz 以上までのサンプリング レートと、チャンネルあたり 24 kbit/s から 128 kbit/s 以上までの適応型ビットレートを使用できます。[ 2 ]
CELTアルゴリズムに関する既知の知的財産権の問題はなく、そのリファレンス実装は寛容なオープンソースライセンス( 2条項BSD)の下で公開されています。[ 1 ] [ 3 ]
Vorbisと同様に、CELTはフルバンド(人間の可聴域全体)の汎用コーデックであり、特定の種類のオーディオ信号に特化していないため、姉妹プロジェクトであるSpeexとは異なります。このフォーマットは、高ビットレートで透明性の高い結果を実現するとともに、低ビットレートでも非常に優れた品質を提供します。総合的に見て、圧縮性能はMP3よりも大幅に優れていると言われており、電話などのリアルタイムアプリケーションにとって便利な機能として、CELTの低ビットレートでのオーディオ品質はHE-AACと同等です。v1は、バンドフォールディングのおかげで、約64 kbit/sでHE-AACv1よりも明らかに優れていることが証明されました。[ 4 ] [ 5 ] 比較二重盲検リスニングテストでは、約64 kbit/sでHE-AACv1よりも明らかに優れていることが証明されました。 [ 6 ]
比較的計算複雑度が低く、AACの低遅延バージョン(AAC-LD)に似ており、Vorbisの複雑度よりも大幅に低い。[ 7 ]
固定ビットレートと可変ビットレートの両方に対応しています。音声の一時停止などで信号がノイズフロアに埋もれてしまう場合、デコーダーへの信号出力をコンフォートノイズに制限することができます。ストリーミング対応フォーマットのほとんどの設定は、伝送を中断することなくリアルタイムで変更可能です。
このフォーマットは伝送エラーに対して堅牢です。パケット全体の損失やビットエラーは、音声品質の緩やかな劣化によって隠蔽することができます(パケット損失隠蔽、PLC)。

CELTは、修正離散コサイン変換(MDCT)とCELPの概念(励起用のコードブックを備えているが、周波数領域で動作する)に基づいた変換コーデックである。
初期のPCM 符号化信号は、MDCT (ウィンドウ関数) 用に比較的小さな重複ブロックで処理され、周波数係数に変換されます。特に短いブロックサイズを選択すると、一方では低遅延が可能になりますが、補償する必要のある周波数分解能の低下にもつながります。オーディオ品質をわずかに犠牲にしてアルゴリズムの遅延をさらに削減するために、ブロック間の本来の 50% の重複は、ブロックの両端でそれぞれ 8 分の 1 秒間信号を消音することにより、実質的に半分に削減されます。[ 2 ]
係数は、人間の聴覚系の臨界帯域に似せてグループ化されます。各グループのエネルギー総量が分析され、データ削減のために値が量子化され、予測値との差分のみを送信することによって予測によって圧縮されます(デルタ符号化)。
(量子化されていない)バンドエネルギー値は、生の DCT 係数から除去されます(正規化)。結果として得られる残差信号(いわゆる「バンド形状」)の係数は、ピラミッドベクトル量子化(PVQ、球面ベクトル量子化)によって符号化されます。[ 8 ]この符号化により、固定長(予測可能)のコードワードが生成され、ビットエラーに対する堅牢性が向上し、エントロピー符号化が不要になります。[ 5 ]最後に、エンコーダのすべての出力は、レンジエンコーダによって 1 つのビットストリームに符号化されます。[ 9 ] PVQ に関連して、CELT はバンド折り畳みと呼ばれる技術を使用します。これは、低いバンドの係数を高いバンドに再利用することでスペクトルバンド複製(SBR)と同様の効果をもたらしますが、アルゴリズムの遅延と計算の複雑さへの影響は SBR よりはるかに小さくなります。これにより、適切な周波数帯域でより多くの豊かさが維持され、「バーディー」アーティファクトが抑制されます。
デコーダは、レンジ符号化されたビットストリームから個々のコンポーネントを取り出し、バンドエネルギーをバンド形状係数に乗算し、iMDCTを介してPCMデータに変換します。個々のブロックは、重み付きオーバーラップ加算(WOLA)を使用して再結合されます。多くのパラメータは明示的に符号化されず、エンコーダと同じ関数を使用して再構成されます。
CELTでは、チャネル結合にM/S ステレオまたは強度ステレオを使用できます。ブロックは、隣接するフレームとは独立して記述できます (フレーム内)。たとえば、デコーダが実行中のストリームにジャンプできるようにするためです。変換コーデックでは、いわゆるプリエコーアーティファクトが聞こえることがあります。これは、鋭くエネルギーの高い音 (トランジェント) の量子化エラーが DCT ブロック全体に広がり、トランジェントが時間的に前方だけでなく後方にもマスクされないためです。CELT では、このようなアーティファクトを防ぐために、各ブロックをさらに分割できます。
Vorbis の後継の計画と草案に関する最初の作業は、2005 年にXiph.orgでGhost プロジェクト (当初は「Vorbis II」と呼ばれていた) の一部として行われました。Vorbis の作成者であるChristopher Montgomeryとのこの議論により、Jean-Marc Valin は特に低遅延のコーデックに興味を持つようになりました。Valin は 2007 年以来 CELT に取り組んでいます。 [ 5 ] 2007 年 12 月、libcelt の最初の草案バージョンがバージョン 0.0.1 として公開され、当初は「Code-Excited Lapped Transform」という名前でした。[ 10 ] [ 11 ] CELT は2009 年 7 月に「ietfcodec」ワーキンググループの下でIETF技術として確立されました。 [ 3 ] [ 12 ] [ 13 ] [ 14 ] 2009 年 5 月、 CELT コーデックのRTPペイロード フォーマットの草案が公開されました。[ 15 ]
バージョン0.9では、それまで使用されていた周波数領域で動作するピッチ予測が、時間領域における前置フィルタと後置フィルタのペアを用いたより単純なソリューションに置き換えられました[ 16 ] 。これはBroadcomのRaymond Chen氏によって提供されたものです[ 5 ]。
2011年2月4日のCELT 0.11では、フォーマットは暫定的に固定(「ソフトフリーズ」)され、予期せぬ最終変更が必要になる可能性が残されました。
CELT/ SILKハイブリッドコーデックOpus(旧称Harmony)の登場後まもなく、CELTの独立したプロジェクトとしての開発は中止され、代わりにOpus [ 17 ]をベースに開発が進められることになった。Opusは、時間領域のスペクトル範囲の下限を線形予測(SILK)で、周波数領域の上限をMDCTで処理することを目的としている。Opusのドラフトは2010年9月からIETFに登録されている。
ソフトウェアライブラリlibceltは、CELTのリファレンス実装として機能し、 C言語で記述され、 Xiph独自の3条項BSDライセンスに準じたライセンスの下でフリーソフトウェアとして公開されています。
フォーマットが最終的に確定していなかったにもかかわらず、2009年 1 月にソフト フリーズに入ったときに CELT に切り替えたEkiga [ 18 ]やFreeSWITCH [ 19 ]などの多くのVoIPアプリケーションで使用されていました。また、Mumble、TeamSpeakやその他の[ 20 ]ソフトウェアでも使用されていました。2011 年 4 月には、 FFmpegに CELT のサポートが組み込まれました。[ 21 ] [ 22 ]
CELT は、以下の組織によってもサポートまたは使用されています。[ 20 ]