キーワード:Vorbis、コーデック、信号処理、自由ソフトウェア、パブリックドメイン
皆様は、コーデックというものをご存じでしょうか。
コーデック(Codec)とは、あるデータから別のデータへの符号化(Encode)と復号(Decode)を行う装置あるいは規約のことを指します。符号化を行うことで、元のデータの品質を(ある程度)保ったまま、アナログデータからデジタルデータへの変換をしたり、デジタルデータを圧縮したりすることができます。
コーデックという単語は聞いたことが無い方でも、mp3やpngのことはご存じではないでしょうか。mp3は MPEG-1/2 Audio-Layer 3 とよばれるオーディオコーデック(と、それに基づいて作成されたファイルのフォーマット形式)で、pngは Portable Network Graphics という画像のコーデックになります。これら以外にもたくさんのコーデックが存在します。以前の記事でご紹介したLC3もオーディオコーデックの1つです。
さて、今回ご紹介するのは、Vorbisというオーディオコーデックです。「Vorbisって何?」という方が大半ではないでしょうか。それもそのはずで、確かにVorbisはオーディオコーデックではありますが、音楽ファイルのコーデックとして用いられることはあまりありません。ではVorbisはどのようなところで使われているのかというと、それはPCゲームです。Vorbisのサイト[1]に、Vorbisを利用するゲームタイトルが数多く掲載されています。
多くのゲームでVorbisが使用されている理由のひとつは、Vorbisの特徴にあります。それは、仕様がパブリックドメインとして公開されており、特許やライセンス料などの心配をすることなく使用できるということです。実は、世の中にあるコーデックには、特許で保護されているものも多く存在します。先述のmp3も、2017年に特許が切れるまではライセンスプログラムが存在しました。またpngは、当時人気だったgifの使用にライセンス料の支払いが必要となったため、gifを代替するものとして開発されたという経緯があります。一方でVorbisの仕様はパブリックドメインですから、突然ライセンス料の支払いを要求されるというような心配はありません。またVorbisは、Vorbisの仕様に沿って作られたライブラリとそのソースコードが3条項BSDライセンス(注1)の下に公開されており、自由に使うことができます。この特徴ゆえに、様々なゲームで使われているというわけです。ちなみにVorbisがパブリックドメインとなっている理由は、Vorbisを策定したXiph.orgが、インターネットという共有財産において「コモンズの悲劇(注2)」が起こるのを防ぐためには、オープンソースが必要であると考えているためです[2]。
さて、実際にVorbisを使う際にはひとつ注意する点があります。それは音信号の音質についてです。Vorbisの仕様ではデコーダーのみが明確に定義されており、そのデコーダーで正しくデコードできるデータを生成するエンコーダーはすべて正しいエンコーダーとされています。そのため、Vorbisエンコーダーを設計する際には、音質の劣化が極力少なくなるように気を遣う必要があります。一方で、特許で保護されたコーデックでは、エンコーダーの仕様も定義するなどして、必要な音質が担保されるようにしたものが多くあります。できるだけ高音質にするためにひと手間かかるという点が、Vorbisが音楽ファイルのコーデックとしてあまり利用されない理由のひとつではないかと考えています。(もちろん、Vorbisの音質が悪いというわけではありません。)
Vorbisの使い方は単にオーディオをエンコード/デコードするだけではありません。公開されている仕様やソースコードを読むことで、オーディオ信号処理について学ぶこともできますし、あるいはソースコードを改良して、オリジナルのコーデックを作成することもできます。自分の思うままに使うことができるというところも、オープンソースソフトウェアたるVorbisの面白さです。
オーディオコーデックやオーディオ信号処理に興味のある方は、ぜひ一度Vorbisのホームページをのぞいてみてください。
(注1)3条項BSDライセンスは、自由ソフトウェアの配布の際によく用いられるライセンス。このライセンスで配布されているソースコードを用いて作成したプログラムは、一定の条件を満たすことで、ソースコードを開示する必要がなくなる。
(注2)コモンズの悲劇は、多人数に開かれた共有資源において各人が自身の利益を最大化した結果、資源が枯渇してしまうという現象。
<参考文献>
[1] https://wiki.xiph.org/Games_that_use_Vorbis(2022年9月15日参照)
[2] https://xiph.org/about/(2022年9月26日参照)
η