我目前正在研究分析你的聲音的程序。 我有一個運行WaveInEvent的線程,可以記錄來自麥克風的音頻。 當數據可用時(WaveInEventArgs事件觸發),它對它進行編碼並將其串行化併發送到分析器。WaveInEvent處理程序多久執行一次?
我希望能夠使用音頻文件,比如.mp3。 我讀這樣的:
byte[] audioFileBytes = File.ReadAllBytes(audioFilePath);
然後將它發送到分析儀相同的方式。
我遇到了一些問題:音頻文件沒有在另一端處理 - 雖然它工作,如果我使用「動態」音頻輸入。我猜它與緩衝區長度有關,但我找不到WaveInEvent緩衝區有多長時間,以及WaveInEventArgs事件觸發的頻率。 其次,數據在大約2秒內被處理,並且當我實時得到數據時,我用它爲分析器端收到的數據添加時間戳,所以現在它爲整個文件添加一個時間戳。如果我每字節發送一個字節,我將在大約2秒鐘內獲得120萬個時間戳,這仍然不能在圖表上打印 - 此外,圖表應該從0開始,並以音頻文件的長度結束(此處爲70秒我有的測試),而不是2秒。
作爲第一步,我想到了「實時」讀取音頻文件,並從文件中發送音頻,就好像它來自麥克風一樣,但我不知道該怎麼做。
我的問題歸結爲:WaveInEvent處理程序的啓動頻率如何?