Подходит ли Raspberry PI 2 B для звуковых эффектов в реальном времени?

8

Я собираюсь начать работу над проектом, который включает обработку звука в реальном времени для приложения звуковых эффектов. Приложение должно получать и обрабатывать аудио из 8 отдельных аудиовходов с частотой дискретизации 48 кГц. Алгоритм обработки аудио генерирует аудио для 8 отдельных каналов вывода звука. Формат аудиосэмпла - 16-битный подписанный LPCM. Так как это для приложения звуковых эффектов в реальном времени, задержка также важна. Если аудио передается от входа к выходу без какой-либо обработки, задержка при передаче туда и обратно не должна превышать 12 мс.

Приложение должно получать 256 * 8 входных выборок каждые 5,33 мс (через звуковой обратный вызов), обрабатывать эти выборки и передавать 256 * 8 выходных выборок (также через обратный вызов). 256 * 8 семплов принимаются / отправляются в некоем «чередующемся» формате.

В настоящее время я изучаю различные аппаратные платформы, и мне было интересно, может ли Raspberry PI 2 B быть подходящим выбором. Кажется, что сама плата обладает большой мощностью (900 МГц Quad Core ARM CPU), но имеет только аудиовход. Итак, мои вопросы:

  1. Подходит ли Raspberry PI 2 B для обработки звука в реальном времени?
  2. Если ответ « - «да», то я хотел бы знать, есть ли на рынке какие-либо дополнительные аудиоплаты для Raspberry PI 2 B с 8 входными каналами и 8 выходными каналами? Плата должна поддерживать частоту дискретизации 48 кГц.
  3. Если ответ на 1 или [2] - нет, какую платформу HW вы бы порекомендовали?

Причиной, по которой я смотрю на Raspberry PI 2 B, является привлекательная цена, но на рынке могут быть и другие типы плат, которые больше подходят для такого применения.

Блок-схема

user1884325
источник
«задержка прохождения сигнала в оба конца не должна превышать 12 мс»«выборки каждые 5,33 мс» Вы уверены, что это возможно даже на ПК? Проблема не в вычислительной мощности, а в том, что это делается полностью в пользовательском программном обеспечении в операционной системе не в реальном времени . Я думаю, что задержка будет намного больше, чем 12 мс. Если вы не уверены в этом вопросе, то ответ, вероятно, нет, и нет никаких альтернатив среди SBC общего назначения. Однако, если вы точно знаете, что это можно сделать с помощью ПК, тогда есть шанс.
Златовласка

Ответы:

4

Короткий ответ - да, нет и зависит, длинный ответ, вероятно, нет, но может быть и да, в зависимости от вашего подхода. Как аппаратное обеспечение, Pi довольно быстр и, вероятно, может достаточно быстро справляться с переносом данных с ввода на вывод. Однако стандартная настройка raspian linux не является платформой реального времени. Более того, вы не указали, какой DSP вы хотите делать. Еще в те времена, когда я учился в университете, во времена 386-х и Windows 3.1, если вы хотели заниматься серьезной обработкой звука, вам нужен был внешний DSP-чип, чтобы все это работало.

Если бы это работало на Пи, у вас есть несколько вариантов. Первый вариант, вероятно, лучший способ сделать это, был бы в аппаратном обеспечении, используя прерывания, и отдельный модуль DSP. Я не уверен, что там, но стоит учесть, что в основном Pi взаимодействует с USB и имеет ограничения пропускной способности, так что в любом случае вам может не повезти. Во-вторых, попробуйте кодировать его как модуль ядра и посмотрите, какую пропускную способность / вычислительную мощность вы можете получить от Pi, Linux в режиме пользователя не работает в режиме реального времени, и хотя это будет полезным доказательством концепции (выполнение этого в пользовательском режиме с высокий приоритет процесса) вам может понадобиться войти в ядро, чтобы выжать из него больше скорости. Наконец, ядро ​​linux, даже в его урезанной версии pi, делает много вещей, вам не нужно простое устройство DSP. Я думаю, что где-то видел ядро, которое превратило бы ваш компьютер в сетевой маршрутизатор. Что-то базовое - это все, что вам нужно, но вам придется немного поработать, взломав ядро ​​C.

Если вы хотите подвести суммы и попытаться все это решить, вам нужно написать ассемблер для того, что ваш процессор будет делать с данными, и определить, сколько инструкций процесса потребуется для загрузки данных, измените их. и выписать его, и посмотреть, не превысит ли это значение, умноженное на 48k * 2, 900 М, а если нет, то на какой запас (все остальное, что делает устройство) должно работать с таким запасом, поэтому я предлагаю вам минимизировать это, потеряв нормальные вещи ядра). Я думаю, что весьма вероятно, что это не будет работать, но это действительно зависит от того, какую обработку вы хотите сделать. Вы можете скомпилировать свое собственное ядро, в котором ничего нет, кроме вашего собственного модуля ядра, и вам достаточно места. Вам придется попробовать и посмотреть.

sibaz
источник
Не уверен, что вы пытаетесь сделать (путем обработки), но взгляните на st.com/web/en/catalog/sense_power/FM125/CL935/SC534/PF185827, который, кажется, имеет интерфейс контроллера SPI, поэтому может отлично вписывается в Pi и onsemi.com/PowerSolutions/product.do?id=BELASIGNA%20200
Сибаз