Взял пример из документации
http://help.adobe.com/ru_RU/as3/dev/...0204-7d1d.html в котом показано как записать звук с микрофона в ByteArray, а потом проиграть его в наушники.

Код AS3:
const DELAY_LENGTH:int = 10000;
var mic:Microphone = Microphone.getMicrophone();
mic.setSilenceLevel(0, DELAY_LENGTH);
mic.gain = 100;
mic.rate = 44;
mic.codec=SoundCodec.NELLYMOSER;
var soundBytes:ByteArray=new ByteArray();
mic.addEventListener(StatusEvent.STATUS, onMicStatus);
Security.showSettings("microphone");
var timer:Timer = new Timer(DELAY_LENGTH);
function micSampleDataHandler(event:SampleDataEvent):void
{
while(event.data.bytesAvailable)
{
var sample:Number = event.data.readFloat();
soundBytes.writeFloat(sample);
}
}
var sound:Sound = new Sound();
var channel:SoundChannel;
function timerHandler(event:TimerEvent):void
{
mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
timer.stop();
soundBytes.position = 0;
sound.addEventListener(SampleDataEvent.SAMPLE_DATA, playbackSampleHandler);
channel = sound.play();
channel.addEventListener( Event.SOUND_COMPLETE, playbackComplete );
}
function playbackSampleHandler(event:SampleDataEvent):void
{
for (var i:int = 0; i < 8192 && soundBytes.bytesAvailable > 0; i++)
{
//trace(sample);
var sample:Number = soundBytes.readFloat();
event.data.writeFloat(sample);
event.data.writeFloat(sample);
}
}
function playbackComplete( event:Event ):void
{
trace( "Playback finished.");
}
function onMicStatus(event:StatusEvent):void
{
if (event.code == "Microphone.Unmuted")
{
mic.addEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
timer.addEventListener(TimerEvent.TIMER, timerHandler);
timer.start();
trace("Microphone access was allowed.");
}
else if (event.code == "Microphone.Muted")
{
trace("Microphone access was denied.");
try
{
if(this.loaderInfo.loader!=null) this.loaderInfo.loader.unloadAndStop();
}
catch(er:Error){}
this.parent.removeChild(this);
}
}
Если звук пишется на частоте 44кГ, то пример работает (это с использованием кодека NELLYMOSER). Но с ним кроме голоса присутствует значительный шум. Чтобы его подавить попытался использовать другой кодек Speex, который работает в более узком частотном диапазоне и работает только на частоте 16кГ. Как преобразовать полученный byteArray чтобы его можно было проиграть в Sound?
Добавлено через 4 минуты
Если в примере выше просто заменить

Код AS3:
mic.codec=SoundCodec.NELLYMOSER;
на
mic.codec=SoundCodec.SPEEX;
то в наушниках голос будет слышен так как будто человек наглотался гелия.