この日私はいくつかのセッションに参加することができたが、そのうちの一つに「Linuxデスクトップの音声関連の乱雑を整理する」と題されたPulseAudioプロジェクトの主要開発者Lennart Poettering氏による講演があった。
Poettering氏は、Linuxの音声システムは乱雑だと主張した。サウンドデバイスをめぐってOSS、ALSA、EsounD、aRtsなどの互換性のないサウンド用APIが数多くありすぎる一方で、そのようなシステムにはどれにも制限があるという。また抽象化APIもあるものの、広く受け入れられていないとした。抽象化層は、抽象化の対象であるAPIから機能を減らしているのに、その一方で低速化の原因にもなっているとのことだ。
Poettering氏はデスクトップに欠けているのは「Compizのサウンド版」だと述べた。異なるアプリケーションは異なる音量にすることができるようになっているべきであり、VoIPの時には音楽は停止するようになっているべきであり、Xでフォアグラウンドになっているアプリケーションはバックグラウンドになっているアプリケーションよりも大きな音量にすることができるようになっているべきであり、各アプリケーションは使用する音声デバイスを覚えているべきであるという。また、再生ストリームの切り替え(例えば音楽からVoIPへの切り替え)が、いったん停止せずに可能になっているべきであり、サウンドのストリームはスピーカーとUSB経由のヘッドセットとの間を音が途切れることなくシームレスに移ることができるようになっているべきなのだという。
Poettering氏によると、Linuxでの音声関連にはそのように足りない機能があったりAPIがごたまぜ状態であったりなどという短所もあるものの、サウンドのネットワーク透過性、高レベルの音声アプリケーションの幅広さ、カーネルの低遅延性などといった長所もあるという。
Linuxで音声関連が乱雑になってしまっているのは、音声ということ自体に問題があるためではない(必然的なものではない)とPoettering氏は述べ、その証拠としてAppleのCoreAudioやWindows Vistaのユーザ空間のサウンドシステムを挙げた。そしてLinuxでの音声関連を改善するための取り組みとして、(ドライバがなくなることがあっても)OSS(Open Sound System)のAPIの利用がなくなることはないだろうということを認める必要があるとした。OSSはLinux用サウンドAPIの中で最もクロスプラットフォームなものであるため、OSSのAPIとの互換性を維持することは大切だ。ただしそれと同時に、単一のAPIへ標準化するということも不可欠なのだという。Linuxの音声は、既存のAPIを抽象化するのではなく、既存の全APIを併合して今ある機能を維持する必要があるとのことだ。
Poettering氏によるとそのような問題を解決するのが、EsounDと交換可能なGPLのモジュール形式のサウンドサーバ「PulseAudio」だという。PulseAudioはサウンドデバイスのためのプロキシで、アプリケーションからの音声データの受信やアプリケーションへの音声データの送信を行なう。PulseAudioでは、サンプリング周波数や音量の調整、フィルタの提供、サウンドのリダイレクト、チャネルのルート切り替えなどを行なうことができる。PulseAudioは34個のモジュールから構成されていて、OSS、ALSA、SolarisやWin32などのサウンドをサポートしている。またLinux用リモコン機能のLIRCまでサポートしているとのことだ。
PulseAudioは、プロフェッショナルな音声パッケージの「Jack」と競合するものではなく、一緒に使用することが可能だという。PulseAudioは、ストリーミング用のソリューションではなく、トラックの分離やデコードなどを行なうためのシステムでもない。また新たなEsounDもどきを人々に押し付けるための試みでもないという。PulseAudioは、EsounDとALSAのdmixのすべての機能をサポートしたまま交換可能であり、すぐに問題なく動くとのことだ。
現在、PulseAudioはほとんどのディストリビューションに含まれているが、デフォルトでは有効になっていない。この度Poettering氏はRed Hat社で働くことになったそうなので、もしかするとFedora 8ではデフォルトで有効になるかもしれないとのことだ。
