Аудио в реальном времени в MATLAB

Audio Toolbox™ оптимизирован для обработки аудиоданных в реальном времени. audioDeviceReader, audioDeviceWriter, audioPlayerRecorder, dsp.AudioFileReader и dsp.AudioFileWriter разработаны для потоковой передачи многоканального аудио, и они обеспечивают необходимые параметры так, чтобы можно было обменять между пропускной способностью и задержкой.

Для получения информации об обработке в режиме реального времени и советах о том, как оптимизировать ваш алгоритм, смотрите Аудио ввод-вывод: Буферизация, Задержка и Пропускная способность.

Этот пример описывает, как можно реализовать обработку аудиопотока в MATLAB®. Это обрисовывает в общих чертах рабочий процесс для создания испытательного стенда разработки и обеспечивает примеры для каждого этапа рабочего процесса.

Создайте испытательный стенд разработки

Этот пример создает испытательный стенд разработки на четырех шагах:

  1. Создайте объекты к аудио ввода и вывода от вашего испытательного стенда.

  2. Создайте цикл аудиопотока, который обрабатывает ваше покадровое аудио.

  3. Добавьте осциллограф, чтобы визуализировать обоих ввод и вывод вашего цикла аудиопотока.

  4. Добавьте алгоритм обработки для своего цикла аудиопотока.

Этот пример также обсуждает инструменты для визуализации и настройки вашего алгоритма обработки в режиме реального времени.

Для обзора цикла обработки рассмотрите завершенный испытательный стенд ниже. Можно воссоздать этот испытательный стенд путем обхода постепенный через этот пример.

 Завершенный код испытательного стенда

1. Создайте объекты Системы ввода-вывода

Ваш цикл аудиопотока может читать из устройства или файла, и он может записать в устройство или файл. В этом примере вы создаете цикл аудиопотока, который читает аудио, покадровое из файла, и пишет аудио, покадровое в устройство. Смотрите Примеры Быстрого запуска для альтернативных настроек ввода/вывода.

Создайте Систему dsp.AudioFileReader object™ и задайте файл. Чтобы уменьшать задержку, установите свойство SamplesPerFrame Системного объекта dsp.AudioFileReader к маленькому формату кадра.

Затем, создайте Системный объект audioDeviceWriter и задайте его частоту дискретизации как частоту дискретизации вашего входного Системного объекта.

Для получения дополнительной информации о том, как использовать Системные объекты, смотрите то, Что Системные объекты? MATLAB

 Просмотрите пример кода

2. Создайте цикл аудиопотока

Аудио процессов цикла аудиопотока итеративно. Это делает так:

  • Чтение кадра звукового сигнала

  • Обработка того кадра звукового сигнала

  • Запись, что кадр звукового сигнала к устройству или файлу

  • Перемещение в следующий кадр

В этом примере вход к циклу аудиопотока читается из файла. Вывод записан в устройство.

Чтобы считать покадровый звуковой файл, вызовите свой dsp.AudioFileReader в вашем цикле аудиопотока и не обеспечьте аргументы. Чтобы записать покадровый звуковой сигнал, вызовите свой audioDeviceWriter в вашем цикле аудиопотока со звуковым сигналом в качестве аргумента.

 Просмотрите пример кода

Все Системные объекты имеют функцию release. Как лучшая практика, выпустите свои Системные объекты после использования, особенно если те Системные объекты связываются с аппаратными устройствами, такими как звуковые карты.

3. Добавьте осциллографы

Существует несколько осциллографов, доступных пользователю Audio Toolbox. Двумя общими осциллографами является dsp.TimeScope и dsp.SpectrumAnalyzer. Этот пример использует Системный объект dsp.TimeScope, чтобы визуализировать звуковой сигнал.

Системный объект dsp.TimeScope отображает звуковой сигнал во временном интервале. Создайте Системный объект. Чтобы помочь визуализации, задайте значения для TimeSpan, BufferLength и свойств YLimits. Чтобы визуализировать покадровый звуковой сигнал, вызовите Системный объект dsp.TimeScope в своем цикле аудиопотока со звуковым сигналом в качестве аргумента.

 Просмотрите пример кода

4. Разработайте алгоритм обработки

В большинстве приложений вы хотите обработать свой звуковой сигнал в вашем цикле аудиопотока. Этап обработки может быть:

  • Блок кода MATLAB в вашем цикле аудиопотока

  • Отдельная функция вызвана в вашем цикле аудиопотока

  • Системный объект называется в вашем цикле аудиопотока

В этом примере вы вызываете Системный объект reverberator, чтобы обработать сигнал в вашем цикле аудиопотока.

Создайте Системный объект reverberator и задайте свойство SampleRate как частоту дискретизации вашего входного Системного объекта. Чтобы настроить эффект реверберации, задайте значения для свойств PreDelay и WetDryMix. Чтобы применить эффект реверберации к покадровому звуковому сигналу, вызовите Системный объект reverberator в своем цикле аудиопотока со звуковым сигналом в качестве аргумента.

 Просмотрите пример кода

Добавьте приспособляемость

У пользователя Audio Toolbox есть несколько опций, чтобы добавить приспособляемость в реальном времени в алгоритм обработки. Чтобы добавить приспособляемость в ваш цикл аудиопотока, можно использовать:

  • Audio Test Bench – основанные на пользовательском интерфейсе упражнения для классов audioPlugin и большинства Системных объектов Audio Toolbox.

  • Встроенные функции – Функции в Audio Toolbox для визуализации ключевых аспектов ваших алгоритмов обработки.

  • Сделанный на заказ пользовательский интерфейс – Видит, что Параметр В реальном времени Настраивается для примера.

  • MIDI-контроллер – Много Системных объектов Audio Toolbox включают функции та поддержка средства управления MIDI. Можно использовать функцию configureMIDI в Системном объекте reverberator, чтобы синхронизировать свойства Системного объекта со средствами управления MIDI. Чтобы использовать средства управления MIDI с Системными объектами, которые не имеют функции configureMIDI, смотрите Интерфейс Поверхности Управления MIDI.

  • Пользовательский дейтаграммный протокол (UDP) – можно использовать UDP в MATLAB для передачи без установления соединения. Можно также использовать UDP, чтобы получить или передать дейтаграммы между средами. Возможные приложения включают средства MATLAB использования, чтобы настроить ваш алгоритм обработки аудиоданных при проигрывании и визуализации аудио в сторонней среде. Для примера приложения коммуникации UDP смотрите, Связываются Между DAW и MATLAB Используя UDP.

Примеры быстрого запуска

 Аудиопоток с устройства на устройство

 Аудиопоток от устройства до файла

 Аудиопоток с файла на устройство

Похожие темы