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

时间:2019-06-02 15:00:24

标签: c# soundplayer

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

public void MyKeyDown(object sender, KeyEventArgs)
{
    player = new System.Media.SoundPlayer(@"f:\sounds\2.wav");
    player.Play();
}

它可以正常工作……只要您每分钟输入大约20个单词。比这快的话,直到您放慢速度

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

有没有更快的播放声音文件的方法,还是其他地方的问题?

1 个答案:

答案 0 :(得分:0)

您将在每个KeyDown上创建一个新的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();
}

就我而言,这种方法更加流畅。