From Audio Device

Чтение аудио данных с аудио устройством компьютера

Совместимость

Примечание

Блок From Audio Device будет удален в следующем релизе. Существующие образцы блока продолжают запускаться. Для новых моделей используйте вместо этого блок Audio Device Reader из Audio Toolbox™.

  • From Audio Device block

Библиотека

Источники

dspsrcs4

Описание

Блок From Аудио устройства читает аудио данных с аудио устройством в режиме реального времени. Этот блок не поддерживается для использования с Simulink® Моделируйте блок.

Используйте параметр Device, чтобы задать устройство, с которого можно получить аудио. Этот параметр заполняется автоматически на основе аудио устройств, установленной в вашей системе. Если вы подключите или отсоедините аудио устройство от системы, введите clear mex в MATLAB® командная строка для обновления этого списка.

Используйте параметр Number of channels, чтобы задать количество аудиоканалов в сигнале. Для примера:

  • Введите 2 если источником звука являются два канала (стерео).

  • Введите 1 если источник звука является одним каналом (mono).

  • Введите 6 если вы работаете с акустической системой 5.1.

Выходы блока являются M -by - N матрицей, где M - количество последовательных выборок, а N - количество аудиоканалов.

Используйте параметр Sample rate (Hz), чтобы задать количество выборок в секунду в сигнале. Если аудио данных обрабатывается в формате несжатого импульсного кода модуляции (PCM), его обычно следует дискретизировать с одной из стандартных частот аудио устройства: 8000, 11025, 22050, 44100 или 48000 Гц.

Область значений поддерживаемых частот аудио устройств выборки и форматов типов данных зависят как от звуковой платы, так и от API, выбранного для звуковой карты.

Используйте параметр Device data type, чтобы задать тип данных аудиоданных, которые устройство помещает в буфер. Вы можете выбрать:

  • 8-bit integer

  • 16-bit integer

  • 24-bit integer

  • 32-bit float

  • Determine from output data type

Если вы выбираете Determine from output data type, следующая таблица суммирует поведение блока.

Выход данныхТип данных устройства
Плавающая точка двойной точности или одинарная точность с плавающей точкой32-битная плавающая точка
32-битное целое число24-битное целое число
16-битное целое число16-битное целое число
8-битное целое число8-битное целое число

Если вы выбираете Determine from output data type и устройство не поддерживает тип данных, блок использует следующий тип данных самой низкой точности, поддерживаемый устройством.

Используйте параметр Frame size (samples), чтобы задать количество выборок в выходе блока. Используйте параметр Output data type, чтобы задать тип данных аудиоданных, выводимых блоком.

Сгенерированный код для этого блока полагается на предварительно созданные файлы .dll. Вы можете запустить этот код вне окружения MATLAB или перенаправить его, но обязательно учтите эти дополнительные файлы .dll при этом. Функция packNGo создает одну zip- файла, содержащую все части, необходимые для выполнения или перестроения этого кода. Посмотрите packNGo (Simulink Coder) для получения дополнительной информации.

Буферизование

Блок From Аудио устройства буферизует данные из аудио устройства, используя процесс, проиллюстрированный следующим рисунком.

  1. В начале симуляции аудио устройства начинает запись входных данных в буфер. Эти данные имеют тип данных, заданный параметром Device data type.

  2. Когда буфер заполнен, блок From Audio Device записывает содержимое буфера в очередь. Задайте размер этой очереди, используя параметр Queue duration (seconds).

  3. Когда аудио устройство добавляет аудиоданные в нижнюю часть очереди, блок From Аудио устройства вытаскивает данные из верхней части очереди, чтобы заполнить систему координат Simulink. Эти данные имеют тип данных, заданный параметром Output data type.

Установите флажок Automatically determine buffer size, чтобы позволить блоку вычислить консервативный buffer size с помощью следующего уравнения:

size=2log2sr10

В этом уравнении size является buffer size, и sr является частотой дискретизации. Если снять этот флажок, на блоке появится параметр Buffer size (samples). Используйте этот параметр, чтобы задать buffer size в выборках.

Когда пропускная способность симуляции ниже, чем оборудование пропускная способность, очередь, которая первоначально пуста, заполняется. Если очередь заполнена, блок отбрасывает входящие данные из аудио устройства. Вы можете контролировать отброшенные выборки с помощью дополнительного Overrun выходной порт. Когда пропускная способность симуляции выше, чем оборудования пропускная способность, блок From Аудио устройства ждет, пока новые выборки станут доступными.

Отображение каналов

Термин Channel Mapping относится к отображению 1 к 1, которое связывает каналы на выбранном аудио устройстве с каналами данных. Когда вы записываете аудио, отображение канала позволяет вам задать, какой канал аудио данных направляет вход в определенный канал аудио. Можно задать отображение канала как вектор индексов аудиоканала, соответствующих каждому считываемому каналу данных. Значение по умолчанию в параметре Device Input Channels является 1:MAXINPUTCHANNELS. Если вы не выбираете отображение по умолчанию, необходимо задать параметр Device Input Channels в диалоговом окне.

Пример: Выбранный вход аудио устройства содержит 8 каналов. Вы хотите считать данные только из каналов 2, 4, 6 и перенаправить данные следующим образом:

  • Аудио устройство канал 2 к первому каналу данных

  • Аудио устройство канал 4 ко второму каналу данных

  • Аудио устройство канал 6 к третьему каналу данных

Таким образом, вы задаете Device Input Channels как [2 4 6].

Поиск и устранение проблем

Не идти в ногу в реальном времени

Когда Simulink не может идти в ногу с аудио устройством, которая работает в реальном времени, очередь заполняется, и блок начинает терять аудио данных. Установите флажок Output number of samples by which the queue was overrun, чтобы добавить порт выхода, указывающий, когда очередь была заполнена. Вот несколько способов справиться с этой ситуацией:

  • Увеличьте длительность очереди.

    Параметр Queue duration (seconds) задает длительность сигнала, в секундах, который может быть буферизован во время симуляции. Это - максимальный промежуток времени, в течение которого потребность блока в данных может отставать от оборудования источника данных.

  • Увеличьте buffer size.

    Размер буфера, обработанного в каждом прерывании из аудио устройства, влияет на эффективность вашей модели. Если буфер слишком мал, для записи данных в очередь используется большой фрагмент оборудования ресурсов. Если буфер слишком велик, Simulink должен дождаться, пока устройство заполнит буфер, прежде чем оно переместит данные в очередь, что вводит задержку.

  • Увеличьте пропускную способность симуляции.

    Двумя полезными методами для улучшения пропускной способности симуляции являются увеличение формата кадра сигнала и компиляция симуляции в нативный код:

    • Увеличьте форматы кадра и преобразуйте основанные на дискретизации сигналы в основанные на кадрах сигналы на протяжении всей модели, чтобы уменьшить количество служебных данных связи между блоками. Это может увеличить пропускную способность во многих случаях. Однако большие форматы кадра обычно приводят к большей задержке модели из-за начальных операций буферизации.

    • Сгенерируйте исполняемый код с помощью программного обеспечения Simulink Coder™ генерации кода. Собственный код работает намного быстрее, чем Simulink, и должен обеспечивать скорости, адекватные для обработки звука в реальном времени.

Другие способы улучшить пропускную способность включают упрощение модели и выполнение симуляции на более быстром процессоре ПК. Для других идей улучшить производительность симуляции, посмотрите Задержку и Время ожидания и Оптимизируйте Эффективность (Simulink).

Выполнение исполняемого файла за пределами MATLAB

Чтобы запустить сгенерированное автономное исполняемое приложение в Shell, необходимо задать следующее окружение:

ПлатформаКоманда
Mac

setenv DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maci64 (csh/tcsh)

export DYLD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/maci64 (Bash)

Linux

setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/glnxa64 (csh/tcsh)

export LD_LIBRARY_PATH $LD_LIBRARY_PATH: $MATLABROOT/bin/glnxa64 (Bash)

Windows

set PATH = $MATLABROOT\bin\win64;%PATH%

Audio Hardware API

В порядок связи с аудиооборудованием на данном компьютере блоки To Аудио устройства и From Аудио устройства используют библиотеку PortAudio с открытым исходным кодом. Библиотека PortAudio поддерживает область значений API, предназначенных для связи с аудио оборудованием на данной платформе. При создании библиотеки PortAudio для продукта DSP System Toolbox™ были сделаны следующие варианты API:

  • Windows®: DirectSound, WDM - KS, ASIO™

  • Linux®: OSS, ALSA

  • Mac: CoreAudio

Для Windows по умолчанию является DirectSound, для Linux - ALSA, а для Mac есть только один выбор.

Чтобы определить выбранный на данный момент audio hardware API, введите следующую команду в командной строке MATLAB.

getpref('dsp','portaudioHostApi')   
Выходы являются скаляром, указывающим на выбор API.

  • 1 - DirectSound

  • 3 - ASIO

  • 7 - ОСС

  • 8 - ALSA

  • 11 - WDM-KS

Чтобы выбрать конкретный API, введите следующую команду в командной строке MATLAB.

setpref('dsp','portaudioHostApi',N)   
где N - скаляр. Выберите N на основе выбора API выше.

Параметры

Device

Укажите устройство, с которого можно получить аудио данных.

Use default mapping between Device Input Channels and Data

Установите этот флажок, чтобы иметь сопоставление по умолчанию, где данные из первого канала аудио устройства передаются в первый канал входных данных, данные из второго канала аудио устройства передаются во второй канал данных и так далее. Максимальное количество каналов во входных данных определяется свойством Number of channels.

Number of channels

Укажите количество аудиоканалов. Этот параметр видим, когда включен флажок Use default mapping between Device Input Channels and Data.

Device Input Channels

Задайте отображение канала. Этот параметр видим, когда флажок Use default mapping between Device Input Channels and Data отключен.

Sample rate (Hz)

Задайте количество выборок в секунду в сигнале.

Device data type

Укажите тип данных, используемых устройством для получения аудиоданных.

Automatically determine buffer size

Установите этот флажок, чтобы блок мог использовать консервативный buffer size.

Buffer size (samples)

Задайте размер буфера, который блок использует для связи с аудио устройством. Этот параметр видим, когда флажок Automatically determine buffer size снят.

Queue duration (seconds)

Задайте размер очереди в секундах.

Output number of samples by which the queue was overrun

Установите этот флажок, чтобы отобразить количество выборок, потерянных в очереди с момента последней передачи системы координат из аудио устройства. Вы можете использовать это значение для отладки проблем с пропускной способностью и настройки очередей и буферов в вашей модели. Чтобы узнать, как улучшить пропускную способность, смотрите Поиск и устранение проблем.

Frame size (samples)

Задайте количество выборок в выходном сигнале блока.

Output data type

Выберите тип данных выхода блока.

Поддерживаемые типы данных

ПортПоддерживаемые типы данных

Выход

  • Плавающая точка двойной точности

  • Плавающая точка с одной точностью

  • 32-битные целые числа со знаком

  • 16-битные целые числа со знаком

  • 8-битные беззнаковые целые числа

Наводненный

32-битное беззнаковое целое число

См. также

From Multimedia FileDSP System Toolbox
To Audio DeviceDSP System Toolbox
audiorecorderMATLAB
Введенный в R2007b