AU Lab による音声処理

数年前に行った某社社内放送の為の安上がりな音声伝送の実験のまとめBlogをサルベージして来ました。OSがTigerだったり使用アプリが古かったするのは過去の物だからです。(そう言えばJackOSXとか最近どうなっているんだろう・・・)

ただAudioUnitのAUNetSendとAUNetReciveを本番投入した記事があまりないので公開してみます。



AU LabはMac OS XのCoreAudioのAudioUnitプラグインを最大限に活かせるAU Hostアプリ。
20070105-aulab.png
AU Lab2007年の年頭Live放送では、AU LabをQuickTime Encoderの音声フロントエンド・プロセッサと使用しつつ、同時に別のマシンへのTCP/IP経由でのリアルタイム高音質音声伝送の為に使用した。

20070105-2007live_1c.png
全体系統図これは会場となったホールから館内音声放送の送出設備のある機械室までの音声伝送経路が確保できないため、急場しのぎの処置として行っている。 廊下に音声ケーブルを這わせられればもっと簡単になる。
20070105-2007live_4c.png
処理チャート

AU LabはMac OS X 10.4 Tiger + Developer Tool(標準で付属だが別途インストールが必要)環境で使用できる。この環境を整えたMac間では、各種のDTM(DeskTop Music)アプリで、ネットワーク経由で高度な音声ルーティングが行える。更にCoreAudio上で動くルーティングドライバを駆使すれば、マシン内でI/Oデバイスやアプリ間ルーティングが可能になり、非常に複雑な音声処理システムを構築できる。またレイテンシー(遅延)を気にしなければ複数のマシンでの分散処理も可能。

ネットワーク経由の音声伝送はいくつかドライバがあるが、OSメーカ純正で提供されているのは珍しい。Mac OS Xでは10.4 Tiger以降CoreAudioの機能として標準実装されたが、AUNetSendとAUNetReciveという二つのAudioUnitプラグインとして動作する。

AudioUnitプラグインは対応するアプリならどれでも使用ができるが(Generatorカテゴリは比較的新しいので古いアプリは未対応)、音楽制作をするのでなければDTMアプリを持ち出すのは得策ではない。当然有償アプリだったりするし、それなりに負荷が高い。ストレートな音声処理をするにはベーシックなミキサータイプのHostアプリを使用した方が良い。

以前ならAU対応のHostアプリで、ミキサータイプと言うとRaxを使用していたが、これは有償アプリであるし、安定度に若干問題がある。

20070105-au-rax.jpg
Rax

10.4 Tigerから純正で(Developer Tool扱いではあるが)AU Labが使用できるのでこちらを使用する。RaxのようにMIDIで外部から制御はできないが、バス構成が自由なので音声処理用としてはAU Labの方が高機能だ。

20070105-au-lab2.jpg
AU Lab

Raxは固定構成だが、AU Labは自身で物理I/Oポートとの間でルーティングができる。物理I/Oの任意のポートをAU Labの入力チャンネルや出力チャンネルに割当が可能。10.4 Tigerからは物理I/Oのバンドル処理もできるので(若干制約はある)これだけでもかなり複雑な構成が可能。

また、主要なVolume、PAN、MUTE、SOLOなどのコントロールは任意のMIDI Controlに割当が可能で(Commandキーを押しながらアイテムをクリックでアサインモードに入る)MIDIシーケンサやフィジカルコントローラからコントロールが可能。下図のように、USBデバイスを任意のMIDI信号に割り当てるドライバで、キーボードの任意のキーからコントロールも可能。

20070109-au-midi.jpg
MIDI

このAU LabにJackOSXのようなソフトルーティングドライバを組み合わせれば万能なのだが、JackOSXが肝心のQuickTimeBroadcaster(QTのEncoder)と相性が悪いので、ルーティング機能の無い、仮想バスドライバのSoundFlowerと単品ルーティングアプリであるLineInを組み会わせて同等の機能を実現する。(SoundFlowerにはSoundFlowerbedと言うルーティングアプリが付属するが、今回はSoundFlowerのch増設改造をしたため、SoundFlowerbedが使用不能になった、そのため代わりにLineInを用いる)

20070105-linein2.jpg
SoundFlower+LineIn

この組み合わせでQuickTimeBroadcasterでのEncodeとAU NetでのTCP/IP音声伝送をする為に、以下の図のようなルーティングを行う。

20070105-2007live_2c.png
Routing

SoundFlowerの場合JackOSXの様に完全に自由なルーティングは行えない。今回の様な複雑なルーティングをすると、入出力がループしてしまう。それを避けるためとSoundFlowerのバス同士をルーティング(標準ではできない)するため、LineInを挿入してchを切り替えて図のルーティングを実現している。

マイクの出力はアナログミキサーで調整され、カメラの録音用と会場のPA用アンプに出力される。またそれとは別にUSBのAudio インターフェースUA-3FXの1-2chにも入力される。これをLineIn経由して SoundFlower 16ch Busの9-10chにアサインし、AU Labの入力モジュールに繋ぐ。

AU Lab内ではルートを本線(Encoder行き)とNet送り側の二つに分ける。Busを挟むのは、個別にレベル調整やミュートをし易くするため。本線側は出力で不要な帯域をカットし、聞き易くする為のイコライザと、全体のレンジを圧縮するコンプレッサをかける。これはApple付属のAUプラグインでも可能だが、操作性と視認性の高い(かつ軽い)WaveArts社のTrackPlug 5(の試用版)を使用する。

20070105-au-watp5.jpg
TrackPlug5

本線出力はSoundFlower 16ch Busの3chに戻される。このままでは後段のQuickTimeBroadcasterで選択できないので、LineInを使用してSoundFlower 2ch Busの1-2chにルーティングし直す。(この辺は簡略化できる余地がある)QuickTimeBroadcasterでは入力にSoundFlower 2ch Busを選択する。QTBでEncodeされた信号は、TCP/IP 経由でQuickTimeStreamingServer(QTSS)に送られ、サーバから各支社や端末に配信を行う。

一方、分岐されたNet送り側は加工はせずにそのままAUNetSendプラグインでTCP/IP送信をする。

20070105-aunetsend.jpg
AUNetSend

今回は16bit PCMを使用するが更に高音質にすることも可能。ただし非圧縮なので当然ビットレートも高くなる(1chで1Mbps程度)。送信ポートも選択できるが、特に変える必要はない。またBonjourが稼働していれば(10.4はデフォルトで稼働)名称や使用ポートは自動的にネットワークに広報(Multicastで)される。伝送自体はTCPなのでポートフォワード等すればNAT越えやインターネット経由でも伝送は可能。

ただしネットワークの状況によっては妙に遅延(2秒程度)されることもある。(注:マシンの処理能力不足の問題の方が大きいかも)通常の遅延は0.1秒程度。

受信側のMacではAU Labだけ使用して、GeneratorチャンネルにAUNetReceiveを割り当てるだけで良い。

20070105-aunetreceive.jpg
AUNetReceive

Bonjourが使用可能ならほぼ自動的に接続は完了する。Bonjourが使用できない。または繋がり難い状況ならば、送信側のIPアドレス、ポートを手動で設定することも可能。このままAU Labの出力を光デジタル出力(後段の受けが光デジタルしかない為)しても良いが、レベルの平均化をする為に、Appleのマルチバンド・コンプレッサーを挿入している。

20070105-au-mbcomp.jpg
AU MBComp

これは全帯域を4分割してそれぞれ別々にコップレッサーをかけるプラグイン。ここでもTrackPlug 5を使用してもいいが、マシンが古い(iMacDV400)為負荷を下げるためより軽いプラグインを選択している。(ただしイコライザはかかっていない)

今回の使用マシンはそれほど高速ではないため、送信側も受信側もギリギリの負荷になっている。特に送信側はエンコードの負荷も高いので、動画の動きによっては100%まで負荷が上がってしまうこともある。これはより高速のマシンを使用するという方法が正攻法だが、音声処理のマシンをエンコーダから分離することもでも回避は可能。ただ音声処理マシンからエンコーダマシンに音声をどう渡すかが問題になってくる。アナログ渡しでも不可能ではないが、デジタル渡しの方が望ましい。

このように音声の処理の大部分をソフトベースで行うことにより、ハードの構成は単純な物となった。とは言え、
・会場PA
・撮影カメラへの音声戻し
・支社向けQuickTimeストリーミング
・本館&別館の館内放送
を同時に行うのでアナログ系の接続も複雑にならざる得ない。

20070105-2007live_3c.png
アナログ音声周りの結線

より強力なマシンを使用すれば、直接全てを収容して簡素化は可能だが、マシンに何かあれば会場のPAまで止まってしまうリスクも出て来る。ただソフトベースの方がコストに比較して、より高度な加工が可能になるので、機会があれば試してみたいところだ。

トラックバックURL: http://meteor.blog.avis.jp/archives/81/trackback

“AU Lab による音声処理”への トラックバック ( 1 )

  1. 1notebookさんの トラックバック

    1buoyancy...

    ...

“AU Lab による音声処理”への コメント ( No )

コメント

(必須)

(必須)
(メールアドレスは公開されません)