Считайте аудиоданные из аудио устройства компьютера
Блок 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
для получения дополнительной информации.
От буферов блоков Аудио устройства данные из аудио устройства с помощью процесса проиллюстрированы следующей фигурой.
В начале симуляции аудио устройство начинает запись входные данные к буферу. Этим данным задал тип данных параметр Device data type.
Когда буфер полон, блок From Audio Device пишет содержимое буфера очереди. Задайте размер этой очереди, использующей параметр Queue duration (seconds).
Когда аудио устройство добавляет аудиоданные к нижней части очереди, блок From Audio Device вытягивает данные из верхней части очереди, чтобы заполнить систему координат Simulink. Этим данным задал тип данных параметр Output data type.
Установите флажок Automatically determine buffer size, чтобы позволить блоку вычислять консервативный buffer size с помощью следующего уравнения:
В этом уравнении 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).
Чтобы запустить ваше сгенерированное приложение независимого исполняемого файла в Shell, необходимо установить среду на следующее:
Платформа | Команда |
---|---|
Mac |
|
Linux |
|
Windows |
|
Для того, чтобы связаться с аудио оборудованием на данном компьютере, К Аудио устройству и От блоков Аудио устройства пользуются библиотекой 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')
1 — DirectSound
3 — ASIO
7 — OSS
8 — ALSA
11 — WDM-KS
Чтобы выбрать конкретный API, введите следующую команду в командной строке MATLAB.
setpref('dsp','portaudioHostApi',N)
Задайте устройство, от которого можно получить аудиоданные.
Установите этот флажок, чтобы иметь отображение по умолчанию, куда данные из первого канала аудио устройства отправляются в первый канал входных данных, данные из второго канала аудио устройства отправляются во второй канал данных и так далее. Максимальное количество каналов во входных данных определяется свойством Number of channels.
Задайте количество звуковых каналов. Этот параметр отображается, когда флажок Use default mapping between Device Input Channels and Data включен.
Задайте отображение канала. Этот параметр отображается, когда флажок Use default mapping between Device Input Channels and Data отключен.
Задайте количество выборок в секунду в сигнале.
Задайте тип данных, используемый устройством, чтобы получить аудиоданные.
Установите этот флажок, чтобы позволить блоку использовать консервативный buffer size.
Задайте размер буфера что использование блока, чтобы связаться с аудио устройством. Этот параметр отображается, когда флажок Automatically determine buffer size снимается.
Задайте размер очереди в секундах.
Установите этот флажок, чтобы вывести количество выборок, потерянных очереди, превышенной начиная с последней передачи системы координат от аудио устройства. Можно использовать это значение, чтобы отладить проблемы пропускной способности и настроить очереди и буферы в модели. Чтобы изучить, как улучшить пропускную способность, смотрите Поиск и устранение проблем.
Задайте количество выборок в выходном сигнале блока.
Выберите тип данных выхода блока.
Порт | Поддерживаемые типы данных |
---|---|
Вывод |
|
Превышенный | 32-битное беззнаковое целое |
From Multimedia File | DSP System Toolbox |
To Audio Device | DSP System Toolbox |
audiorecorder | MATLAB |
dsp.AudioRecorder | Системный объект |