Flash Player 10.3 のアコースティックエコーキャンセル機能(AEC)

Flash Player 10.3 及び AIR 2.7 から、マイク入力のアコースティックエコーをキャンセルする機能 (AEC) が追加されました。

AEC は、デスクトップ環境専用の機能です。デバイスには、通常ハードウェアに同等の機能が装備されているため (電話として使えるよう)、AEC の必要性は低いという判断のようです。デバイスでは CPU 負荷の高い処理は避けたいという意図もあったかもしれません。

拡張された Microphone クラス

AEC を実現するため、Flash Player & AIR には Microphone クラスを拡張した AEC 機能付きの Microphone が新しく提供されます。これに伴い Microphone クラスにはメソッドと属性が 1 つずつ追加されます。

  • getEnhancedMicrophone(index:int = -1): Microphone [static]
    AEC機能付きのMicrophoneオブジェクトを返す。一度に使用できるオブジェクトは一つだけ
  • enhancedOptions:MicrophoneEnhancedOptions
    拡張されたマイクの機能を制御するためのオプションを指定

一度に使用できる Microphone のインスタンスは 1 つです。あるインスタンスを使用中に getEnhancedMicrophone() を呼ぶと、そのインスタンスは動作を停止し、Microphone.Unavailable イベントを発行します。

拡張された Microphone オブジェクトの構成を指定するために、新しく MicrophoneEnhancedOptions クラスが導入されました。基本的な使い方は、MicrophoneEnhancedOptions のインスタンスに必要な構成を定義して、Microphone.enhancedOptions 属性に設定する、です。

下は、その簡単なサンプルです。

// MicrophoneEnhancedOptions インスタンスの生成
var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();
// 音声モードの指定
options.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
 
// 拡張 Microphone のインスタンス取得
var enhancedMicrophone:Microphone = Microphone.getEnhancedMicrophone();
// Microphone インスタンスにオプションを設定
enhancedMicrophone.enhancedOptions = options;

AEC の音声モード指定

上の例のように、MicrophoneEnhancedOptions.mode 属性には音声モードを指定します。ここで指定可能な値は、MicrophoneEnhancedMode クラスに定義されています。

  • MicrophoneEnhancedMode.FULL_DUPLEX:
    全二重モードで AEC 処理を行う。双方が同時に話すことができる。高品質の (通常組み込みの) マイクとスピーカーが必要。CPU 負荷が最も高いモード
  • MicrophoneEnhancedMode.HALF_DULEX:
    半二重モードで AEC 処理を行う。一時点で話すことができるのはどちらか片方のみ。低品質のマイクとスピーカー向け。CPU 負荷は低め
  • MicrophoneEnhnacedMode.HEADSET:
    最低限の AEC 処理のみ行う。ヘッドセット使用時のエコーを押さえたいケースを想定。CPU 負荷は更に低い
  • MicrophoneEnhancedMode.SPEAKER_MUTE:
    AEC 処理を行う代わりにスピーカー音声をミュートする。他の拡張機能は使用できる
  • MicrophoneEnhancedMode.OFF:
    全ての拡張機能を使用しない

MicrophoneEnhancedOptions.mode 属性のデフォルト値は、USB デバイスの場合のみ HALF_DULEX、その他は FULL_DUPLEX です。(USB デバイスでは FULL_DUPLEX が使えないようです)

その他の拡張機能

拡張された Microphone では AEC 以外にも、ノイズ抑制、発声の検知、音声レベルの自動調整といった機能が利用可能です。mode = MicrophoneEnhancedMode.OFF を指定しない限り利用できます。

AEC 以外の拡張機能の構成も MicrophoneEnhancedOptions オブジェクトを使って指定します。MicrophoneEnhancedOptions には mode 以外に以下の属性があります。

  • autoGain : Boolean
    自動ゲインコントロールを行う。デフォルトは off
  • echoPath : int
    エコーキャンセルに使うパスの長さを指定 (単位はミリ秒)。長いほど品質は良くなるが計算が複雑になる。デフォルトは 128。指定可能な他の値は 256 がある
  • isVoiceDetected : int [読み取りのみ]
    マイク入力から音声が検知されたかを示す
  • nonLinearProcessing : Boolean
    非線形の処理を行う。デフォルトは on。特にスピーチ配信時の残留エコーの抑制に効果。音楽ソース配信時は off が推奨

パフォーマンス上、Microphone.silenceLevel を 0 にして使用することが推奨されています。これによりマイクは音声を流し続けるようになりますが、Speex コーデックが無音状態を検知すると自動的にビットレートが調整されます。

 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/160

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261