パッケージ | flash.media |
クラス | public final class Microphone |
継承 | Microphone EventDispatcher Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
デバイスのマイクにアクセスするには、Microphone.getMicrophone()
メソッドを使用します。ただし、このメソッドでは単純なマイクのみが返されるので、音声エコーを除去することはできません。音声エコーを排除するには、Microphone.getEnhancedMicrophone()
メソッドでマイクのインスタンスを取得する必要があります。このメソッドでは、モバイルの音声エコー除去機能が有効になっているデバイスのマイクが返されます。ヘッドセットを必要としないリアルタイムオーディオ/ビデオアプリケーションを作成するには、音声エコー除去機能を使用します。
リアルタイムチャットアプリケーションの作成
リアルタイムチャットアプリケーションを作成するには、オーディをキャプチャして、Flash Media Server に送信します。NetConnection クラスと NetStream クラスを使用して、オーディオストリームを Flash Media Server に送信します。Flash Media Server はオーディオを他のクライアントにブロードキャストできます。ヘッドセットを必要としないチャットアプリケーションを作成するには、音声エコー除去機能を使用します。音声エコー除去機能によって、マイクから入ったオーディオがスピーカーに到達し出力され、もう一度マイクに入ってきた場合に発生するフィードバックループが防止されます。音声エコー除去機能を使用するには、Microphone.getEnhancedMicrophone()
メソッドを呼び出して、Microphone インスタンスへの参照を取得します。MicrophoneEnhancedOptions
クラスのインスタンスに Microp one.enhancedOptions
を設定して、設定を構成します。
マイク音声のローカルでの再生
ローカルのコンピューターまたはデバイスの音声出力に対してマイク音声を直接ルーティングするには、setLoopback()
メソッドを呼び出します。制御されていないオーディオフィードバックは危険な可能性があり、マイク入力で音声出力が取得できる場合は常に発生する可能性があります。setUseEchoSuppression()
によってフィードバックの増幅のリスクは軽減されますが、なくなりません。
マイク音声のキャプチャ(ローカルでの記録または処理用)
マイク音声をキャプチャするには、Microphone インスタンスによって送出される sampleData
イベントを監視します。このイベントに対して送出される SampleDataEvent オブジェクトには、音声データが含まれます。
ビデオのキャプチャについて詳しくは、Camera クラスのトピックを参照してください。
ランタイムマイクのサポート
Microphone クラスは、モバイルブラウザーで実行される Flash Player ではサポートされません。
AIR プロファイルのサポート:Microphone クラスは、デスクトップオペレーティングシステムと、iOS および Android モバイルデバイスでサポートされます。また、AIR for TV デバイスではサポートされません。複数のプロファイル間での API サポートについて詳しくは、AIR プロファイルのサポートを参照してください。
Microphone.isSupported
プロパティを使用すると、サポートされているかどうかを実行時にテストすることができます。ただし、AIR for TV デバイスでは、Microphone.isSupported
は true
ですが Microphone.getMicrophone()
が返す値は常に null
です。
プライバシーコントロール
ユーザーがマイクへのアクセスを許可するか拒否するかを選択できるように、Flash Player でプライバシーダイアログボックスが表示されます。アプリケーションのウィンドウサイズは 215 × 138 ピクセル(ダイアログボックスの表示に必要な最小サイズ)以上にする必要があります。そのサイズ未満では自動的に拒否されます。
AIR アプリケーションサンドボックスで実行されるコンテンツには、マイクにアクセスする権限が必要ないため、ダイアログは表示されません。アプリケーションサンドボックス以外で実行されている AIR コンテンツには権限が必要なので、Privacy ダイアログが表示されます。
詳細
Cristophe Coenraets:Voice Notes for Android
Michael Chaize:AIR, Android, and the Microphone
関連する API エレメント
プロパティ | 定義元 | ||
---|---|---|---|
activityLevel : Number [読み取り専用]
マイクが検知している音量です。 | Microphone | ||
codec : String
音声を圧縮するために使用するコーデックです。 | Microphone | ||
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
enableVAD : Boolean
Speex の音声アクティビティ検知機能を有効にします。 | Microphone | ||
encodeQuality : int
Speex コーデックを使用する場合の、エンコードされた音質です。 | Microphone | ||
enhancedOptions : MicrophoneEnhancedOptions
拡張マイクのオプションを制御します。 | Microphone | ||
framesPerPacket : int
1 パケット(メッセージ)で送信される Speex 音声フレームの数です。 | Microphone | ||
gain : Number
マイクが信号を増強する量です。 | Microphone | ||
index : int [読み取り専用]
マイクのインデックスです。これは、Microphone.names から返される配列のインデックスと同じです。 | Microphone | ||
isSupported : Boolean [静的] [読み取り専用]
現在のプラットフォームで Microphone クラスがサポートされている場合、isSupported プロパティは true に設定されます。サポートされていない場合は、false に設定されます。 | Microphone | ||
muted : Boolean [読み取り専用]
ユーザーがマイクへのアクセスを拒否している(true)か、許可している(false)かを指定します。 | Microphone | ||
name : String [読み取り専用]
サウンドキャプチャハードウェアから返される現在のサウンドキャプチャデバイスの名前です。 | Microphone | ||
names : Array [静的] [読み取り専用]
使用可能なすべてのサウンドキャプチャデバイスの名前を含むストリングの配列です。 | Microphone | ||
noiseSuppressionLevel : int
Speex エンコーダーで使用されるノイズの最大減衰(dB (負数))です。 | Microphone | ||
permissionStatus : String [静的] [読み取り専用]
マイクを使用する権限をアプリケーションが付与されたかどうかを判定します。 | Microphone | ||
rate : int
マイクがサウンドをキャプチャしているレート(kHz)です。 | Microphone | ||
silenceLevel : Number [読み取り専用]
マイクを有効化したり、activity イベントを送出するために必要な音量です。 | Microphone | ||
silenceTimeout : int [読み取り専用]
マイクがサウンド検知を停止してから activity イベントが送出されるまでの時間(ミリ秒単位)です。 | Microphone | ||
soundTransform : flash.media:SoundTransform
loopback モードになっているとき、この microphone オブジェクトのサウンドを制御します。 | Microphone | ||
useEchoSuppression : Boolean [読み取り専用]
エコー抑制が有効になっている場合は true、それ以外の場合は false に設定します。 | Microphone |
メソッド | 定義元 | ||
---|---|---|---|
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
イベントリスナーオブジェクトを EventDispatcher オブジェクトに登録し、リスナーがイベントの通知を受け取るようにします。 | EventDispatcher | ||
イベントをイベントフローに送出します。 | EventDispatcher | ||
[静的]
音声エコー除去機能を実行できる拡張された Microphone オブジェクトへの参照を返します。 | Microphone | ||
[静的]
オーディオをキャプチャする Microphone オブジェクトの参照を返します。 | Microphone | ||
EventDispatcher オブジェクトに、特定のイベントタイプに対して登録されたリスナーがあるかどうかを確認します。 | EventDispatcher | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
EventDispatcher オブジェクトからリスナーを削除します。 | EventDispatcher | ||
アプリケーションからマイクを使用する権限を要求します。 | Microphone | ||
マイクによってキャプチャされたオーディオをローカルスピーカーに転送します。 | Microphone | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
サウンドと見なす最小入力レベルと、実際に無音状態が始まったと見なすまでの無音時間の長さを設定します。後者は省略可能です。 | Microphone | ||
オーディオコーデックのエコー抑制機能を使用するかどうかを指定します。 | Microphone | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのプリミティブな値を返します。 | Object | ||
指定されたイベントタイプについて、この EventDispatcher オブジェクトまたはその祖先にイベントリスナーが登録されているかどうかを確認します。 | EventDispatcher |
activityLevel | プロパティ |
activityLevel:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
マイクが検知している音量です。値の範囲は 0(サウンドが検知されていない)~ 100(非常に大音量が検知されている)です。このプロパティ値に基づいて、Microphone.setSilenceLevel()
メソッドに渡す適切な値を判断できます。
マイクの muted
プロパティが true
の場合、このプロパティの値は常に -1 です。
実装
public function get activityLevel():Number
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
codec | プロパティ |
codec:String
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
音声を圧縮するために使用するコーデックです。使用できるコーデックは、Nellymoser(デフォルト)と Speex です。列挙クラス SoundCodec
は、codec
プロパティに対して有効な各値を含みます。
Nellymoser コーデックを使用する場合、Microphone.rate()
を使用してサンプルレートを設定できます。Speex コーデックを使用する場合、サンプルレートは 16 kHz に設定されます。
Speex には Voice Activity Detection(VAD)が搭載されており、音声が検出されない場合は自動的に帯域幅を減らします。Speex コーデックを使用する場合は、サイレンスレベルを 0 に設定することをお勧めします。サイレンスレベルを設定するには、Microphone.setSilenceLevel()
メソッドを使用します。
実装
public function get codec():String
public function set codec(value:String):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
enableVAD | プロパティ |
enableVAD:Boolean
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
Speex の音声アクティビティ検知機能を有効にします。
実装
public function get enableVAD():Boolean
public function set enableVAD(value:Boolean):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
encodeQuality | プロパティ |
encodeQuality:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
Speex コーデックを使用する場合の、エンコードされた音質です。指定できる値は、0 ~ 10 です。デフォルト値は 6 です。次の表に示すとおり、値が大きいほど質は高くなりますが、必要な帯域幅も増えます。リストされたビットレートの値はネットのビットレートを表し、パケットのオーバーヘッドは含まれません。
質の値 | 必要なビットレート(1 秒あたりのキロビット数) |
---|---|
0 | 3.95 |
1 | 5.75 |
2 | 7.75 |
3 | 9.80 |
4 | 12.8 |
5 | 16.8 |
6 | 20.6 |
7 | 23.8 |
8 | 27.8 |
9 | 34.2 |
10 | 42.2 |
実装
public function get encodeQuality():int
public function set encodeQuality(value:int):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
enhancedOptions | プロパティ |
enhancedOptions:MicrophoneEnhancedOptions
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.3, AIR 2.7 |
拡張マイクのオプションを制御します。詳しくは、MicrophoneEnhancedOptions
クラスを参照してください。このプロパティは、拡張された Microphone インスタンスに対してではない場合、無視されます。
実装
public function get enhancedOptions():MicrophoneEnhancedOptions
public function set enhancedOptions(value:MicrophoneEnhancedOptions):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
framesPerPacket | プロパティ |
framesPerPacket:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
1 パケット(メッセージ)で送信される Speex 音声フレームの数です。各フレームの長さは 20 ミリ秒です。デフォルト値は、1 パケットあたり 2 フレームです。
メッセージ内の Speex フレームが増えるほど、必要な帯域幅は減りますが、メッセージの送信が遅れます。Speex フレームが少ないほど、必要な帯域幅は増えますが、遅延が軽減されます。
実装
public function get framesPerPacket():int
public function set framesPerPacket(value:int):void
gain | プロパティ |
gain:Number
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
マイクが信号を増強する量です。指定できる値は 0 ~ 100 です。デフォルト値は 50 です。
実装
public function get gain():Number
public function set gain(value:Number):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
index | プロパティ |
index:int
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
マイクのインデックスです。これは、Microphone.names
から返される配列のインデックスと同じです。
実装
public function get index():int
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
isSupported | プロパティ |
muted | プロパティ |
muted:Boolean
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
ユーザーがマイクへのアクセスを拒否しているか(true
)、許可しているか(false
)を指定します。この値が変わると、status
イベントが送出されます。詳細については、Microphone.getMicrophone()
を参照してください。
実装
public function get muted():Boolean
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
name | プロパティ |
names | プロパティ |
names:Array
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
使用可能なすべてのサウンドキャプチャデバイスの名前を含むストリングの配列です。この名前は、ユーザーに Flash Player 設定パネルの「プライバシー」を表示せずに返されます。この配列により、各サウンドキャプチャデバイスの 0 から始まるインデックスと、システム上の各サウンドキャプチャデバイスの数(Microphone.names.length
プロパティ)を調べることができます。詳細については、Array クラスのエントリを参照してください。
Microphone.names
プロパティを呼び出すと、ハードウェアを広範囲にわたって調べる必要があり、配列を作成するまでに数秒間かかることがあります。ほとんどの場合は、デフォルトのマイクをそのまま使用できます。
注意:現在のマイクの名前を調べるには、name
プロパティを使用します。
実装
public static function get names():Array
関連する API エレメント
noiseSuppressionLevel | プロパティ |
noiseSuppressionLevel:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.1, AIR 2 |
Speex エンコーダーで使用されるノイズの最大減衰(dB (負数))です。有効になっている場合、Speex 圧縮の前に Microphone からキャプチャされるサウンドにノイズ抑制が適用されます。ノイズ抑制を無効にするには、0 に設定します。ノイズ抑制は、デフォルトでは -30 dB の最大減衰で有効になっています。 Nellymoser コーデックが選択されると無視されます。
実装
public function get noiseSuppressionLevel():int
public function set noiseSuppressionLevel(value:int):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
permissionStatus | プロパティ |
rate | プロパティ |
rate:int
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
マイクがサウンドをキャプチャしているレート(kHz)です。使用できる値は 5、8、11、22、および 44 です。デフォルト値は 8 kHz ですが、サウンドキャプチャデバイスがこの値に対応している必要があります。対応していない場合、デフォルト値はそのサウンドキャプチャデバイスが対応している 8 kHz よりも高いレートのうち、8 kHz に最も近い値になります。通常は 11 kHz です。
注意: 実際のレートは次の表に記載されているように rate
値とは少し異なります。
rate 値 | 実際の周波数 |
---|---|
44 | 44,100 Hz |
22 | 22,050 Hz |
11 | 11,025 Hz |
8 | 8,000 Hz |
5 | 5,512 Hz |
実装
public function get rate():int
public function set rate(value:int):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
silenceLevel | プロパティ |
silenceLevel:Number
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
マイクを有効化したり、activity
イベントを送出するために必要な音量です。デフォルト値は 10 です。
実装
public function get silenceLevel():Number
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
silenceTimeout | プロパティ |
silenceTimeout:int
[読み取り専用] 言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
マイクがサウンド検知を停止してから、activity
イベントが送出されるまでの時間(ミリ秒単位)です。デフォルト値は 2000(2 秒)です。
この値を設定するには、Microphone.setSilenceLevel()
メソッドを使用します。
実装
public function get silenceTimeout():int
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
soundTransform | プロパティ |
soundTransform:flash.media:SoundTransform
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
loopback モードになっているとき、この microphone オブジェクトのサウンドを制御します。
実装
public function get soundTransform():flash.media:SoundTransform
public function set soundTransform(value:flash.media:SoundTransform):void
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
useEchoSuppression | プロパティ |
getEnhancedMicrophone | () | メソッド |
public static function getEnhancedMicrophone(index:int = -1):Microphone
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10.3, AIR 2.7 |
音声エコー除去機能を実行できる拡張された Microphone オブジェクトへの参照を返します。ヘッドセットを必要としないオーディオ/ビデオチャットアプリケーションを作成するには、音声エコー除去機能を使用します。
Microphone.getEnhancedMicrophone()
メソッドおよび Microphone.getMicrophone()
メソッドの index
パラメーターは同様に動作します。
このメソッドを Android で使用するには、アプリケーション記述子の Android マニフェストを追加する部分で MODIFY_AUDIO_SETTINGS
権限を追加します。
重要:どの時点においても、存在できる拡張マイクデバイスのインスタンスは 1 つのみです。その他すべての Microphone インスタンスでは、オーディオデータの供給が停止され、code
プロパティが Microphone.Unavailable
の StatusEvent
が発生します。拡張オーディオが初期化に失敗すると、このメソッドの呼び出しに null
が返され、Microphone.enhancedOptions
の値の設定は効果を持たず、既存の Microphone インスタンスはすべて従来と同様に機能します。
拡張された Microphone オブジェクトを設定するには、Microphone.enhancedOptions
プロパティを設定します。次のコードでは、拡張された Microphone オブジェクトと、全二重の音声エコー除去機能をローカルテストで使用します。
var mic:Microphone = Microphone.getEnhancedMicrophone(); var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions(); options.mode = MicrophoneEnhancedMode.FULL_DUPLEX; mic.enhancedOptions = options; mic.setLoopBack(true);
setUseEchoSuppression()
メソッドは、音声エコー除去機能を使用する場合は無視されます。
SWF ファイルで Microphone.getEnhancedMicrophone()
メソッドから返されたマイクにアクセスしようとすると(NetStream.attachAudio()
を呼び出すなど)プライバシーダイアログボックスが表示され、そのマイクへのアクセスを許可するか拒否するかをユーザーが選択できます。ステージのサイズは必ず 215 × 138 ピクセル以上に設定してください。これは、ダイアログボックスを表示するために必要な最小サイズです。
パラメーター
index:int (default = -1 ) — マイクのインデックス値です。
|
Microphone — オーディオをキャプチャする Microphone オブジェクトの参照です。拡張オーディオが初期化に失敗すると、null が返されます。
|
関連する API エレメント
getMicrophone | () | メソッド |
public static function getMicrophone(index:int = -1):Microphone
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
オーディオをキャプチャする Microphone オブジェクトの参照を返します。オーディオのキャプチャを開始するには、Microphone オブジェクトを NetStream オブジェクトに接続する必要があります。NetStream.attachAudio()
のトピックを参照してください。
Microphone.getMicrophone()
を複数回呼び出すと、同じマイクが参照されます。したがって、コードに mic1 = Microphone.getMicrophone()
および mic2 = Microphone.getMicrophone()
という行が含まれている場合、mic1
と mic2
は両方とも同じデフォルトのマイクを参照します。
通常は、index
の値を渡さないでください。デフォルトのマイクを参照するには、単に air.Microphone.getMicrophone()
を呼び出します。Flash Player 設定パネルの「マイク」セクションを使用して、アプリケーションで使用するデフォルトのマイクを指定できます。 (Flash Player 設定パネルには、Web ブラウザーで実行している Flash Player コンテンツを右クリックしてアクセスします。)index
で値を渡すと、ユーザーが使用するのとは異なるマイクが参照される可能性があります。index
を使用できるのは、アプリケーションで 2 つのマイクから同時にオーディオをキャプチャする場合など、特殊な場合です。Adobe AIR で実行されるコンテンツも Flash Player のデフォルトのマイクの設定を使用します。
現在の Microphone オブジェクトのインデックス値を取得するには、Microphone.index
プロパティを使用します。次に、Microphone クラスの他のメソッドにこの値を渡します。
SWF ファイルで Microphone.getMicrophone()
メソッドから返されたマイクにアクセスしようとすると(NetStream.attachAudio()
を呼び出すなど)、プライバシーダイアログボックスが表示され、そのマイクへのアクセスを許可するか拒否するかをユーザーが選択できます。ステージのサイズは必ず 215 × 138 ピクセル以上に設定してください。これは、ダイアログボックスを表示するために必要な最小サイズです。
ユーザーがこのダイアログボックスに応答すると、ユーザーの応答を示す status
イベントが送出されます。Microphone.muted
プロパティを確認して、ユーザーがマイクへのアクセスを許可したか、拒否したかを判別することもできます。
Microphone.getMicrophone()
が null
を返した場合は、マイクが別のアプリケーションで使用されているか、そのシステムにマイクがインストールされていません。マイクがインストールされているかどうかを調べるには、Microphones.names.length
を使用します。Flash Player の [マイク] パネルを表示して、Microphone.getMicrophone
で参照するマイクをユーザーが選択できるようにするには、Security.showSettings()
を使用します。
パラメーター
index:int (default = -1 ) — マイクのインデックス値です。
|
Microphone — オーディオをキャプチャする Microphone オブジェクトの参照です。
|
イベント
status: — マイクがそのステータスをレポートしたときに送出されます。code プロパティの値が "Microphone.Muted" である場合、SWF ファイルのマイクへのアクセスをユーザーが拒否しています。code プロパティの値が "Microphone.Unmuted" である場合、SWF ファイルのマイクへのアクセスをユーザーが許可しています。
|
関連する API エレメント
例 ( この例の使用方法 )
var mic:Microphone = Microphone.getMicrophone(); mic.setLoopBack(); mic.addEventListener(StatusEvent.STATUS, mic_status); var tf:TextField = new TextField(); tf.autoSize = TextFieldAutoSize.LEFT; tf.text = "Detecting microphone..."; addChild(tf); function mic_status(evt:StatusEvent):void { tf.text = "Microphone is muted?: " + mic.muted; switch (evt.code) { case "Microphone.Unmuted": tf.appendText("\n" + "Microphone access was allowed."); break; case "Microphone.Muted": tf.appendText("\n" + "Microphone access was denied."); break; } }
requestPermission | () | メソッド |
public function requestPermission():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 24.0 |
アプリケーションからマイクを使用する権限を要求します。
イベント
PermissionStatus: — 要求された権限がユーザーによって付与/拒否されたときに送出されます。
|
setLoopBack | () | メソッド |
public function setLoopBack(state:Boolean = true):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
マイクによってキャプチャされたオーディオをローカルスピーカーに転送します。
パラメーター
state:Boolean (default = true )
|
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
setSilenceLevel | () | メソッド |
public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
サウンドと見なす最小入力レベルと、実際に無音状態が始まったと見なすまでの無音時間の長さを設定します。後者は省略可能です。
- マイクがサウンドをまったく検知しないようにするには、
silenceLevel
に値 100 を渡します。こうすると、activity
イベントが送出されることはありません。 - マイクが現在検知している音量を調べるには、
Microphone.activityLevel
を使用します。
Speex には Voice Activity Detection(VAD)が搭載されており、音声が検出されない場合は自動的に帯域幅を減らします。Speex コーデックを使用する場合は、サイレンスレベルを 0 に設定することをお勧めします。
アクティビティ検知とは、人が話していることをオーディオレベルに基づいて検知する機能のことです。誰も話していないときは、関連付けられているオーディオストリームを送信する必要がないので、帯域幅を節約できます。この情報を利用して、ユーザー(または他の誰か)が話していないことを視覚的なフィードバックとして示すこともできます。
サイレンス値はアクティビティ値に直接対応します。完全なサイレンスのアクティビティ値は 0 です。継続的な大音量(現在のゲイン設定に基づく最大の音量)のアクティビティ値は 100 です。ゲイン(増幅率)を適切に調整すると、話していないときにはアクティビティ値がサイレンス値よりも小さくなります。話しているときには、アクティビティ値はサイレンス値よりも大きくなります。
このメソッドは Camera.setMotionLevel()
に似ています。どちらのメソッドも、activity
イベントの送出タイミングを指定するために使用します。ただし、パブリッシュするストリームに対する影響という点では、この 2 つのメソッドは大きく異なります。
Camera.setMotionLevel()
はモーションを検知し、使用する帯域幅には影響しないように設計されています。ビデオストリームでモーションが検知されない間も、ビデオは送信されます。Microphone.setSilenceLevel()
は帯域幅を最適化するように設計されています。オーディオストリームが無音と考えられる場合には、オーディオデータは送信されません。代わりに、無音状態が始まったことを示すメッセージが送信されます。
パラメーター
silenceLevel:Number — マイクを有効化したり、activity イベントを送出するために必要な音量です。使用可能な値の範囲は 0 ~ 100 です。
| |
timeout:int (default = -1 ) — アクティビティがない場合に、サウンドが停止したと Flash Player または Adobe AIR が判定し dispatch イベントを送出するまでの時間(ミリ秒単位)です。 デフォルト値は 2000(2 秒)です。(注意:シグネチャで示されたデフォルト値(-1)は、2000 を使用することを Flash Player または Adobe AIR に伝える内部値です。)
|
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
setUseEchoSuppression | () | メソッド |
public function setUseEchoSuppression(useEchoSuppression:Boolean):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | AIR 1.0, Flash Player 9 |
オーディオコーデックのエコー抑制機能を使用するかどうかを指定します。Flash Player 設定パネルの「マイク」でユーザーが「エコーを減らす」を選択していない限り、デフォルト値は false
です。
エコー抑制とは、スピーカーから出たサウンドが同じシステムのマイクによって拾われるオーディオフィードバックの影響を減らす機能のことです。(これは、フィードバックを完全に除去する音声エコー除去機能とは異なります。setUseEchoSuppression()
メソッドは、getEnhancedMicrophone()
メソッドを呼び出して音声エコー除去機能を使用する場合は無視されます)。
一般に、キャプチャするサウンドをヘッドセットではなくスピーカーで再生する場合には、エコー抑制機能を使用することが推奨されます。サウンド出力デバイスをユーザーが選択できるようにした SWF ファイルでは、ユーザーがスピーカーを選択し、マイクも使用する場合に Microphone.setUseEchoSuppression(true)
を呼び出すことをお勧めします。
ユーザーは、Flash Player 設定パネルの「マイク」でこれらの設定を調整することもできます。
パラメーター
useEchoSuppression:Boolean — エコー抑制を使用するか(true )、使用しないか(false )を示すブール値。
|
例外
PermissionError — アプリケーションには、マイクを使用する権限がありません。
|
関連する API エレメント
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); } } }
Tue Jun 12 2018, 10:34 AM Z