Чтение аудио данных с аудио устройством компьютера
Примечание
Блок From Audio Device будет удален в следующем релизе. Существующие образцы блока продолжают запускаться. Для новых моделей используйте вместо этого блок Audio Device Reader из Audio Toolbox™.
Источники
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 Аудио устройства буферизует данные из аудио устройства, используя процесс, проиллюстрированный следующим рисунком.
В начале симуляции аудио устройства начинает запись входных данных в буфер. Эти данные имеют тип данных, заданный параметром Device data type.
Когда буфер заполнен, блок From Audio Device записывает содержимое буфера в очередь. Задайте размер этой очереди, используя параметр Queue duration (seconds).
Когда аудио устройство добавляет аудиоданные в нижнюю часть очереди, блок From Аудио устройства вытаскивает данные из верхней части очереди, чтобы заполнить систему координат Simulink. Эти данные имеют тип данных, заданный параметром Output data type.
Установите флажок Automatically determine buffer size, чтобы позволить блоку вычислить консервативный buffer size с помощью следующего уравнения:
В этом уравнении 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).
Чтобы запустить сгенерированное автономное исполняемое приложение в Shell, необходимо задать следующее окружение:
Платформа | Команда |
---|---|
Mac |
|
Linux |
|
Windows |
|
В порядок связи с аудиооборудованием на данном компьютере блоки 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')
1 - DirectSound
3 - ASIO
7 - ОСС
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 |