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

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

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

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

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

Это руководство создаёт испытательный стенд разработки в четыре этапа:

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

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

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

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

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

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

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

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

Цикл аудиопотока может считываться с устройства или файла, и может записываться на устройство или файл. В этом примере вы создаете цикл аудиопотока, который считывает аудиокадр за кадром из файла и записывает аудиокадр за кадром в устройство. Альтернативные входные/выходные строения см. в примерах Quick Start.

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

Далее создайте audioDeviceWriter Системный объект и укажите его частоту дискретизации как частоту дискретизации средства чтения файлов.

Дополнительные сведения о том, как использовать системные объекты, см. в разделе Что такое системные объекты?

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

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

Цикл аудиопотока обрабатывает аудио итеративно. Она делает это следующим образом:

  • Чтение системы координат аудиосигнала

  • Обработка этой системы координат аудиосигнала

  • Запись этой системы координат аудиосигнала в устройство или файл

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

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

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

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

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

3. Добавление возможностей

Доступно несколько возможности. Двумя общими возможностями являются timescope и dsp.SpectrumAnalyzer. В этом руководстве используются timescope для визуализации аудиосигнала.

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

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

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

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

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

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

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

В этом руководстве вы вызываете reverberator для обработки сигнала в цикле аудиопотока.

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

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

Добавление настраиваемости

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

  • The Audio Test Bench - упражнения на основе пользовательского интерфейса для audioPlugin классы и большинство объектов Audio Toolbox System.

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

  • Пользовательский интерфейс - Смотрите Настройку Параметра в реальном времени для руководства.

  • MIDI Controller - Многие объекты Audio Toolbox System включают функции, поддерживающие элементы управления MIDI. Можно использовать configureMIDI функция в reverberator Системный объект для синхронизации свойств системного объекта с элементами управления MIDI. Использование элементов управления MIDI с системными объектами, не имеющими configureMIDI функция, см. MIDI Control Surface Interface.

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

Примеры быстрого старта

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

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

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

Похожие темы