1

私はunity3dを使用して、次を使用してマイクからの入力を録音しています:

getAudioSource.clip = Microphone.Start(null, true,20, 44100); 

問題は、これが 20 秒の標準時間記録されることです。これは望ましくありません。次の方法で録音を終了するまで録音したいと思います。

Microphone.End(deviceName);

結果のクリップは、標準の 20 秒ではなく、記録した正確なサイズになるはずです。現在、3 秒後に録音を終了すると、結果のオーディオの長さは 20 秒になります。3秒にしてほしい。

これはどのように行うことができますか?

4

1 に答える 1

1

サイズは変更できません。固定サイズです..しかし、オーディオを実際のサイズにトリミングすることができました。

アップデート

    AudioClip ac = getAudioSource.clip;
    float lengthL = ac.length;
    float samplesL = ac.samples;
    float samplesPerSec = (float)samplesL/lengthL;
    float[] samples = new float[(int)(samplesPerSec * timeSinceRecordStarted)];
    ac.GetData(samples,0);

    getAudioSource.clip = AudioClip.Create("RecordedSound",(int)(timeSinceRecordStarted*samplesPerSec),1,44100,false,false);

    getAudioSource.clip.SetData(samples,0);

ここで、timeSinceRecordStartedは録音の長さ (秒単位) であり、 getAudioSourceは最初にマイク オーディオ クリップを保持します。

于 2013-10-02T08:40:13.747 に答える