NAudio 不会在扬声器上播放声音。仅默认设备耳机

问题描述 投票:0回答:1

我正在尝试让 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;
}
c# audio naudio obs waveout
1个回答
0
投票

尝试使用

WaveOut.GetCapabilities
来了解每个设备是什么。另外您是否检查过您的其他设备是否已静音?

您确定您的耳机和扬声器实际上是独立的音频设备吗?有时您可以将耳机插入扬声器,但 Windows 将它们视为单个设备。

我还建议您查看

WasapiOut
,它使用更新的 Windows 音频播放 API。

© www.soinside.com 2019 - 2024. All rights reserved.