パッケージflash.media
public final class Microphone
継承Microphone Inheritance EventDispatcher Inheritance Object

Microphone クラスを使用すると、Flash Player を実行するコンピュータに接続されたマイクからオーディオをキャプチャできます。

Microphone クラスは主に Flash Media Server や Flex などのサーバーで使用します。ただし、Microphone クラスはサーバーなしでも限定された方法で使用することもできます。たとえば、マイクからのサウンドをローカルコンピュータのスピーカーを通して出力することができます。マイクからオーディオをストリーミングするには、Microphone オブジェクトを NetStream オブジェクトに関連付けます。

注意 :Flash Player に [プライバシー] ダイアログボックスが表示され、ユーザーはマイクへのアクセスを許可するか拒否するかを選択できます。アプリケーションウィンドウのサイズは必ず 215 × 138 ピクセル以上に設定してください。これは、ダイアログボックスを表示するために必要な最小サイズです。

Microphone オブジェクトを作成または参照するには、Microphone.getMicrophone() メソッドを使用します。

例の表示



パブリックプロパティ
 プロパティ定義
  activityLevel : Number
[read-only] マイクが検知している音量。
Microphone
 Inheritedconstructor : Object
特定のオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  gain : Number
マイクによるサウンドのゲイン (増幅率) は、シグナルが転送前にマイクで増幅される量を表します。
Microphone
  index : int
[read-only] マイクのインデックスです。これは、Microphone.namesから返される配列のインデックスと同じです。
Microphone
  muted : Boolean
[read-only] ユーザーがマイクへのアクセスを拒否しているか (true) 許可しているか (false) を指定します。
Microphone
  name : String
[read-only] サウンドキャプチャハードウェアから返される現在のサウンドキャプチャデバイスの名前です。
Microphone
  names : Array
[static][read-only] 使用できるすべてのサウンドキャプチャデバイスの名前です。
Microphone
 Inheritedprototype : Object
[static] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  rate : int
マイクのサウンドキャプチャレート (kHz) です。
Microphone
  silenceLevel : Number
[read-only] マイクを有効化したり、activity イベントを送出するために必要な音量です。
Microphone
  silenceTimeout : int
[read-only] マイクがサウンド検知を停止してから、activity イベントが送出されるまでの時間 (ミリ秒単位) です。
Microphone
  soundTransform : SoundTransform
loopback モードになっているとき、この microphone オブジェクトのサウンドを制御します。
Microphone
  useEchoSuppression : Boolean
[read-only] エコー抑制が有効になっている場合は true、それ以外の場合は false を返します。
Microphone
パブリックメソッド
 メソッド定義
 InheritedaddEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。
EventDispatcher
 InheriteddispatchEvent(event:Event):Boolean
イベントをイベントフローに送出します。
EventDispatcher
  getMicrophone(index:int = 0):Microphone
[static] Microphone オブジェクトを作成または参照するには、Microphone.getMicrophone() メソッドを使用して、現在のマイクのインデックス値を取得します。
Microphone
 InheritedhasEventListener(type:String):Boolean
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。
EventDispatcher
 InheritedhasOwnProperty(name:String):Boolean
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 InheritedisPrototypeOf(theClass:Object):Boolean
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 InheritedpropertyIsEnumerable(name:String):Boolean
指定されたプロパティが存在し、列挙可能かどうかを示します。
Object
 InheritedremoveEventListener(type:String, listener:Function, useCapture:Boolean = false):void
EventDispatcher オブジェクトからリスナーを削除します。
EventDispatcher
  setLoopBack(state:Boolean = true):void
マイクを loopback モードに設定するか、オフにします。
Microphone
 InheritedsetPropertyIsEnumerable(name:String, isEnum:Boolean = true):void
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
サウンドと見なす最小入力レベルと、実際に無音状態が始まったと見なすまでの無音時間の長さを設定します。後者は省略可能です。
Microphone
  setUseEchoSuppression(useEchoSuppression:Boolean):void
オーディオコーデックのエコー抑制機能を使用するかどうかを指定します。
Microphone
 InheritedtoString():String
指定されたオブジェクトのストリング表現を返します。
Object
 InheritedvalueOf():Object
指定されたオブジェクトのプリミティブ値を返します。
Object
 InheritedwillTrigger(type:String):Boolean
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。
EventDispatcher
イベント
 イベント一覧定義
  activity マイクがセッションを開始または終了したときに送出されます。Microphone
  status マイクがそのステータスをレポートしたときに送出されます。Microphone
プロパティの詳細
activityLevelプロパティ
activityLevel:Number  [read-only]

マイクが検知している音量。値の範囲は 0 (サウンドが検知されていない) ~ 100 (非常に大音量が検知されている) です。このプロパティ値に基づいて、Microphone.setSilenceLevel() メソッドに渡す適切な値を判断できます。

マイクを利用できる状態であっても、Microphone.getMicrophone() がまだ呼び出されていないためにまだ使用されていない場合は、このプロパティは -1 に設定されます。

実装
    public function get activityLevel():Number

関連項目

gainプロパティ 
gain:Number  [read-write]

マイクによるサウンドのゲイン (増幅率) は、シグナルが転送前にマイクで増幅される量を表します。値 0 は 0 倍、つまりサウンドが転送されないことを示します。

この設定はステレオのボリュームつまみのようなものと考えることができます。0 はボリュームなしであり、50 は通常のボリュームです。50 より小さい値は通常よりも低いボリューム、50 より大きい値は通常よりも大きいボリュームを表します。有効な値は 0 ~ 100 です。ユーザーは [Macromedia Flash Player 設定] パネルの [マイク] を使用してこの値を変更できます。

実装
    public function get gain():Number
    public function set gain(value:Number):void

関連項目

indexプロパティ 
index:int  [read-only]

マイクのインデックスです。これは、Microphone.namesから返される配列のインデックスと同じです。

実装
    public function get index():int

関連項目

mutedプロパティ 
muted:Boolean  [read-only]

ユーザーがマイクへのアクセスを拒否しているか (true) 許可しているか (false) を指定します。この値が変わると、Microphone.onStatus が呼び出されます。詳細については、Microphone.getMicrophone()を参照してください。

実装
    public function get muted():Boolean

関連項目

nameプロパティ 
name:String  [read-only]

サウンドキャプチャハードウェアから返される現在のサウンドキャプチャデバイスの名前です。

実装
    public function get name():String

関連項目

namesプロパティ 
names:Array  [read-only]

使用できるすべてのサウンドキャプチャデバイスの名前です。この名前は、ユーザーに [Macromedia Flash Player 設定] パネルの [プライバシー] を表示せずに返されます。この配列により、各サウンドキャプチャデバイスのゼロから始まるインデックスと、システム上の各サウンドキャプチャデバイスの数 (Microphone.names.length プロパティ) を調べることができます。詳細については、Array クラスのエントリを参照してください。

Microphone.names プロパティを呼び出すと、ハードウェアを広範囲にわたって調べる必要があり、配列を作成するまでに数秒間かかることがあります。ほとんどの場合は、デフォルトのマイクをそのまま使用できます。

メモ:現在のマイクの名前を調べるには、name プロパティを使用します。

実装
    public static function get names():Array

関連項目

rateプロパティ 
rate:int  [read-write]

マイクのサウンドキャプチャレート (kHz) です。デフォルト値は 8 kHz ですが、サウンドキャプチャデバイスがこの値に対応している必要があります。対応していない場合、デフォルト値はそのサウンドキャプチャデバイスが対応している 8 kHz よりも高いレートのうち、8 kHz に最も近い値になります。通常は 11 kHz です。

実装
    public function get rate():int
    public function set rate(value:int):void
silenceLevelプロパティ 
silenceLevel:Number  [read-only]

マイクを有効化したり、activity イベントを送出するために必要な音量です。デフォルト値は 10 です。

実装
    public function get silenceLevel():Number

関連項目

silenceTimeoutプロパティ 
silenceTimeout:int  [read-only]

マイクがサウンド検知を停止してから、activity イベントが送出されるまでの時間 (ミリ秒単位) です。デフォルト値は 2000 (2 秒) です。

この値を設定するには、Microphone.setSilenceLevel() メソッドを使用します。

実装
    public function get silenceTimeout():int

関連項目

soundTransformプロパティ 
soundTransform:SoundTransform  [read-write]

loopback モードになっているとき、この microphone オブジェクトのサウンドを制御します。

実装
    public function get soundTransform():SoundTransform
    public function set soundTransform(value:SoundTransform):void
useEchoSuppressionプロパティ 
useEchoSuppression:Boolean  [read-only]

エコー抑制が有効になっている場合は true、それ以外の場合は false を返します。[Macromedia Flash Player 設定] パネルの [マイク] でユーザーが [エコーを減らす] を選択していない限り、デフォルト値は false です。

実装
    public function get useEchoSuppression():Boolean

関連項目

メソッドの詳細
getMicrophone()メソッド
public static function getMicrophone(index:int = 0):Microphone

Microphone オブジェクトを作成または参照するには、Microphone.getMicrophone() メソッドを使用して、現在のマイクのインデックス値を取得します。次に、Microphone クラスのメソッドにこの値を渡します。

パラメータ
index:int (default = 0) — マイクのインデックス値です。

戻り値
Microphone

イベント
status:StatusEvent — マイクがそのステータスをレポートしたときに送出されます。code プロパティの値が "Microphone.muted" である場合、SWF ファイルのマイクへのアクセス許可を拒否したことになります。code プロパティの値が "Microphone.unmuted" である場合、SWF ファイルのマイクへのアクセスを許可することになります。

関連項目

setLoopBack()メソッド 
public function setLoopBack(state:Boolean = true):void

マイクを loopback モードに設定するか、オフにします。このメソッドにより、マイクサウンドがローカルスピーカーに切り替えられます。

パラメータ
state:Boolean (default = true)
setSilenceLevel()メソッド 
public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void

サウンドと見なす最小入力レベルと、実際に無音状態が始まったと見なすまでの無音時間の長さを設定します。後者は省略可能です。

アクティビティ検知とは、人が話していることをオーディオレベルに基づいて検知する機能のことです。誰も話していないときは、関連付けられているオーディオストリームを送信する必要がないので、帯域幅を節約できます。この情報を利用して、ユーザー (または他の誰か) が話していないことを視覚的なフィードバックとして示すこともできます。

サイレンス値はアクティビティ値に直接対応します。完全なサイレンスのアクティビティ値は 0 です。継続的な大音量 (現在のゲインに基づいて設定できる大音量) のアクティビティ値は 100 です。ゲイン (増幅率) を適切に調整すると、話していないときにはアクティビティ値がサイレンス値よりも小さくなります。話しているときには、アクティビティ値はサイレンス値よりも大きくなります。

このメソッドの目的は Camera.setMotionLevel() に似ています。どちらのメソッドも、activity イベントの送出方法を指定するために使用します。ただし、パブリッシュするストリームに対する影響という点では、この 2 つのメソッドは大きく異なります。

パラメータ
silenceLevel:Number — マイクを有効化したり、activity イベントを送出するために必要な音量です。使用可能な値の範囲は 0 から 100 です。
 
timeout:int (default = -1) — アクティビティがない場合に、サウンドが停止したと判定して dispatch イベントを送出するまでの時間 (ミリ秒単位) です。デフォルト値は 2000 (2 秒) です。(メモ :シグネチャで示される -1 のデフォルト値は、2000 を使用することを Flash Player に伝える内部値です。)

関連項目

setUseEchoSuppression()メソッド 
public function setUseEchoSuppression(useEchoSuppression:Boolean):void

オーディオコーデックのエコー抑制機能を使用するかどうかを指定します。[Macromedia Flash Player 設定] パネルの [マイク] でユーザーが [エコーを減らす] を選択していない限り、デフォルト値は false です。

エコー抑制とは、スピーカーから出たサウンドが同じコンピュータのマイクによって拾われるオーディオフィードバックの影響を減らす機能のことです。これは、フィードバックを完全に除去するエコー除去機能とは異なります。

一般に、キャプチャするサウンドをヘッドセットではなく同じコンピュータのスピーカーで再生する場合には、エコー抑制機能を使うことが推奨されます。サウンド出力デバイスをユーザーが選択できるようにした SWF ファイルでは、ユーザーがスピーカーを選択し、マイクも使用する場合に Microphone.setUseEchoSuppression(true) を呼び出すことをお勧めします。

ユーザーは、[Macromedia Flash Player 設定] パネルの [マイク] でこれらの設定を調整することもできます。

パラメータ
useEchoSuppression:Boolean — エコー抑制を使用するか (true) 使用しないか (false) を示すブール値です。

関連項目

イベントの詳細
activityevent 
イベントオブジェクトの型: flash.events.ActivityEvent
ActivityEvent.type property = flash.events.ActivityEvent.ACTIVITY

マイクがセッションを開始または終了したときに送出されます。

ActivityEvent.ACTIVITY 定数は、activity イベントオブジェクトの type プロパティ値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
activatingデバイスがアクティブになっている場合は true、非アクティブになっている場合は false です。
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
targetCamera オブジェクトや Microphone オブジェクトなど、セッションを開始または終了しているオブジェクトです。
statusevent  
イベントオブジェクトの型: flash.events.StatusEvent
StatusEvent.type property = flash.events.StatusEvent.STATUS

マイクがそのステータスをレポートしたときに送出されます。code プロパティの値が "Microphone.muted" である場合、SWF ファイルのマイクへのアクセス許可を拒否したことになります。code プロパティの値が "Microphone.unmuted" である場合、SWF ファイルのマイクへのアクセスを許可することになります。

status イベントオブジェクトの type プロパティの値を定義します。

このイベントには、次のプロパティがあります。

プロパティ
bubblesfalse
cancelablefalse は、キャンセルするデフォルトの動作がないことを示します。
codeオブジェクトのステータスの説明です。
currentTargetイベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。
level"status""warning""error" など、メッセージのカテゴリです。
targetそのステータスをレポートするオブジェクトです。

関連項目


次の例は、エコー抑制を使用してマイクからサウンドをキャプチャします。その前に、 コンピュータのマイクへのアクセスを許可します。 Security.showSettings() メソッドによって Flash Player のダイアログボックスが表示され、 マイクへのアクセス許可が要求されます。setLoopBack(true) メソッドの呼び出しで 入力をローカルスピーカーに切り替えるため、例を実行中にサウンドを聴くことができます。

2 つのリスナーは、activity イベントと status イベントを受け取ります。activity イベントは (存在する場合は) セッションの開始時と終了時に放出され、activityHandler() メソッドによってキャプチャされます。 このメソッドはイベントの情報をトレースします。status イベントが送出されるのは、 関連付けられた Microphone オブジェクトがステータス情報をレポートした場合であり、このオブジェクトは statusHandler() メソッドでキャプチャまたはトレースされます。

メモ:この例では、正しく機能させるためにコンピュータにマイクを接続しておく 必要があります。


package {
    import flash.display.Sprite;
    import flash.events.*;
    import flash.media.Microphone;
    import flash.system.Security;

    public class MicrophoneExample extends Sprite {
        public function MicrophoneExample() {
            var mic:Microphone = Microphone.getMicrophone();
            Security.showSettings("2");
            mic.setLoopBack(true);
                    
            if (mic != null) {
                mic.setUseEchoSuppression(true);
                mic.addEventListener(ActivityEvent.ACTIVITY, activityHandler);
                mic.addEventListener(StatusEvent.STATUS, statusHandler);
            }
        }

        private function activityHandler(event:ActivityEvent):void {
            trace("activityHandler: " + event);
        }

        private function statusHandler(event:StatusEvent):void {
            trace("statusHandler: " + event);
        }
    }
}