2011-11-05 44 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来完成一秒钟的沉默。无声文件的长度取决于您在单词之间需要多少精度,并且您只需要在应用程序中部署此静默文件即可。