我有一系列带有单个单词的wave文件,每个单词持续约1秒钟。我想使用C#以五秒的间隔将它们连接成一个大文件。这将使我不必通过声音编辑器放置大文件并记录每个单词的开始时间。
我知道如何使用NAudio和WaveFileWriter.write连接文件。有没有办法在一定时间内插入静音,或者在文件中的某个点实际附加一个文件?我知道会有一种情况,我写的文件是11秒长,我想在15秒写下一个文件。
如果能让事情变得更轻松,我会先打开转换为mp3。实际上,大波文件最终将转换为mp3。如果这更有意义,我也会对其他工具持开放态度。
非常感谢你的帮助,
乔恩
答案 0 :(得分:1)
使用NAudio框架时,您可以访问阅读器以确定需要编写多少字节的静音
int bytesPerMillisecond = reader.WaveFormat.AverageBytesPerSecond / 1000;
然后,您可以编写下一个5秒的倍数所需的任何数量的静音字节。我假设你可以写所有的零,即使这应该导致根本没有听起来可能是人为的声音。
因此,一个更好的解决方案可能是制作一个5s的沉默和复制的部分。请参阅这个很好的例子,了解如何写一定长度的波:
http://mark-dot-net.blogspot.com/2009/09/trimming-wav-file-using-naudio.html
答案 1 :(得分:0)
我可能无法正确理解这个问题,但如果我这样做可能对您有用。听起来你应该能够使用一些录音机录制你想要的任何长度的股票“静音文件”(1秒,1/2秒)。然后,你可以使用NAudio连接它所需的多个副本,以提供你想要的单词之间的沉默量。换句话说,假设你有1/2秒的沉默。您可以构建word1.wav + silence.wav + silence.wav + word2.wav,在word1和word2之间保持一整秒的静音。静默文件的长度取决于单词之间所需的精度,您只需要在应用程序中部署此静默文件。