gpt4 book ai didi

flash - 录音开始时AS3的喀哒声

转载 作者:行者123 更新时间:2023-12-02 22:51:12 25 4
gpt4 key购买 nike

我目前正在录制声音,并存储字节数组以进行播放和随后的mp3编码。

不幸的是,尽管在录音的一开始我就得到了咔嗒声。

我尝试了几种方法来消除这种情况,例如:

  • 以mic.gain = 0记录前0.3秒;然后设置mic.gain = 50;
  • 在前.3秒后清除byteArray,然后继续写入字节数组(实际上是删除记录的前.3秒。)

  • 这些方法都没有停止添加点击。

    有谁知道如何防止添加点击?

    这是我的录制/存储代码:
    public var mic:Microphone = Microphone.getMicrophone();
    public var micSilence:uint;
    private var soundBytes:ByteArray = new ByteArray();
    private var soundBA:ByteArray = new ByteArray();

    mic.gain = 50;
    mic.setSilenceLevel(1, 2000);
    mic.rate = 44;
    Security.showSettings("2");
    mic.setLoopBack(false);
    mic.setUseEchoSuppression(false);

    private function startRecordingAfterCountdown():void {
    mic.addEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
    }

    private function micSampleDataHandler(event:SampleDataEvent):void {
    while (event.data.bytesAvailable){
    var sample:Number = event.data.readFloat();
    soundBytes.writeFloat(sample);
    }
    }

    private function stopRecord():void {
    mic.removeEventListener(SampleDataEvent.SAMPLE_DATA, micSampleDataHandler);
    soundBytes.position = 0;
    soundBA.clear();
    soundBA.writeBytes(soundBytes);
    soundBA.position = 0;
    soundBytes.clear();

    var newBA:ByteArray = new ByteArray();
    newBA.writeBytes(soundBA);
    recordingsArray[0] = newBA;
    }

    最佳答案

    尽管我无法重现咔嗒声,但我认为它可能是由于录制开始时声音的急剧增加所引起的。因此,可以通过平稳地增大音量来消除这种影响。像这样:

    // the amount of volume increasing time in ms
    public static const VOLUME_INC_TIME_MS:uint = 200;
    // in bytes
    public static const VOLUME_INC_BYTES:uint = VOLUME_INC_TIME_MS * 44.1 * 4;

    private function micSampleDataHandler(event:SampleDataEvent):void
    {
    var bytesRecorded:uint = soundBytes.length;
    while( event.data.bytesAvailable )
    {
    var sample:Number = event.data.readFloat();
    if( bytesRecorded < VOLUME_INC_BYTES )
    {
    // using linear dependence, but of course you can use a different one
    var volume:Number = bytesRecorded / VOLUME_INC_BYTES;
    soundBytes.writeFloat(sample * volume);
    bytesRecorded += 4;
    }else
    {
    soundBytes.writeFloat(sample);
    }
    }
    }

    希望这可以帮助。

    关于flash - 录音开始时AS3的喀哒声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8518778/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com