このコードを参照してください。
soundData.position=0;
var soundOutput:Sound = new Sound();
soundOutput.addEventListener(SampleDataEvent.SAMPLE_DATA, playSound);
soundOutput.play();
function playSound(soundOutput:SampleDataEvent):void {
if (! soundData.bytesAvailable>0)
{
return;
}
for (var i:int = 0; i < 8192; i++)
{
var sample:Number=0;
if (soundData.bytesAvailable>0)
{
sample=soundData.readFloat();
}
soundOutput.data.writeFloat(sample);
soundOutput.data.writeFloat(sample);
}
}
上記のコード playrateを使用するSoundCodec.SPEEX
場合は、1x ではなく、playSound 関数を修正する必要があります。多分あなたはテストしました。削除する場合はmicrophone.codec = SoundCodec.SPEEX;
知っています。
詳細: Adobe 公式 サウンド入力のキャプチャ
Speex での録音時に問題があります。
次の記事を参照してください。
http://forums.adobe.com/message/3571251#3571251
http://forums.adobe.com/message/3584747
SoundFormat が Speex を示している場合、オーディオは 16 kHz でサンプリングされた圧縮モノラルです。フラッシュでは、サウンド オブジェクトが 44khz で再生されます。16khz (Speex) でサンプリングしているので、SampleDataEvent イベント ハンドラーを介してデータを 2.75 高速で送信し、そのデータを取得しています。したがって、playSound の for(または while) ループを変更する必要があります。
以下のサイトをお勧めします。この記事は「プレイレートの調整方法」です。素晴らしいチュートリアル。
http://www.kelvinluck.com/2008/11/first-steps-with-flash-10-audio-programming/