有没有比C#中的SoundPlayer播放声音更快的方法?

有没有比C#中的SoundPlayer播放声音更快的方法?,c#,soundplayer,C#,Soundplayer,我正在尝试使用SoundPlayer类(模拟打字机声音),在每次按下键时播放打字声音 它很好用。。。只要你每分钟打字20字左右。再快一点,声音就不会全部播放,甚至会完全停止播放,直到你放慢速度 2.wav是一个8kb的声音文件,持续时间为0.1秒,因此仅根据声音持续时间,该文件可以每分钟完整播放600次(足够以大约90 wpm的打字速度播放) 有没有更快的播放声音文件的方法,或者问题出在其他地方?这样做的话,您会在每次按键时创建一个新的SoundPlayer实例,然后每次都需要从光盘中重新加载相

我正在尝试使用SoundPlayer类(模拟打字机声音),在每次按下键时播放打字声音

它很好用。。。只要你每分钟打字20字左右。再快一点,声音就不会全部播放,甚至会完全停止播放,直到你放慢速度

2.wav是一个8kb的声音文件,持续时间为0.1秒,因此仅根据声音持续时间,该文件可以每分钟完整播放600次(足够以大约90 wpm的打字速度播放)


有没有更快的播放声音文件的方法,或者问题出在其他地方?

这样做的话,您会在每次按键时创建一个新的SoundPlayer实例,然后每次都需要从光盘中重新加载相同的样本。SoundPlayer类有一个构造函数,它将声音文件的位置作为参数。在这种情况下,您可以重用SoundPlayer实例,并将文件缓存在内存中。我可以想象这要快得多

像这样的事情应该可以做到:

private SoundPlayer soundPlayer;

// Call this on App Startup / Initialization...
private void InitializeSoundPlayer() 
{
  this.soundPlayer = new SoundPlayer("sound.wav");
}

public void MyKeyDown(object sender, KeyEventArgs)
{
    this.soundPlayer.Play();
}

在我的情况下,这是工作更流畅。

没有人在一个稳定的剪辑打字。SoundPlayer非常简单,它没有重叠或混合声音的选项。以NAudio库为例,拥有一个玩家实例会更快吗?每次只需调用play?@the.Doc尝试了两种方法,但没有任何区别。@HansPassant我只是尝试了使用NAudio和教程中的代码进行播放。工作得稍微好一点,但很快就会崩溃,尽管在“尝试”块中。我会仔细看看我是否能让它工作,如果我不能,我会问一个更好的问题。我一开始是这样做的,没有实际意义。
private SoundPlayer soundPlayer;

// Call this on App Startup / Initialization...
private void InitializeSoundPlayer() 
{
  this.soundPlayer = new SoundPlayer("sound.wav");
}

public void MyKeyDown(object sender, KeyEventArgs)
{
    this.soundPlayer.Play();
}