首页 > 解决方案 > 处理字节数组,因为用户仍在使用音频图形 API 从 UWP 应用程序中的麦克风讲话

问题描述

我一直在尝试复制 NAudio 的一项功能,该功能允许在用户输入可被处理并作为 byte[] 缓冲区输入 Google API 时处理用户输入。

_waveIn.DataAvailable += ProcessAudio;

ProcessAudio 方法将音频缓冲区传递给 Google API

private void ProcessAudio(object sender, WaveInEventArgs e)
        {
            if (canSend)
            {                
                WriteAudioData(e.Buffer);
            }
        }

然后将缓冲区传递给 Google API 工作正常。

但是,使用 UWP 应用程序时,NAudio 不起作用,因此我尝试使用 Audio Graph API 来做同样的事情,但我想以 byte[] 而不是 byte* 的形式访问音频数据

以下内容来自我一直关注的示例:

unsafe private AudioFrame ProcessAudioFrame(AudioMediaFrame audioMediaFrame)
        {
            using (AudioFrame audioFrame = audioMediaFrame.GetAudioFrame())
            using (AudioBuffer buffer = audioFrame.LockBuffer(AudioBufferAccessMode.Read))
            using (IMemoryBufferReference reference = buffer.CreateReference())
            {
                byte* dataInBytes;
                uint capacityInBytes;

                ((IMemoryBufferByteAccess)reference).GetBuffer(out dataInBytes, out capacityInBytes);


            }
        }

问题是将 dataInBytes 作为字节数组而不是 dataInBytes*。

然后我将类似地使用字节数组并将其传递给 API。

所以我的问题是,我想做的事情是正确的吗?我如何使用 Audio Graph API 来帮助解决这个问题?

谢谢

标签: c#uwpvoice-recording

解决方案


推荐阅读