2011-11-05 57 views
0

我有一系列包含單詞的波形文件,每個文件持續約1秒。我想用C#將它們連接到一個大文件,間隔時間爲5秒。這將使我無需通過一個聲音編輯器放大文件並記錄每個單詞的開始時間。以5秒爲間隔連接波形文件

我知道如何使用NAudio和WaveFileWriter.write來連接文件。有沒有辦法在特定時間段內插入沉默,或者在文件的某個特定位置實際追加一個文件?我知道那裏會出現這樣的情況,我正在寫的文件長度爲11秒,而且我希望在15秒後寫入下一個文件。

如果能讓事情變得更容易,我會首先轉換成mp3。實際上,這個大浪的文件最終會被轉換成mp3。如果這樣做會更有意義,我也會接受其他工具。

非常感謝您的幫助,

喬恩

+0

非常感謝您的意見。我遵循@Mithon的第二個建議,爲每個聲音創建5秒鐘的靜音,並用聲音覆蓋它,然後寫出文件。單個文件完美地工作,但是當我嘗試連接它們時,出現錯誤,說新文件是不兼容的聲音格式。因此,爲了節省時間,我使用了GoldView,並將5秒鐘的文件合併爲一個大文件,這非常完美。我不知道爲什麼會出現錯誤,因爲我已將大文件設置爲使用與要並置的文件相同的格式。 –

回答

1

當使用n音訊框架,您可以訪問讀者找出你需要多少的沉默要寫入的字節

int bytesPerMillisecond = reader.WaveFormat.AverageBytesPerSecond/1000; 

然後你可以寫任何你需要的沉默字節的數量達到下一個多5秒。我假設你可以寫出所有的零,即使這應該導致沒有聲音,這聽起來可能是人爲的。

正因爲如此,一個更好的解決方案可能是製作一個5s的靜音wav並複製一部分。請參閱本很好的例子怎麼寫一波一定長度:

http://mark-dot-net.blogspot.com/2009/09/trimming-wav-file-using-naudio.html

0

我可能不能正確認識這個問題,但如果我這樣做可能會爲你工作。這聽起來像你應該能夠使用一些錄音機錄製任何你想要的長度(1秒,1/2秒)的股票「無聲文件」。然後,您可以使用NAudio連接多個副本,以便在單詞之間提供所需的沉默量。換句話說,假設你有1/2秒的沉默。你可以在word1和word2之間建立word1.wav + silence.wav + silence.wav + word2.wav來完成一秒鐘的沉默。無聲文件的長度取決於您在單詞之間需要多少精度,並且您只需要在應用程序中部署此靜默文件即可。