问题标签 [wasapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1321 浏览

visual-c++ - WASAPI 没有声音输出

我在使用 WASAPI 时遇到问题。它不输出任何声音,我已经检查了写入缓冲区的数据。

因为它不输出任何声音,所以我不知道找出问题所在。

以下代码可能存在一些问题。

0 投票
1 回答
2658 浏览

c# - Record sound of a certain application

I was wondering is there any way to record sound of a certain application? I've searched for a while but didn't found some useful information about this. So now I'm using NAudio library to record WASAPI loopback and microphone sound, mix them together and save to mp3 file using this code:

Also I found CSCore library which seems to look like NAudio with some extra features, but a complete lack of documentation. May be CSCore have functionality which I need?

0 投票
1 回答
693 浏览

c++ - 如何更改语音的音频格式?

我在 Windows 上搞乱 SAPI,我注意到声音的音频质量相当平庸。通过比较一个简单测试程序的音频质量和eSpeak提供的各种质量,我得出的结论是,默认质量在16kHz 16 Bit Mono.

简单的 SAPI 测试程序

当然,我尝试过查阅SAPI 文档,但还没有找到如何更改格式。ISpVoice没有设置格式的方法,但它有一个SetOuput方法,该方法采用:

输出音频设备的流、音频设备或对象令牌

我的下一步是创建一个IAudioClient,其格式由SpConvertStreamFormatEnum提供,并将其IAudioRenderClient设置为语音输出。尝试失败,因为我无法初始化 IAudioClient。

尝试将音频流设置为语音的输出

除此之外,我还浏览了SAPI Audio Interfaces,发现了许多其他接口和实现,但似乎没有一个对这项任务特别有用。我觉得我在这里绕圈子。

问题:如何像 eSpeak 的 TTSApp 那样更改语音的音频格式? TTSApp

0 投票
1 回答
332 浏览

windows - 大多数(如果不是全部)音频端点是 PCM 吗?

我正在使用 WASAPI 编写专业音频应用程序。我机器上的所有设备都具有 16 位或 24 位 PCM 的引擎格式。考虑到这一点,我想知道假设所有音频端点都将 PCM 作为其原生格式是否安全。

他们有吗?如果没有,什么样的设备没有?

0 投票
0 回答
2159 浏览

c++ - WASAPI 重采样/Windows Media Foundation

我正在使用 WASAPI 编写专业音频应用程序。此应用程序以独占模式运行流,并在两个方向上以恒定格式对音频数据进行重新采样(一个在捕获设备和应用程序之间重新采样,另一个在应用程序和输出设备之间重新采样)。MSDN 上有一个关于 Audio Resampler DSP 的页面但我不确定这是否是我想要使用的 API。

我不确定的原因是 API 的设计方式。使用 IMFTransform,我需要一堆额外的缓冲区,这些缓冲区实际上只会使过程复杂化,并且该对象的设计几乎就像我正在与某个驱动程序通信的 Direct3D 对象(它有一个命令队列并且缓冲区对它们有锁)。

我正在寻找的是一个 API,它可以尽可能快地对我自己的应用程序中的数据进行重新采样。这是 API Pro Audio 应用程序应该用于此目的吗?如果不是,那么正确的 API 是什么?

0 投票
0 回答
1300 浏览

wasapi - 使用 WASAPI api 通过麦克风捕获语音输入,但只是得到一些噪音

我是 WASAPI 的新手,按照这里的 msdn 参考代码 http://msdn.microsoft.com/en-us/library/windows/desktop/dd370800(v=vs.85).aspx使用 WASAPI 捕获音频蜜蜂。

出于我的目的,稍微修改了 msdn 参考代码。我正在使用麦克风录制我的声音并播放它,它在使用 SoundRecorder 和其他 Windows 内置应用程序时工作正常,但使用我的测试应用程序,没有得到任何有效的声音,只是得到一些噪音。

这是我的代码,请告诉我,我哪里出错了:

0 投票
3 回答
1861 浏览

c# - Wasapi 音频质量

我是在 Nadio 中使用 Wasapi 的新手,我对音质有疑问。当我录制时,大约 1/10 倍的音频听起来很完美,而另外 9 倍的声音会很模糊。我想知道这是否有任何原因。

这是我用来录制音频的代码:

0 投票
1 回答
684 浏览

c++ - WASAPI 独占/事件模式导致嗡嗡声

当我在其中一个扬声器上打开独占模式音频流时,会发出奇怪的嗡嗡声。这种嗡嗡声在我的其他设备上的相同条件下不会发生,通常也不会在独占推送模式或共享模式下发生。

问题似乎是 WASAPI 将周期性设置为比我要求的高 5 毫秒,没有特别的原因。我尝试了 10 毫秒来查看 timeGetTime() 以显示 15 毫秒的周期,所以我尝试请求 15 毫秒。然后周期变为 20 毫秒。我的其他设备不会发生这种情况,这些设备在与问题设备相同的条件下进行流式传输,并且 timeGetTime() 显示的周期性等于请求的周期性。这是某个驱动程序的故障,还是我在我的代码中做出了我不应该的假设?

更新:当我在开始流媒体之前发送一个静音包时,嗡嗡声就会消失。我不确定这如何影响周期性,所以我仍在寻找解释。

0 投票
1 回答
2384 浏览

c# - 具有超过 2 个通道的 NAudio WASAPI 录制设备引发不支持的格式错误

我在使用 NAdio 库录制具有 6 或 8 个通道的 WASAPI 环回设备时遇到了问题。例如,设备具有以下波形:32 位 PCM:44kHz 6 通道 wBitsPerSample:32

它在StartRecording上崩溃,出现“不支持的波形格式”错误错误来自 WasapiCapture.InitializeCaptureDevice() 调用时

如果我使用 windows-> 控制面板_> 声音设置将设备切换到 2 通道,代码工作正常 有没有解决这个问题?我可以以某种方式即时更改设备混合格式吗

0 投票
0 回答
208 浏览

wasapi - WASAPI 独占事件驱动的跳过检测

我有一个使用 WASAPI 独占事件驱动模式的应用程序。Microsoft 的示例代码与我正在做的事情相去不远。我们有一个问题,如果 CPU 负担过重,我们会跳过我们应该写入的 3ms 缓冲区之一。在独占事件驱动模式下,似乎无法检查写入光标。在共享模式下,您会得到 GetCurrentPadding(),它对独占模式没有任何作用。没有办法知道我们是落后了还是跳过了或其他什么。我看到为了捕获,有 AUDCLNT_BUFFERFLAGS_DATA_DISCONTINUITY 标志。IAudioRenderClient 有类似的东西吗?当我调用 GetBuffer() 时,我如何知道我返回的指针对应于哪个播放光标位置?在不知情的情况下简单地失去同步似乎非常容易。如果发生任何有趣的事情,我可以看时钟并出错,但我想要更具确定性的东西。我想确定在我向用户吐出之前我们错过了一个缓冲区。