Как преобразовать сигнал в универсальном оконном телефоне?
Я использую RTAudio для получения сигнала от микрофона и использую этот сигнал в качестве входа для другого кодера. Кажется, что UWP всегда возвращает фиксированную частоту дискретизации звука, которая отличается от частоты дискретизации, которую хочет мой кодировщик.
WASAPICapture возврат 44100 Hz
сигнал, 2 channel
(Вход). Я хочу преобразовать этот вход в 1600 Hz
сигнал, 1 channel
(выход). Как правильно сделать повторную выборку?
Данные, которые я получил от обратного вызова WASAPICapture. Этот обратный вызов называется каждый 64 ms
и каждый раз это давало мне 480
образцы. Требуется мой кодировщик 320
образец каждого 20 ms
, Что я должен сделать, чтобы получить это (перекадрировать)?
Не могли бы вы предложить мне какую-нибудь библиотеку для этого? или я должен написать код сам?
2 ответа
Начиная с RtAudio PR 119, библиотека теперь поддерживает изменения частоты дискретизации для WASAPI.
Этот пиар был объединен в master
16 октября 2018 года, но на момент написания статьи не является частью официального релиза.
Из пиара:
Поскольку сам WASAPI не поддерживает частоты дискретизации, отличные от текущих системных значений по умолчанию, я ввел библиотеку Microsoft MFT (Media Foundation Transform) в RtApiWasapi, чтобы позволить пользователям указывать частоту дискретизации, которую они хотят использовать.
Я хочу преобразовать этот вход в сигнал 1600 Гц, 1 канал (выход). Как правильно сделать повторную выборку
Ссылка здесь
WASAPI привязан к частоте дискретизации звукового движка (определяется при запуске) и не может быть изменен в среде WinRT. Вам нужно будет написать свой собственный преобразователь частоты дискретизации, чтобы перейти от частоты дискретизации медиа-движка к целевой целевой частоте дискретизации.
Например, NAudio имеет оболочку WASAPI, в некоторых случаях об этом говорят: измените wav-файл (на 16 кГц и 8 бит) с помощью NAudio