Raspberry PI 2 B có phù hợp với ứng dụng hiệu ứng âm thanh thời gian thực không?


8

Tôi sắp bắt đầu làm việc với một dự án liên quan đến xử lý âm thanh thời gian thực cho một ứng dụng hiệu ứng âm thanh. Ứng dụng này có nhiệm vụ thu nhận và xử lý âm thanh từ 8 kênh đầu vào âm thanh riêng lẻ với tốc độ mẫu là 48kHz. Thuật toán xử lý âm thanh tạo ra âm thanh cho 8 kênh đầu ra âm thanh riêng lẻ. Định dạng mẫu âm thanh là LPCM có chữ ký 16 bit. Vì nó là một ứng dụng hiệu ứng âm thanh thời gian thực, độ trễ cũng rất quan trọng. Nếu âm thanh được lặp từ đầu vào đến đầu ra mà không có bất kỳ xử lý nào, độ trễ của chuyến đi khứ hồi không được vượt quá 12ms.

Ứng dụng sẽ nhận được 256 * 8 mẫu đầu vào cứ sau 5,33ms (thông qua một cuộc gọi lại âm thanh), xử lý các mẫu đó và truyền các mẫu đầu ra 256 * 8 (cũng thông qua gọi lại). Các mẫu 256 * 8 được nhận / gửi theo một số loại định dạng "xen kẽ".

Tôi hiện đang nghiên cứu các nền tảng phần cứng khác nhau và tôi đã tự hỏi liệu Raspberry PI 2 B có thể là một lựa chọn phù hợp hay không. Bản thân bo mạch dường như có rất nhiều sức ngựa (CPU Quad Core ARM 900 MHz), nhưng nó chỉ có đầu vào âm thanh. Vì vậy, câu hỏi của tôi là:

  1. Raspberry PI 2 B có phù hợp để xử lý âm thanh theo thời gian thực không?
  2. Nếu câu trả lời cho 1 là có, thì tôi muốn biết liệu có bảng âm thanh bổ trợ nào cho Raspberry PI 2 B trên thị trường với 8 kênh đầu vào và 8 kênh đầu ra không? Bảng phải hỗ trợ tốc độ mẫu 48kHz.
  3. Nếu câu trả lời cho 1 hoặc [2] là không, bạn muốn giới thiệu nền tảng CTNH nào?

Lý do tại sao tôi nhìn vào Raspberry PI 2 B là mức giá hấp dẫn, nhưng có thể có các loại bảng khác trên thị trường phù hợp hơn cho loại ứng dụng này.

Sơ đồ khối


"độ trễ chuyến đi khứ hồi không được vượt quá 12ms" .... "mỗi mẫu 5,33ms" Bạn có chắc điều này thậm chí còn khả thi trên PC không? Đó không phải là sức mạnh xử lý là một vấn đề, nó thực hiện điều này hoàn toàn trong phần mềm người dùng trên hệ điều hành không phải thời gian thực . Tôi nghĩ độ trễ sẽ nhiều hơn 12ms. Nếu bạn không chắc chắn về câu hỏi đó, thì câu trả lời có lẽ là không và không có bất kỳ lựa chọn thay thế nào trong số các SBC có mục đích chung. Tuy nhiên, nếu bạn biết thực tế nó có thể được thực hiện với PC, thì có một cơ hội.
goldilocks

Câu trả lời:


4

Câu trả lời ngắn là có, không và phụ thuộc, câu trả lời dài có lẽ là không, nhưng có thể là có tùy theo cách tiếp cận của bạn. Là một phần cứng, Pi khá nhanh và có thể xử lý việc chuyển dữ liệu từ đầu vào sang đầu ra một cách hợp lý nhanh chóng. Tuy nhiên, thiết lập mặc định, của linux raspian, không phải là một nền tảng thời gian thực. Hơn nữa, bạn chưa chỉ định DSP bạn muốn làm gì. Quay lại khi tôi còn ở trường đại học, vào thời của những năm 386 và Windows 3.1, nếu bạn muốn xử lý âm thanh nghiêm túc, bạn cần một chip DSP bên ngoài để có thể làm cho tất cả hoạt động.

Nếu điều này hoạt động trên Pi, bạn có một vài lựa chọn. Tùy chọn đầu tiên, có lẽ là cách tốt nhất để làm điều đó, sẽ là trong phần cứng, sử dụng các ngắt và một mô-đun DSP riêng biệt. Tôi không chắc chắn những gì ở ngoài đó, nhưng đáng để xem xét rằng hầu hết các giao diện Pi với USB và có giới hạn băng thông, vì vậy dù sao bạn cũng có thể không gặp may. Thứ hai hãy thử mã hóa nó như một mô-đun hạt nhân và xem loại năng lượng xử lý / thông lượng nào bạn có thể thoát khỏi Pi, chế độ người dùng linux không phải là thời gian thực và trong khi đó sẽ là một bằng chứng hữu ích về khái niệm (thực hiện trong usermode với một ưu tiên quá trình cao) bạn có thể cần phải đi vào kernel để tăng tốc độ ra khỏi nó. Cuối cùng, nhân linux, ngay cả trong phiên bản cắt giảm, cũng có rất nhiều thứ, bạn không cần cho một thiết bị DSP đơn giản. Tôi nghĩ rằng tôi đã thấy một hạt nhân ngoài kia ở đâu đó sẽ biến PC của bạn thành một bộ định tuyến mạng. Một cái gì đó cơ bản là tất cả những gì bạn cần, nhưng bạn sẽ phải xuống và bẩn với một số hack nhân C.

Nếu bạn muốn tính tổng và cố gắng giải quyết tất cả, bạn cần viết trình biên dịch cho bất kỳ bộ xử lý nào của bạn sẽ làm với dữ liệu và tìm ra bao nhiêu hướng dẫn quy trình sẽ cần để tải dữ liệu, thay đổi nó và viết nó ra, và xem nếu số nhân với 48k * 2 sẽ vượt quá 900M, và nếu không, bằng lề nào (mọi thứ khác mà thiết bị làm, phải hoạt động ở lề đó, do đó tôi khuyên bạn nên giảm thiểu điều đó bằng cách mất các công cụ hạt nhân bình thường). Tôi nghĩ rất có thể nó sẽ không hoạt động, nhưng nó thực sự phụ thuộc vào việc bạn muốn xử lý. Bạn có thể biên dịch kernel của riêng bạn mà không có gì trong đó, ngoại trừ mô-đun kernel của riêng bạn và có đủ dung lượng. Bạn sẽ phải thử nó và xem.


Không chắc chắn những gì bạn đang cố gắng thực hiện (bằng cách xử lý) nhưng hãy xem st.com/web/en/catalog/sense_power/FM125/CL935/SC534/PF185827 dường như có giao diện điều khiển SPI, vì vậy có thể vừa vặn với Pi và onsemi.com/PowerSolutions/product.do?id=BELASIGNA%20200
sibaz
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.