From Audio Device

Считайте аудиоданные из аудио устройства компьютера

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

Примечание

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

Библиотека

Источники

dspsrcs4

Описание

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

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

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

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

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

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

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

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

Область значений поддерживаемых частот дискретизации аудио устройства и форматов типа данных, зависьте и от звуковой карты и от 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 для получения дополнительной информации.

Буферизация

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

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

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

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

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

size=2журнал2sr10

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

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

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

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

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

  • Канал Аудио устройства 2 к каналу First Data

  • Канал Аудио устройства 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 и должен предоставить уровни, достаточные для обработки аудиоданных в реальном времени.

Другие способы улучшить уровни пропускной способности включают упрощение модели и выполнение симуляции на более быстром процессоре PC. Для других идей улучшать производительность симуляции, смотрите Задержку и Задержку и Оптимизируйте Производительность (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%

Аудио аппаратный API

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

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

  • Linux®: OSS, ALSA

  • Mac: CoreAudio

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

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

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

  • 1 — DirectSound

  • 3 — ASIO

  • 7 — OSS

  • 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
dsp.AudioRecorderСистемный объект

Представленный в R2007b