我正在尝试让 naudio 在使用耳机时在扬声器上播放声音,但音频仅在耳机设备上播放。
在枚举设备后,扬声器的设备 ID 为 0,但我进行了此测试以检查 10 个设备,即使我只有两个设备,并且音频始终在耳机(默认设备)上播放。我也尝试了
WaveOutEvent
,结果相同。
如何在不同设备上播放音频? 总体目标是让 SpeechSynthesizer 在不同的设备上将语音播放为文本音频,这样它就不会被 OBS(开放广播软件)拾取。 我可以将游戏的音频更改为桌面音频 2,以便与计算机的其他声音分开录制,但如果我将游戏放在桌面音频 2 上,然后使用“监视器和输出”启用收听它。它有明显的延迟,且没有已知的修复方法。因此,我宁愿让语音转文本应用程序出现延迟,但它似乎无法在设置为扬声器的桌面音频 2 上播放音频。 即使在 Windows 10 上通过在声音设置中更改应用程序的输出设备进行设置。
for (int i = 0; i < 10; i++)
{
var myWaveOut = new WaveOut();
myWaveOut.Init(new WaveFileReader("foo.wav"));
myWaveOut.DeviceNumber = i;
myWaveOut.Play();
Thread.Sleep(2000);
myWaveOut.Stop();
myWaveOut.Dispose();
myWaveOut = null;
}
尝试使用
WaveOut.GetCapabilities
来了解每个设备是什么。另外您是否检查过您的其他设备是否已静音?
您确定您的耳机和扬声器实际上是独立的音频设备吗?有时您可以将耳机插入扬声器,但 Windows 将它们视为单个设备。
我还建议您查看
WasapiOut
,它使用更新的 Windows 音频播放 API。