2009-09-09 33 views
5

Tôi muốn viết một ứng dụng đa nền tảng có thể xử lý và phát lại dữ liệu micrô trong thời gian thực. Hãy tưởng tượng như là một bằng chứng về khái niệm một phòng chat, nơi mọi người có thể nói chuyện với nhau và áp dụng các bộ lọc cho tiếng nói của họ. OpenAL có phù hợp với điều này không? Nếu không, ai đó có thể cung cấp một sự thay thế? Ngoài ra, nếu bất kỳ ai cũng có thể cung cấp hoặc liên kết tôi với chương trình "hello world" đơn giản đọc từ micrô và kích hoạt đầu ra trở lại, điều đó thật tuyệt vời.OpenAL Real Time Xử lý âm thanh từ Microphone

Cảm ơn!

+0

Tôi cũng quan tâm đến điều này. Quá xấu không ai trả lời = / – CptAJ

Trả lời

-1

Apple có hai mẫu (hoặc nhiều hơn) làm điều đó. Kiểm tra aurioTouch và SpeakHere. aurioTouch có thể lấy đầu vào micrô và phát lại và SpeakHere có thể lấy đầu vào và ghi lại, và bạn có thể dễ dàng sửa đổi nó để phát lại.

2

OpenAL có khả năng về mặt kỹ thuật theo API, nhưng triển khai của Apple dành cho iOS không bao gồm các tính năng ghi âm.

Trên iOS, bạn cần sử dụng Hàng đợi âm thanh hoặc Đơn vị âm thanh để ghi. Để áp dụng hiệu ứng thời gian thực, Đơn vị âm thanh là cách để đi, mặc dù phức tạp hơn nhiều so với Hàng đợi âm thanh.

3

OpenAL có thể không tuyệt vời cho mục đích này. Tôi sẽ khuyên bạn nên sử dụng SDL (có lẽ với SDL_Mixer) hoặc PortAudio. Cả hai đều là nền tảng chéo và cả hai đều khá dễ sử dụng.

Để sử dụng OpenAL cho mục đích này, bạn phải thăm dò ý kiến ​​để xem có bao nhiêu mẫu tích lũy trong bộ đệm tròn ẩn. Sau đó, bạn lấy chúng ra khi bạn quyết định bạn đã sẵn sàng. Sau đó, bạn áp dụng bộ lọc của mình. Sau đó, bạn đính kèm dữ liệu đã lọc vào bộ đệm. Sau đó, bạn xếp hàng bộ đệm vào nguồn và yêu cầu nguồn phát (trừ khi nó đang phát). Sức mạnh của OpenAL, theo ý kiến ​​của tôi, là áp dụng hiệu ứng 3D. Nó không phải là tuyệt vời trong lọc thời gian thực, mặc dù tôi hy vọng bạn có thể làm cho nó hoạt động nếu bạn sẵn sàng chấp nhận trễ hơn một chút về đầu ra. Tôi thích mô hình gọi lại qua mô hình đối tượng đệm để lọc.


Chỉnh sửa: Tôi đã đăng một số mã sẽ thực hiện chính xác điều này tại: OpenAL: How to create simple "Microphone Echo" programm? Nhận xét chỉ ra nơi sẽ xử lý.

Các vấn đề liên quan