flash.media

# Microphone - AS3

Package | flash.media
Class | public final class Microphone
Inheritance | Microphone EventDispatcher Object

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Use the Microphone class to monitor or capture audio from a microphone.

To get access to the device microphone, you can use `Microphone.getMicrophone()` method. However, this method returns a simple microphone, which does not have the ability to eliminate acoustic echo. In order to eliminate acoustic echo, you need to get an instance of microphone using `Microphone.getEnhancedMicrophone()` method. This method returns a device microphone that has the acoustic echo cancellation feature enabled for mobile. Use acoustic echo cancellation to create real-time audio/video applications that don't require headsets.

Create a real-time chat application

To create a real-time chat application, capture audio and send it to Flash Media Server. Use the NetConnection and NetStream classes to send the audio stream to Flash Media Server. Flash Media Server can broadcast the audio to other clients. To create a chat application that doesn't require headsets, use acoustic echo cancellation. Acoustic echo cancellation prevents the feedback loop that occurs when audio enters a microphone, travels out the speakers, and enters the microphone again. To use acoustic echo cancellation, call the `Microphone.getEnhancedMicrophone()` method to get a reference to a Microphone instance. Set `Microphone.enhancedOptions` to an instance of the `MicrophoneEnhancedOptions` class to configure settings.

Play microphone audio locally

Call the Microphone `setLoopback()` method to route the microphone audio directly to the local computer or device audio output. Uncontrolled audio feedback is an inherent danger and is likely to occur whenever the audio output can be picked up by the microphone input. The `setUseEchoSuppression()` method can reduce, but not eliminate, the risk of feedback amplification.

Capture microphone audio for local recording or processing

To capture microphone audio, listen for the `sampleData` events dispatched by a Microphone instance. The SampleDataEvent object dispatched for this event contains the audio data.

For information about capturing video, see the Camera class.

Runtime microphone support

The Microphone class is not supported in Flash Player running in a mobile browser.

AIR profile support: The Microphone class is supported on desktop operating systems, and iOS and Android mobile devices. It is not supported on AIR for TV devices. See AIR Profile Support for more information regarding API support across multiple profiles.

You can test for support at run time using the `Microphone.isSupported` property. Note that for AIR for TV devices, `Microphone.isSupported` is `true` but `Microphone.getMicrophone()` always returns `null`.

Privacy controls

Flash Player displays a Privacy dialog box that lets the user choose whether to allow or deny access to the microphone. Your application window size must be at least 215 x 138 pixels, the minimum size required to display the dialog box, or access is denied automatically.

Content running in the AIR application sandbox does not need permission to access the microphone and no dialog is displayed. AIR content running outside the application sandbox does require permission and the Privacy dialog is displayed.

View the examples

More examples

Loading external sound files
Capturing sound input

Learn more

Basics of working with sound
Understanding the sound architecture
aYo Binitie: Implementing Acoustic Echo Suppression in Flash/Flex applications
Cristophe Coenraets: Voice Notes for Android
Michael Chaize: AIR, Android, and the Microphone

Related API Elements

flash.media.Camera
flash.media.MicrophoneEnhancedMode
flash.media.MicrophoneEnhancedOptions

Public Properties
Hide Inherited Public Properties
Show Inherited Public Properties

| Property | Defined By
--- | --- | ---
|  | activityLevel : Number [read-only] The amount of sound the microphone is detecting. | Microphone
|  | codec : String The codec to use for compressing audio. | Microphone
|  | constructor : Object A reference to the class object or constructor function for a given object instance. | Object
|  | enableVAD : Boolean Enable Speex voice activity detection. | Microphone
|  | encodeQuality : int The encoded speech quality when using the Speex codec. | Microphone
|  | enhancedOptions : MicrophoneEnhancedOptions Controls enhanced microphone options. | Microphone
|  | framesPerPacket : int Number of Speex speech frames transmitted in a packet (message). | Microphone
|  | gain : Number The amount by which the microphone boosts the signal. | Microphone
|  | index : int [read-only] The index of the microphone, as reflected in the array returned by Microphone.names. | Microphone
|  | isSupported : Boolean [static] [read-only] The isSupported property is set to true if the Microphone class is supported on the current platform, otherwise it is set to false. | Microphone
|  | muted : Boolean [read-only] Specifies whether the user has denied access to the microphone (true) or allowed access (false). | Microphone
|  | name : String [read-only] The name of the current sound capture device, as returned by the sound capture hardware. | Microphone
|  | names : Array [static] [read-only] An array of strings containing the names of all available sound capture devices. | Microphone
|  | noiseSuppressionLevel : int Maximum attenuation of the noise in dB (negative number) used for Speex encoder. | Microphone
|  | permissionStatus : String [static] [read-only] Determine whether the application has been granted the permission to use Microphone. | Microphone
|  | rate : int The rate at which the microphone is capturing sound, in kHz. | Microphone
|  | silenceLevel : Number [read-only] The amount of sound required to activate the microphone and dispatch the activity event. | Microphone
|  | silenceTimeout : int [read-only] The number of milliseconds between the time the microphone stops detecting sound and the time the activity event is dispatched. | Microphone
|  | soundTransform : flash.media:SoundTransform Controls the sound of this microphone object when it is in loopback mode. | Microphone
|  | useEchoSuppression : Boolean [read-only] Set to true if echo suppression is enabled; false otherwise. | Microphone

Public Methods
Hide Inherited Public Methods
Show Inherited Public Methods

| Method | Defined By
--- | --- | ---
|  | addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void Registers an event listener object with an EventDispatcher object so that the listener receives notification of an event. | EventDispatcher
|  | dispatchEvent(event:Event):Boolean Dispatches an event into the event flow. | EventDispatcher
|  | getEnhancedMicrophone(index:int = -1):Microphone [static] Returns a reference to an enhanced Microphone object that can perform acoustic echo cancellation. | Microphone
|  | getMicrophone(index:int = -1):Microphone [static] Returns a reference to a Microphone object for capturing audio. | Microphone
|  | hasEventListener(type:String):Boolean Checks whether the EventDispatcher object has any listeners registered for a specific type of event. | EventDispatcher
|  | hasOwnProperty(name:String):Boolean Indicates whether an object has a specified property defined. | Object
|  | isPrototypeOf(theClass:Object):Boolean Indicates whether an instance of the Object class is in the prototype chain of the object specified as the parameter. | Object
|  | propertyIsEnumerable(name:String):Boolean Indicates whether the specified property exists and is enumerable. | Object
|  | removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void Removes a listener from the EventDispatcher object. | EventDispatcher
|  | requestPermission():void Requests Microphone permission for the application. | Microphone
|  | setLoopBack(state:Boolean = true):void Routes audio captured by a microphone to the local speakers. | Microphone
|  | setPropertyIsEnumerable(name:String, isEnum:Boolean = true):void Sets the availability of a dynamic property for loop operations. | Object
|  | setSilenceLevel(silenceLevel:Number, timeout:int = -1):void Sets the minimum input level that should be considered sound and (optionally) the amount of silent time signifying that silence has actually begun. | Microphone
|  | setUseEchoSuppression(useEchoSuppression:Boolean):void Specifies whether to use the echo suppression feature of the audio codec. | Microphone
|  | toLocaleString():String Returns the string representation of this object, formatted according to locale-specific conventions. | Object
|  | toString():String Returns the string representation of the specified object. | Object
|  | valueOf():Object Returns the primitive value of the specified object. | Object
|  | willTrigger(type:String):Boolean Checks whether an event listener is registered with this EventDispatcher object or any of its ancestors for the specified event type. | EventDispatcher

Events
Click for more information on events
Hide Inherited Events
Show Inherited Events

| Event | Summary | Defined By
--- | --- | --- | ---
|  | activate | [broadcast event] Dispatched when the Flash Player or AIR application gains operating system focus and becomes active. | EventDispatcher
|  | deactivate | [broadcast event] Dispatched when the Flash Player or AIR application operating loses system focus and is becoming inactive. | EventDispatcher

Property Detail

### activityLevel

property

`activityLevel:Number` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

The amount of sound the microphone is detecting. Values range from 0 (no sound is detected) to 100 (very loud sound is detected). The value of this property can help you determine a good value to pass to the `Microphone.setSilenceLevel()` method.

If the microphone `muted` property is `true`, the value of this property is always -1.

Implementation
`public function get activityLevel():Number`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.getMicrophone()
flash.media.Microphone.setSilenceLevel()
flash.media.Microphone.gain

### codec

property

`codec:String`

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10, AIR 1.5

The codec to use for compressing audio. Available codecs are Nellymoser (the default) and Speex. The enumeration class `SoundCodec` contains the various values that are valid for the `codec` property.

If you use the Nellymoser codec, you can set the sample rate using `Microphone.rate()`. If you use the Speex codec, the sample rate is set to 16 kHz.

Speex includes voice activity detection (VAD) and automatically reduces bandwidth when no voice is detected. When using the Speex codec, Adobe recommends that you set the silence level to 0. To set the silence level, use the `Microphone.setSilenceLevel()` method.

Implementation
`public function get codec():String`
`public function set codec(value:String):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

setSilenceLevel()

### enableVAD

property

`enableVAD:Boolean`

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10.1, AIR 2

Enable Speex voice activity detection.

Implementation
`public function get enableVAD():Boolean`
`public function set enableVAD(value:Boolean):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

### encodeQuality

property

`encodeQuality:int`

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10, AIR 1.5

The encoded speech quality when using the Speex codec. Possible values are from 0 to 10. The default value is 6. Higher numbers represent higher quality but require more bandwidth, as shown in the following table. The bit rate values that are listed represent net bit rates and do not include packetization overhead.

Quality value | Required bit rate (kilobits per second)
--- | ---
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

Implementation
`public function get encodeQuality():int`
`public function set encodeQuality(value:int):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

codec

### enhancedOptions

property

`enhancedOptions:MicrophoneEnhancedOptions`

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10.3, AIR 2.7

Controls enhanced microphone options. For more information, see `MicrophoneEnhancedOptions` class. This property is ignored for non-enhanced Microphone instances.

Implementation
`public function get enhancedOptions():MicrophoneEnhancedOptions`
`public function set enhancedOptions(value:MicrophoneEnhancedOptions):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.MicrophoneEnhancedOptions

### framesPerPacket

property

`framesPerPacket:int`

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10, AIR 1.5

Number of Speex speech frames transmitted in a packet (message). Each frame is 20 ms long. The default value is two frames per packet.

The more Speex frames in a message, the lower the bandwidth required but the longer the delay in sending the message. Fewer Speex frames increases bandwidth required but reduces delay.

Implementation
`public function get framesPerPacket():int`
`public function set framesPerPacket(value:int):void`

### gain

property

`gain:Number`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

The amount by which the microphone boosts the signal. Valid values are 0 to 100. The default value is 50.

Implementation
`public function get gain():Number`
`public function set gain(value:Number):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.gain

### index

property

`index:int` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

The index of the microphone, as reflected in the array returned by `Microphone.names`.

Implementation
`public function get index():int`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.getMicrophone()
flash.media.Microphone.names

### isSupported

property

`isSupported:Boolean` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10.1, AIR 2

The `isSupported` property is set to `true` if the Microphone class is supported on the current platform, otherwise it is set to `false`.

Implementation
`public static function get isSupported():Boolean`

### muted

property

`muted:Boolean` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Specifies whether the user has denied access to the microphone (`true`) or allowed access (`false`). When this value changes, a `status` event is dispatched. For more information, see `Microphone.getMicrophone()`.

Implementation
`public function get muted():Boolean`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.getMicrophone()
flash.media.Microphone.status

### name

property

`name:String` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

The name of the current sound capture device, as returned by the sound capture hardware.

Implementation
`public function get name():String`

Related API Elements

flash.media.Microphone.getMicrophone()
flash.media.Microphone.names

### names

property

`names:Array` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

An array of strings containing the names of all available sound capture devices. The names are returned without having to display the Flash Player Privacy Settings panel to the user. This array provides the zero-based index of each sound capture device and the number of sound capture devices on the system, through the `Microphone.names.length` property. For more information, see the Array class entry.

Calling `Microphone.names` requires an extensive examination of the hardware, and it may take several seconds to build the array. In most cases, you can just use the default microphone.

Note: To determine the name of the current microphone, use the `name` property.

Implementation
`public static function get names():Array`

Related API Elements

Array
flash.media.Microphone.name
flash.media.Microphone.getMicrophone()

### noiseSuppressionLevel

property

`noiseSuppressionLevel:int`

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10.1, AIR 2

Maximum attenuation of the noise in dB (negative number) used for Speex encoder. If enabled, noise suppression is applied to sound captured from Microphone before Speex compression. Set to 0 to disable noise suppression. Noise suppression is enabled by default with maximum attenuation of -30 dB. Ignored when Nellymoser codec is selected.

Implementation
`public function get noiseSuppressionLevel():int`
`public function set noiseSuppressionLevel(value:int):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

### permissionStatus

property

`permissionStatus:String` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 24.0

Determine whether the application has been granted the permission to use Microphone.

Implementation
`public static function get permissionStatus():String`

Related API Elements

flash.permissions.PermissionStatus

### rate

property

`rate:int`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

The rate at which the microphone is capturing sound, in kHz. Acceptable values are 5, 8, 11, 22, and 44. The default value is 8 kHz if your sound capture device supports this value. Otherwise, the default value is the next available capture level above 8 kHz that your sound capture device supports, usually 11 kHz.

Note: The actual rate differs slightly from the `rate` value, as noted in the following table:

`rate` value | Actual frequency
--- | ---
44 | 44,100 Hz
22 | 22,050 Hz
11 | 11,025 Hz
8 | 8,000 Hz
5 | 5,512 Hz

Implementation
`public function get rate():int`
`public function set rate(value:int):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.rate

### silenceLevel

property

`silenceLevel:Number` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

The amount of sound required to activate the microphone and dispatch the `activity` event. The default value is 10.

Implementation
`public function get silenceLevel():Number`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.gain
flash.media.Microphone.setSilenceLevel()

### silenceTimeout

property

`silenceTimeout:int` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

The number of milliseconds between the time the microphone stops detecting sound and the time the `activity` event is dispatched. The default value is 2000 (2 seconds).

To set this value, use the `Microphone.setSilenceLevel()` method.

Implementation
`public function get silenceTimeout():int`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.setSilenceLevel()

### soundTransform

property

`soundTransform:flash.media:SoundTransform`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Controls the sound of this microphone object when it is in loopback mode.

Implementation
`public function get soundTransform():flash.media:SoundTransform`
`public function set soundTransform(value:flash.media:SoundTransform):void`
Throws

| `PermissionError` — The application does not have permission to use Microphone.

### useEchoSuppression

property

`useEchoSuppression:Boolean` [read-only]

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Set to `true` if echo suppression is enabled; `false` otherwise. The default value is `false` unless the user has selected Reduce Echo in the Flash Player Microphone Settings panel.

Implementation
`public function get useEchoSuppression():Boolean`

Related API Elements

flash.media.Microphone.setUseEchoSuppression()
Method Detail

### getEnhancedMicrophone

()
method

`public static function getEnhancedMicrophone(index:int = -1):Microphone`

Language Version: | ActionScript 3.0

Runtime Versions: | Flash Player 10.3, AIR 2.7

Returns a reference to an enhanced Microphone object that can perform acoustic echo cancellation. Use acoustic echo cancellation to create audio/video chat applications that don't require headsets.

The `index` parameter for the `Microphone.getEnhancedMicrophone()` method and the `Microphone.getMicrophone()` method work the same way.

To use this method on Android, add `MODIFY_AUDIO_SETTINGS` permission under Android manifest additions in the application descriptor.

Important: At any given time you can have only a single instance of enhanced microphone device. All other Microphone instances stop providing audio data and receive a `StatusEvent` with the `code` property `Microphone.Unavailable`. When enhanced audio fails to initialize, calls to this method return `null`, setting a value for `Microphone.enhancedOptions` has no effect, and all existing Microphone instances function as before.

To configure an enhanced Microphone object, set the `Microphone.enhancedOptions` property. The following code uses an enhanced Microphone object and full-duplex acoustic echo cancellation in a local test:

    	     var mic:Microphone = Microphone.getEnhancedMicrophone();
    	     var options:MicrophoneEnhancedOptions = new MicrophoneEnhancedOptions();
    	     options.mode = MicrophoneEnhancedMode.FULL_DUPLEX;
    	     mic.enhancedOptions = options;
    	     mic.setLoopBack(true);

The `setUseEchoSuppression()` method is ignored when using acoustic echo cancellation.

When a SWF file tries to access the object returned by `Microphone.getEnhancedMicrophone()` —for example, when you call `NetStream.attachAudio()`— Flash Player displays a Privacy dialog box that lets the user choose whether to allow or deny access to the microphone. (Make sure your Stage size is at least 215 x 138 pixels; this is the minimum size Flash Player requires to display the dialog box.)

Parameters

| `index:int` (default = `-1`)`` — The index value of the microphone.

Returns

| `Microphone` — A reference to a Microphone object for capturing audio. If enhanced audio fails to initialize, returns `null`.

Related API Elements

Microphone.getMicrophone()
Microphone.enhancedOptions
Microphone.status

### getMicrophone

()
method

`public static function getMicrophone(index:int = -1):Microphone`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Returns a reference to a Microphone object for capturing audio. To begin capturing the audio, you must attach the Microphone object to a NetStream object (see `NetStream.attachAudio()`).

Multiple calls to `Microphone.getMicrophone()` reference the same microphone. Thus, if your code contains the lines `mic1 = Microphone.getMicrophone()` and `mic2 = Microphone.getMicrophone()` , both `mic1` and `mic2` reference the same (default) microphone.

In general, you should not pass a value for `index`. Simply call `air.Microphone.getMicrophone()` to return a reference to the default microphone. Using the Microphone Settings section in the Flash Player settings panel, the user can specify the default microphone the application should use. (The user access the Flash Player settings panel by right-clicking Flash Player content running in a web browser.) If you pass a value for `index`, you can reference a microphone other than the one the user chooses. You can use `index` in rare cases—for example, if your application is capturing audio from two microphones at the same time. Content running in Adobe AIR also uses the Flash Player setting for the default microphone.

Use the `Microphone.index` property to get the index value of the current Microphone object. You can then pass this value to other methods of the Microphone class.

When a SWF file tries to access the object returned by `Microphone.getMicrophone()` —for example, when you call `NetStream.attachAudio()`— Flash Player displays a Privacy dialog box that lets the user choose whether to allow or deny access to the microphone. (Make sure your Stage size is at least 215 x 138 pixels; this is the minimum size Flash Player requires to display the dialog box.)

When the user responds to this dialog box, a `status` event is dispatched that indicates the user's response. You can also check the `Microphone.muted` property to determine if the user has allowed or denied access to the microphone.

If `Microphone.getMicrophone()` returns `null`, either the microphone is in use by another application, or there are no microphones installed on the system. To determine whether any microphones are installed, use `Microphones.names.length`. To display the Flash Player Microphone Settings panel, which lets the user choose the microphone to be referenced by `Microphone.getMicrophone`, use `Security.showSettings()`.

Parameters

| `index:int` (default = `-1`)`` — The index value of the microphone.

Returns

| `Microphone` — A reference to a Microphone object for capturing audio.

Events

| `status:`StatusEvent`` — Dispatched when a microphone reports its status. If the value of the `code` property is `"Microphone.Muted"`, the user has refused to allow the SWF file access to the user's microphone. If the value of the `code` property is `"Microphone.Unmuted"`, the user has allowed the SWF file access to the user's microphone.

Related API Elements

Microphone.status
flash.net.NetStream.attachAudio()
flash.system.Security.showSettings()
Example ( How to use this example )
The following example shows how you can request access to the user's microphone using the static Microphone.getMicrophone() method and listening for the status event. Example provided by ActionScriptExamples.com.
Copy

    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

()
method

`public function requestPermission():void`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 24.0

Requests Microphone permission for the application.

Events

| `PermissionStatus:`PermissionEvent`` — dispatched when the requested permission is granted/denied by the user.

### setLoopBack

()
method

`public function setLoopBack(state:Boolean = true):void`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Routes audio captured by a microphone to the local speakers.

Parameters

| `state:Boolean` (default = `true`)``

Throws

| `PermissionError` — The application does not have permission to use Microphone.

### setSilenceLevel

()
method

`public function setSilenceLevel(silenceLevel:Number, timeout:int = -1):void`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Sets the minimum input level that should be considered sound and (optionally) the amount of silent time signifying that silence has actually begun.

- To prevent the microphone from detecting sound at all, pass a value of 100 for `silenceLevel`; the `activity` event is never dispatched.
- To determine the amount of sound the microphone is currently detecting, use `Microphone.activityLevel`.

Speex includes voice activity detection (VAD) and automatically reduces bandwidth when no voice is detected. When using the Speex codec, Adobe recommends that you set the silence level to 0.

Activity detection is the ability to detect when audio levels suggest that a person is talking. When someone is not talking, bandwidth can be saved because there is no need to send the associated audio stream. This information can also be used for visual feedback so that users know they (or others) are silent.

Silence values correspond directly to activity values. Complete silence is an activity value of 0. Constant loud noise (as loud as can be registered based on the current gain setting) is an activity value of 100. After gain is appropriately adjusted, your activity value is less than your silence value when you're not talking; when you are talking, the activity value exceeds your silence value.

This method is similar to `Camera.setMotionLevel()`; both methods are used to specify when the `activity` event is dispatched. However, these methods have a significantly different impact on publishing streams:

- `Camera.setMotionLevel()` is designed to detect motion and does not affect bandwidth usage. Even if a video stream does not detect motion, video is still sent.
- `Microphone.setSilenceLevel()` is designed to optimize bandwidth. When an audio stream is considered silent, no audio data is sent. Instead, a single message is sent, indicating that silence has started.

Parameters

| `silenceLevel:Number` — The amount of sound required to activate the microphone and dispatch the `activity` event. Acceptable values range from 0 to 100.
| `timeout:int` (default = `-1`)`` — The number of milliseconds that must elapse without activity before Flash Player or Adobe AIR considers sound to have stopped and dispatches the `dispatch` event. The default value is 2000 (2 seconds). (Note: The default value shown in the signature, -1, is an internal value that indicates to Flash Player or Adobe AIR to use 2000.)

Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Camera.setMotionLevel()
flash.media.Microphone.activityLevel
flash.media.Microphone.activity
flash.media.Microphone.gain
flash.media.Microphone.silenceLevel
flash.media.Microphone.silenceTimeout

### setUseEchoSuppression

()
method

`public function setUseEchoSuppression(useEchoSuppression:Boolean):void`

Language Version: | ActionScript 3.0

Runtime Versions: | AIR 1.0, Flash Player 9

Specifies whether to use the echo suppression feature of the audio codec. The default value is `false` unless the user has selected Reduce Echo in the Flash Player Microphone Settings panel.

Echo suppression is an effort to reduce the effects of audio feedback, which is caused when sound going out the speaker is picked up by the microphone on the same system. (This is different from acoustic echo cancellation, which completely removes the feedback. The `setUseEchoSuppression()` method is ignored when you call the `getEnhancedMicrophone()` method to use acoustic echo cancellation.)

Generally, echo suppression is advisable when the sound being captured is played through speakers — instead of a headset —. If your SWF file allows users to specify the sound output device, you may want to call `Microphone.setUseEchoSuppression(true)` if they indicate they are using speakers and will be using the microphone as well.

Users can also adjust these settings in the Flash Player Microphone Settings panel.

Parameters

| `useEchoSuppression:Boolean` — A Boolean value indicating whether to use echo suppression (`true`) or not (`false`).

Throws

| `PermissionError` — The application does not have permission to use Microphone.

Related API Elements

flash.media.Microphone.setUseEchoSuppression()
flash.media.Microphone.useEchoSuppression
Examples How to use this example
MicrophoneExample.as
The following example captures sound using echo suppression from a microphone after the user allows access to their computer's microphone. The `Security.showSettings()` method displays the Flash Player dialog box, which requests permission to access the user's microphone. The call to `setLoopBack(true)` reroutes input to the local speaker, so you can hear the sound while you run the example.

Two listeners listen for `activity` and `status` events. The `activity` event is dispatched at the start and end (if any) of the session and is captured by the `activityHandler()` method, which traces information on the event. The `status` event is dispatched if the attached microphone object reports any status information; it is captured and traced using the `statusHandler()` method.

Note: A microphone must be attached to your computer for this example to work correctly.

Copy

    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);
            }
        }
    }

© 2015 Adobe Systems Incorporated. All rights reserved.
Mon Apr 10 2017, 12:28 PM -07:00