exponenta event banner

Из аудиоустройства

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

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

Примечание

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

  • From Audio Device block

Библиотека

Источники

dspsrcs4

Описание

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

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

Параметр Number of channel используется для указания количества звуковых каналов в сигнале. Например:

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

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

  • Войти 6 при работе с системой динамиков 5.1.

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

Параметр Sample rate (Hz) используется для указания количества выборок в секунду в сигнале. Если аудиоданные обрабатываются в формате несжатой импульсно-кодовой модуляции (ИКМ), их обычно следует дискретизировать с одной из стандартных скоростей аудиоустройства: 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 Audio Device буферизирует данные из аудиоустройства, используя процесс, показанный на следующем рисунке.

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

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

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

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

size=2log2sr10 

В этом уравнении размер - размер буфера, а sr - частота дискретизации. Если этот флажок снят, в блоке появится параметр Размер буфера (пробы). Этот параметр используется для указания размера буфера в выборках.

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

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

Термин «отображение каналов» относится к отображению 1 к 1, которое связывает каналы на выбранном аудиоустройстве с каналами данных. При записи звука отображение канала позволяет указать, какой канал аудиоданных направляет вход в конкретный канал звука. Отображение каналов можно задать как вектор индексов звуковых каналов, соответствующих каждому каналу считываемых данных. Значение по умолчанию в параметре «Каналы ввода устройства» равно 1:MAXINPUTCHANNELS. Если сопоставление по умолчанию не выбрано, необходимо указать параметр «Каналы ввода устройства» в диалоговом окне.

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

  • Канал аудиоустройства 2 - первый канал передачи данных

  • Канал аудиоустройства 4 - второй канал передачи данных

  • Канал аудиоустройства 6 - третий канал передачи данных

Таким образом, можно указать каналы ввода данных устройства как [2 4 6].

Поиск неисправностей

Не успевать в реальном времени

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

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

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

  • Увеличьте размер буфера.

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

API звукового оборудования

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

  • 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 выше.

Параметры

Устройство

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

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

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

Количество каналов

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

Входные каналы устройства

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

Частота дискретизации (Гц)

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

Тип данных устройства

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

Автоматически определять размер буфера

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

Размер буфера (выборки)

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

Продолжительность очереди (в секундах)

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

Количество выходных выборок, на которое была переполнена очередь

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

Размер кадра (образцы)

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

Тип выходных данных

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

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

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

Продукция

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

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

  • 32-разрядные целые числа со знаком

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

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

Наводненный

32-разрядное целое число без знака

См. также

Из мультимедийного файлаИнструментарий системы DSP
К аудиоустройствуИнструментарий системы DSP
audiorecorderMATLAB
Представлен в R2007b