Я собираюсь начать работу над проектом, который включает обработку звука в реальном времени для приложения звуковых эффектов. Приложение должно получать и обрабатывать аудио из 8 отдельных аудиовходов с частотой дискретизации 48 кГц. Алгоритм обработки аудио генерирует аудио для 8 отдельных каналов вывода звука. Формат аудиосэмпла - 16-битный подписанный LPCM. Так как это для приложения звуковых эффектов в реальном времени, задержка также важна. Если аудио передается от входа к выходу без какой-либо обработки, задержка при передаче туда и обратно не должна превышать 12 мс.
Приложение должно получать 256 * 8 входных выборок каждые 5,33 мс (через звуковой обратный вызов), обрабатывать эти выборки и передавать 256 * 8 выходных выборок (также через обратный вызов). 256 * 8 семплов принимаются / отправляются в некоем «чередующемся» формате.
В настоящее время я изучаю различные аппаратные платформы, и мне было интересно, может ли Raspberry PI 2 B быть подходящим выбором. Кажется, что сама плата обладает большой мощностью (900 МГц Quad Core ARM CPU), но имеет только аудиовход. Итак, мои вопросы:
- Подходит ли Raspberry PI 2 B для обработки звука в реальном времени?
- Если ответ « 1» - «да», то я хотел бы знать, есть ли на рынке какие-либо дополнительные аудиоплаты для Raspberry PI 2 B с 8 входными каналами и 8 выходными каналами? Плата должна поддерживать частоту дискретизации 48 кГц.
- Если ответ на 1 или [2] - нет, какую платформу HW вы бы порекомендовали?
Причиной, по которой я смотрю на Raspberry PI 2 B, является привлекательная цена, но на рынке могут быть и другие типы плат, которые больше подходят для такого применения.
Ответы:
Короткий ответ - да, нет и зависит, длинный ответ, вероятно, нет, но может быть и да, в зависимости от вашего подхода. Как аппаратное обеспечение, Pi довольно быстр и, вероятно, может достаточно быстро справляться с переносом данных с ввода на вывод. Однако стандартная настройка raspian linux не является платформой реального времени. Более того, вы не указали, какой DSP вы хотите делать. Еще в те времена, когда я учился в университете, во времена 386-х и Windows 3.1, если вы хотели заниматься серьезной обработкой звука, вам нужен был внешний DSP-чип, чтобы все это работало.
Если бы это работало на Пи, у вас есть несколько вариантов. Первый вариант, вероятно, лучший способ сделать это, был бы в аппаратном обеспечении, используя прерывания, и отдельный модуль DSP. Я не уверен, что там, но стоит учесть, что в основном Pi взаимодействует с USB и имеет ограничения пропускной способности, так что в любом случае вам может не повезти. Во-вторых, попробуйте кодировать его как модуль ядра и посмотрите, какую пропускную способность / вычислительную мощность вы можете получить от Pi, Linux в режиме пользователя не работает в режиме реального времени, и хотя это будет полезным доказательством концепции (выполнение этого в пользовательском режиме с высокий приоритет процесса) вам может понадобиться войти в ядро, чтобы выжать из него больше скорости. Наконец, ядро linux, даже в его урезанной версии pi, делает много вещей, вам не нужно простое устройство DSP. Я думаю, что где-то видел ядро, которое превратило бы ваш компьютер в сетевой маршрутизатор. Что-то базовое - это все, что вам нужно, но вам придется немного поработать, взломав ядро C.
Если вы хотите подвести суммы и попытаться все это решить, вам нужно написать ассемблер для того, что ваш процессор будет делать с данными, и определить, сколько инструкций процесса потребуется для загрузки данных, измените их. и выписать его, и посмотреть, не превысит ли это значение, умноженное на 48k * 2, 900 М, а если нет, то на какой запас (все остальное, что делает устройство) должно работать с таким запасом, поэтому я предлагаю вам минимизировать это, потеряв нормальные вещи ядра). Я думаю, что весьма вероятно, что это не будет работать, но это действительно зависит от того, какую обработку вы хотите сделать. Вы можете скомпилировать свое собственное ядро, в котором ничего нет, кроме вашего собственного модуля ядра, и вам достаточно места. Вам придется попробовать и посмотреть.
источник