我記錄一些聲音n音訊浮動陣列和獲取錄製的音頻後,我想將其轉換回從float數組爲WAV去檢查一下。無法捕捉的15K麥克風C#n音訊中的音調頻率
我寫了一個方法,但我不確定,因爲:我嘗試記錄一個5秒鐘的15Khz音並通過fft檢查頻譜以確保15k被捕獲。 這是我的步驟:
我產生這種語氣與MATLAB首先和記錄使用Audacity,這是正確的基調。 Audacity顯示了一個很好的頻譜,在-30db的15k高峯。
我嘗試用n音訊記錄音調,並將其轉換回從記錄的float數組爲WAV去檢查它的勇氣。不幸的是,它只顯示了一些高達12k的噪音,沒有更多(在12k時爲-80db)。
這裏是正規記錄皈依數據可用時:
void myWaveIn_DataAvailable(object sender, WaveInEventArgs e)
{
myMemoryStream.Write(e.Buffer, 0, e.BytesRecorded);//this is for playing the myMemoryStream
for (int index = 0; index < e.BytesRecorded; index += 2)//Here I convert in a loop the stream into floating number samples
{
short sample = (short)((e.Buffer[index + 1] << 8) |
e.Buffer[index + 0]);
samples32.Add(sample/32768f);//IEEE 32 floating number
}
}
這是我轉換回代碼:
void floatBackToStream(float[] myfloatArray)
{
short[] myShort = new short [myfloatArray.Length];
myMemoryStream2 = new MemoryStream();
for (int i = 0; i < myfloatArray.Length; i++)
{
myShort[i] = (short)(myfloatArray[i] * 32768f);
myMemoryStream2.WriteByte((byte)(myShort[i] & 255));
myMemoryStream2.WriteByte((byte)(myShort[i] >> 8));
}
myMemoryStream2.Position = 0;
myRaw2 = new RawSourceWaveStream(myMemoryStream2, new WaveFormat(44100,1));
WaveFileWriter.CreateWaveFile("C:/Users/alon/Desktop/myRecordings/myCalibration.wav", myRaw2);
}
聽起來像有一個低通濾波器在某處有...什麼採樣率是您使用?你能用標準錄音軟件來錄製你的音色嗎? – Aron
44.1Khz。沒有應用數字濾波器。我必須記錄NAudio課程。 – axcelenator
你是如何設置WaveInEvent的?默認情況下,它使用8kHz採樣率。 – SleuthEye