Обрабатывать байтовый массив, когда пользователь все еще говорит с микрофона в приложении UWP, используя Audio Graph API - PullRequest
0 голосов
/ 22 февраля 2019

Я пытался воспроизвести функцию NAudio, которая позволяет обрабатывать вводимые пользователем данные, когда они доступны для обработки и подачи в Google API в виде байтового буфера [].

_waveIn.DataAvailable += ProcessAudio;

Метод ProcessAudio передает аудио буфер в API Google

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

Затем передача буфера в Google API работает нормально.

Однако с приложением UWP приложение NAudio не работает, и поэтому япытаюсь использовать Audio Graph API для того же, но я хочу получить доступ к аудиоданным как байт [], а не байт *

Следующее приведено в следующем примере:

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.

Итак, мой вопрос в том, что я думаю сделать правильно и как я могу использовать API Audio Graph, чтобы помочь решить эту проблему?

Спасибо

...