Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows 8 Metro录制音频(过滤噪音、改变音高)_C#_Audio_Windows Runtime_Windows Store Apps_Winrt Xaml - Fatal编程技术网

C# Windows 8 Metro录制音频(过滤噪音、改变音高)

C# Windows 8 Metro录制音频(过滤噪音、改变音高),c#,audio,windows-runtime,windows-store-apps,winrt-xaml,C#,Audio,Windows Runtime,Windows Store Apps,Winrt Xaml,只有在有人讲话时才能录制音频吗?我想听麦克风,只有当“音量”大于某个噪声级(意味着有人在说话)时才开始录音。我还需要更改录制音频的音调 我尝试在C#中使用MediaCapture类,但示例中的StartRecordToStorageFileAsync在我的场景中不可用。在Windows Phone中,我使用XNA,但在Windows 8中找不到类似的API。在MSDN论坛上检查此线程: 在C#、visualbasic或JavaScript中似乎有而且可能不会有这样做的api,而您需要在本机组件中

只有在有人讲话时才能录制音频吗?我想听麦克风,只有当“音量”大于某个噪声级(意味着有人在说话)时才开始录音。我还需要更改录制音频的音调


我尝试在C#中使用MediaCapture类,但示例中的StartRecordToStorageFileAsync在我的场景中不可用。在Windows Phone中,我使用XNA,但在Windows 8中找不到类似的API。

在MSDN论坛上检查此线程:

在C#、visualbasic或JavaScript中似乎有而且可能不会有这样做的api,而您需要在本机组件中这样做

该线程中提到的文章中的核心音频/WASAPI应该具备您需要的功能:


我想有一个用于从Kinect传感器捕获音频的示例的描述,其中可能有相关的代码示例,显示如何使用GetBuffer()调用获取原始音频样本的缓冲区,您可以处理这些原始音频样本以获取所需的信息。

您是如何使用windows 8;)的@Sam1-它正处于“消费者预览”阶段@RitchMelton噢,好的,谢谢链接该示例可能在Metro中不起作用——它需要使用Metro风格的应用程序(如IMMDevice)中不支持的API,当然,但其中的部分内容应该会有所帮助。我找不到一个适合地铁风格的应用程序。我会尽一切努力避免使用C++ API。文章中提到的500毫秒延迟对我来说不是问题。我的想法是使用StartRecordToStreamAsync将音频永久记录到流中,如果音量高于某个值(有人在说话),则可以使用计时器定期检查流,并在恢复为无说话时结束。我会在溪流中找到两个位置,我会把溪流的一部分挖出来并使用它。我能做这个吗?如果是这样,怎么做?也许有某种方法可以在流被写入时执行MediaCapture.StartRecordToStreamAsync并读取流。否则,你可能需要至少做一个瘦的C++ WiRT组件,它允许你处理C语言中的所有东西,一旦你到达那里,你可能决定无论如何都要用C++来完成大部分代码。根据我的经验,是的,如果你能避免进入C++,那是很好的,我发现它比C语言低5倍,但是我认为如果你想在WiRT上建立好的东西,你必须做一个投资。@ IGOKULMAN,你找到了一种在单个流上同时读写的方法吗?我也在同一条船上,非常感谢您在尝试中所学到的任何教训。谢谢