Apakah Raspberry PI 2 B cocok untuk aplikasi efek audio waktu nyata?

8

Saya akan mulai mengerjakan proyek yang melibatkan pemrosesan audio waktu nyata untuk aplikasi efek audio. Aplikasi ini seharusnya memperoleh dan memproses audio dari 8 saluran input audio individu pada tingkat sampel 48kHz. Algoritma pemrosesan audio menghasilkan audio untuk 8 saluran output audio individual. Format sampel audio adalah LPCM bertanda 16-bit. Karena ini untuk aplikasi efek audio waktu nyata, latensi juga penting. Jika audio diulang dari input ke output tanpa pemrosesan apa pun, latensi bolak-balik tidak boleh melebihi 12 ms.

Aplikasi harus menerima 256 * 8 input sampel setiap 5.33ms (melalui audio callback), memproses sampel tersebut dan mengirimkan 256 * 8 sampel output (juga melalui callback). 256 * 8 sampel diterima / dikirim dalam semacam format "interleaved".

Saat ini saya sedang meneliti platform perangkat keras yang berbeda dan saya bertanya-tanya apakah Raspberry PI 2 B bisa menjadi pilihan yang cocok. Papan itu sendiri tampaknya memiliki banyak tenaga kuda (900MHz Quad Core ARM CPU), tetapi hanya memiliki input audio. Jadi pertanyaan saya adalah:

  1. Apakah Raspberry PI 2 B cocok untuk pemrosesan audio waktu nyata?
  2. Jika jawaban 1 adalah ya, maka saya ingin tahu apakah ada papan audio tambahan untuk Raspberry PI 2 B di pasaran dengan 8 saluran input dan 8 saluran output? Dewan harus mendukung laju sampel 48kHz.
  3. Jika jawaban untuk 1 atau [2] tidak, platform HW mana yang akan Anda rekomendasikan?

Alasan mengapa saya melihat Raspberry PI 2 B adalah harga yang menarik, tetapi mungkin ada jenis papan lain di pasaran yang lebih cocok untuk aplikasi jenis ini.

Diagram blok

pengguna1884325
sumber
"latensi pulang pergi tidak boleh melebihi 12 ms" .... "sampel setiap 5,33 ms" Apakah Anda yakin ini bahkan layak dilakukan pada PC? Bukan kekuatan pemrosesan yang menjadi masalah, ia melakukan ini sepenuhnya dalam perangkat lunak userland pada sistem operasi non-realtime . Saya pikir latensi akan menjadi lebih dari 12ms. Jika Anda tidak yakin tentang pertanyaan itu, maka jawabannya mungkin tidak dan tidak ada alternatif di antara SBC tujuan umum. Namun, jika Anda tahu pasti itu bisa dilakukan dengan PC, maka ada kemungkinan.
goldilocks

Jawaban:

4

Jawaban singkatnya adalah ya, tidak, dan tergantung, jawaban panjangnya mungkin tidak, tetapi mungkin ya tergantung pada pendekatan Anda. Sebagai perangkat keras, Pi cukup cepat, dan mungkin dapat menangani pergeseran data dari input ke output dengan cukup cepat. Namun, pengaturan default, raspian linux, bukan platform waktu nyata. Terlebih lagi, Anda belum menentukan DSP apa yang ingin Anda lakukan. Kembali ketika saya masih di universitas, pada zaman 386 dan Windows 3.1, jika Anda ingin melakukan pemrosesan suara yang serius, Anda memerlukan chip DSP eksternal untuk dapat membuat semuanya berfungsi.

Jika ini bekerja pada Pi, Anda punya beberapa opsi. Opsi pertama, mungkin cara terbaik untuk melakukannya, akan di perangkat keras, menggunakan interupsi, dan modul DSP terpisah. Saya tidak yakin apa yang ada di luar sana, tetapi perlu mempertimbangkan bahwa sebagian besar antarmuka Pi dengan USB dan yang memiliki keterbatasan bandwidth, jadi Anda mungkin kurang beruntung. Kedua, coba kodekan sebagai modul kernel dan lihat jenis throughput / kekuatan pemrosesan yang bisa Anda dapatkan dari Pi, Mode pengguna linux tidak realtime, dan sementara itu akan menjadi bukti konsep yang berguna (melakukannya di usermode dengan prioritas proses tinggi) Anda mungkin perlu masuk ke kernel untuk memeras lebih cepat. Akhirnya kernel linux, bahkan dalam versi pi-nya, melakukan banyak hal, Anda tidak perlu untuk perangkat DSP sederhana. Saya pikir saya melihat kernel di luar sana yang akan mengubah PC Anda menjadi router jaringan. Sesuatu yang mendasar adalah yang Anda butuhkan, tetapi Anda harus turun dan kotor dengan beberapa peretasan kernel C.

Jika Anda ingin melakukan penjumlahan dan mencoba menyelesaikannya, Anda harus menulis assembler untuk apa pun yang akan dilakukan prosesor Anda dengan data, dan menghitung berapa banyak instruksi proses yang akan diperlukan untuk memuat data, ubah dan menuliskannya, dan melihat apakah itu dikalikan dengan 48k * 2 akan melebihi 900M, dan jika tidak, dengan margin apa (segala sesuatu yang dilakukan perangkat, harus berfungsi dalam margin itu, maka saya sarankan Anda meminimalkannya dengan kehilangan kernel normal). Saya pikir sangat mungkin itu tidak akan berhasil, tetapi itu benar-benar tergantung pada proses yang ingin Anda lakukan. Anda mungkin dapat mengkompilasi kernel Anda sendiri dengan tidak ada di dalamnya, kecuali modul kernel Anda sendiri, dan memiliki cukup ruang. Anda harus mencobanya dan melihatnya.

sibaz
sumber
Tidak yakin apa yang Anda coba lakukan (dengan cara memproses) tetapi lihatlah st.com/web/id/catalog/sense_power/FM125/CL935/SC534/PF185827 yang tampaknya memiliki antarmuka pengontrol SPI, jadi mungkin cocok dengan Pi dan onsemi.com/PowerSolutions/product.do?id=BELASIGNA%20200
sibaz