Matlab audioread/audioplay в C/C++ через Coder

Я работаю над проектом Matlab, где добавляю эффекты к аудиофайлам (mp3, wav). Поэтому я загружаю файлы в массивы с помощью функции matlab audioread(..).

Теперь я хочу экспортировать это на Android. Я читал, что лучше всего использовать Matlab Coder для экспорта кода Matlab в C/C++ (или Java), а затем экспортировать его в Android (более или менее).

Однако вызов функции audioplayer (и воспроизведение) не поддерживается (об этом говорят проблемы с готовностью к генерации кода).

Что я могу сделать ? Одна из идей заключалась в том, чтобы воспроизводить звуки напрямую с помощью кода C++ (то есть после генерации кода). Но как воспроизводить звуки из массивов с помощью С++?

Или, если у вас, ребята, есть другие идеи, не касаясь кода C++ (чтобы решить проблему непосредственно в Matlab), я был бы рад это услышать!

Спасибо и хорошего дня !


person Xema    schedule 24.04.2015    source источник


Ответы (2)


Как правило, в таких случаях я рекомендую разделить код на две части:

  1. Часть, которая выполняет ввод-вывод аудиофайла и воспроизведение звука (а именно часть, специфичная для ОС)
  2. Вычислительное ядро, для которого вы будете генерировать код с помощью MATLAB Coder. Эта часть обычно принимает в качестве аргументов числовые массивы, представляющие изображение или аудиоданные.

Я использовал этот подход, чтобы использовать сгенерированный MATLAB Coder код для фильтрации изображений на Android.

Чтобы выполнить часть (1), как говорит Наван, вам нужно будет использовать Android API для чтения аудиофайлов, записи данных обратно в файлы и воспроизведения их по желанию. Обратите внимание: я не занимался обширной разработкой Android, поэтому выполнение этих задач может потребовать некоторых исследований или быть сложным.

Когда у вас есть данные в формате, подходящем для функции (функций) в (2), вероятно, в виде числового массива, вы можете вызвать сгенерированный код с помощью JNI, чтобы добавить желаемые эффекты. Сгенерированный код вернет данные обратно в код Java, и вы сможете затем кодировать их, воспроизводить или делать с ними все, что угодно, используя API Android.

person Ryan Livingston    schedule 24.04.2015
comment
Действительно, потенциально сложная часть состоит в том, чтобы увидеть, как читать/воспроизводить аудиофайлы из/в массивы. Я постараюсь разобраться. - person Xema; 25.04.2015

Воспроизведение аудио обычно использует библиотеки, зависящие от платформы. В наборе инструментов DSP System есть объект аудиоплеера с именем dsp.AudioPlayer, который поддерживает генерацию кода C. Но я считаю, что в сгенерированном коде используются библиотеки, зависящие от платформы, и будет непросто заставить его работать в Android. Вам будет лучше найти библиотеку аудиоплеера для Android и подключить ее вручную после генерации кода.

person Navan    schedule 24.04.2015
comment
Спасибо за ваш ответ, я так и думал, мне нужно выяснить, можно ли воспроизводить/читать аудиофайлы из/в массив в Android. - person Xema; 25.04.2015