C#音频 - 如何伸展时间(不同速度,相同音高)

hea*_*ath 12 c# audio tempo pitch

我正在尝试在C#(VS2008)中创建一个winform应用程序,它可以加载一个mp3(其他格式会很好,但至少是mp3)并能够调整播放速度(速度)而不影响音高.我真的不需要任何其他音频效果.我尝试使用DirectShow,但似乎没有提供时间拉伸功能.我能够加入irrklang,但似乎没有时间伸展能力.所以现在我转到了SoundTouch.这肯定有能力,但我不清楚如何在C#中实现.

几天之后,我所做的就是在SoundTouch DLL上使用DLLImport,并且能够成功检索版本号.在这一点上,我甚至不确定我是否可以做我正在尝试使用SoundTouch做的事情.任何人都可以提供一些关于如何实现SoundTouch或具有我正在寻找的功能的不同库的指导?谢谢.

小智 8

如果有人仍然感兴趣,我已经为SoundTouch库编写了.Net包装类. http://code.google.com/p/soundtouchnet/


Jus*_*eel 6

答案是SoundTouch可以做你想做的事.

看一下示例程序SoundStretch.它给出了使用SoundTouch库来改变速度(不改变音高)以及改变音高(不改变速度)和播放速率(改变音高和速度)的例子.我会查看源代码并使用您需要的内容.

我看到的唯一问题是你使用的是mp3格式并且它使用WAV格式,所以你需要先转换文件.我真的不认为你会发现一个程序可以直接在任何类型的压缩文件上执行你想要的程序,因为用于执行此类操作的方法的性质.如果你想更多地研究整个过程,它会使用相位声码器.