3
我想使用naudio計算1秒的任何.wav文件的分貝數。這是我的代碼:使用naudio獲取1秒的音頻文件的分貝數
WaveFileReader reader = new WaveFileReader(@"C:\Users\Admin\Desktop\result.wav");
int bytesPerMillisecond = reader.WaveFormat.AverageBytesPerSecond/1000;
//byte[] buffer = new byte[reader.Length];
//int read = reader.Read(buffer, 0, (int)reader.Length);
TimeSpan time = new TimeSpan(0, 0, 1);
int bytesPerSecond = (int)time.TotalMilliseconds * bytesPerMillisecond;
byte[] oneSecondBuffer = new byte[bytesPerSecond];
int read = reader.Read(oneSecondBuffer, 0, bytesPerSecond);
short sample16Bit = BitConverter.ToInt16(oneSecondBuffer, 1);
double volume = Math.Abs(sample16Bit/32768.0);
double decibels = 20 * Math.Log10(volume);
這條線:
short sample16Bit = BitConverter.ToInt16(oneSecondBuffer, 1);
返回0。我在做什麼錯?
在你的問題,請澄清有爭議的部分,這是BitConverter.ToInt16(oneSecondBuffer,1)線返回0的標題。計算分貝並不重要,因爲真正的問題發生在之前。最好的問候, –
@Alexander嘗試不同的wavs? BitConverter.ToInt16可以返回0,例如如果字節數組元素是00-00 –