2014-10-24 2 views
1

입력 음원은 국가 별 악기를 통해 연결된 마이크입니다. 들어오는 신호 형식은 (IEEEFloat, 초당 51200 샘플, 100ms 읽기주기) 배열 double[] samples으로 표시됩니다. 100ms마다 마이크에서 들어오는 신호가 이중 []으로 나타납니다. Windows 컴퓨터에서 기본 사운드 카드를 사용하여이 신호를 재생하는 방법.NAudio play IEEEFloat 형식

public void Open() 
{ 
    var _format = new WaveFormatChunk 
       { 
        SamplesPerSecond = Convert.ToUInt32(51200), 
        BitsPerSample = 32, 
        Channels = 1, 
        FormatEncoding = WaveFormatEncoding.IeeeFloat 
       }; 

    _waveOutDevice = new WaveOut 
        { 
         DesiredLatency = 100 
        }; 

    _waveProvider = new BufferedWaveProvider(_format.ToWaveFormat()); 

    _waveOutDevice.Init(WaveProvider); 
} 

public void Consume(double[] samples) 
{ 
    var bytes = samples.ToBytes();    

    _waveProvider.AddSamples(bytes, 0, bytes.Length); 
} 

public void Play() 
{ 
    _waveOutDevice.Play(); 
} 

소리가 들리면 클릭 (핀 찌름 소리)이 100ms마다 발생할 수 있습니다. 마이크에서 음성이나 다른 소리를들을 수 없습니다. 여기서 뭐가 틀린거야?

답변

0

이 코드는 완벽하게 작동합니다. 내 실수. 입력 내용이 올바르지 않습니다.

0

64 비트 IEEE 플로트에서 32 비트 IEEE 플로트로 변환하지 못한 것처럼 보입니다 ... 그 외에 코드는 적당 해 보입니다.