Estou prestes a começar a trabalhar em um projeto que envolve processamento de áudio em tempo real para um aplicativo de efeitos de áudio. O aplicativo deve adquirir e processar áudio de 8 canais de entrada de áudio individuais a uma taxa de amostragem de 48kHz. O algoritmo de processamento de áudio gera áudio para 8 canais de saída de áudio individuais. O formato da amostra de áudio é um LPCM assinado de 16 bits. Como é para um aplicativo de efeitos de áudio em tempo real, a latência também é importante. Se o áudio for repetido da entrada para a saída sem nenhum processamento, a latência de ida e volta não deverá exceder 12ms.
O aplicativo deve receber amostras de entrada de 256 * 8 a cada 5,33 ms (via retorno de chamada de áudio), processar essas amostras e transmitir amostras de saída de 256 * 8 (também via retorno de chamada). As amostras 256 * 8 são recebidas / enviadas em algum tipo de formato "intercalado".
Atualmente, estou pesquisando diferentes plataformas de hardware e queria saber se o Raspberry PI 2 B poderia ser uma escolha adequada. A placa em si parece ter muita potência (CPU ARM Quad Core de 900 MHz), mas possui apenas entrada de áudio. Então, minhas perguntas são:
- O Raspberry PI 2 B é adequado para processamento de áudio em tempo real?
- Se a resposta a 1 for sim, gostaria de saber se existem placas de áudio adicionais para o Raspberry PI 2 B no mercado com 8 canais de entrada e 8 canais de saída? A placa deve suportar taxa de amostragem de 48kHz.
- Se a resposta para 1 ou [2] for negativa, qual plataforma de HW você recomendaria?
A razão pela qual estou vendo o Raspberry PI 2 B é o preço atraente, mas pode haver outros tipos de placas no mercado mais adequadas para esse tipo de aplicação.
Respostas:
A resposta curta é sim, não e depende, a resposta longa provavelmente é não, mas pode ser sim, dependendo da sua abordagem. Como uma peça de hardware, o Pi é bastante rápido e provavelmente pode lidar com a mudança de dados da entrada para a saída razoavelmente rapidamente. No entanto, a configuração padrão, do raspian linux, não é uma plataforma em tempo real. Além disso, você não especificou o DSP que deseja fazer. Quando eu estava na universidade, nos dias 386 e Windows 3.1, se você queria fazer um processamento sério de som, precisava de um chip DSP externo para poder fazer tudo funcionar.
Se isso funcionasse no Pi, você tem algumas opções. A primeira opção, provavelmente a melhor maneira de fazê-lo, seria no hardware, usando interrupções, e um módulo DSP separado. Não tenho certeza do que está por aí, mas vale a pena considerar que a maioria do Pi faz interface com USB e que possui limitações de largura de banda; portanto, você pode não ter sorte. Em segundo lugar, tente codificá-lo como um módulo do kernel e veja que tipo de taxa de transferência / poder de processamento você pode obter do Pi, o linux do modo de usuário não é em tempo real e, embora seja uma prova de conceito útil (fazê-lo no modo de usuário com um alta prioridade do processo), pode ser necessário entrar no kernel para extrair mais velocidade dele. Finalmente, o kernel do linux, mesmo na versão pi reduzida, faz muitas coisas, você não precisa de um dispositivo DSP simples. Acho que vi um kernel por aí em algum lugar que transformaria seu PC em um roteador de rede. Algo tão básico é tudo o que você precisa, mas você terá que ficar tranquilo com alguns hackers do kernel C.
Se você deseja fazer as somas e tentar resolver tudo isso, é necessário gravar o assembler para o que o seu processador fará com os dados e determinar quantas instruções de processo serão necessárias para carregar os dados, altere-o escreva-o e veja se o valor multiplicado pelo 48k * 2 excederá 900M e, se não, por qual margem (tudo o que o dispositivo faz, tem que funcionar nessa margem, portanto, sugiro que você o minimize ao perder o material normal do kernel). Eu acho muito provável que não funcione, mas realmente depende do processamento que você deseja fazer. Você pode compilar seu próprio kernel sem nada, exceto seu próprio módulo de kernel, e ter espaço suficiente. Você terá que experimentar e ver.
fonte