2009-09-09 3 views
5

Я хотел бы написать кросс-платформенное приложение, которое может обрабатывать и воспроизводить данные микрофона в реальном времени. Представьте себе, что в качестве доказательства концепции используется чат, где люди могут разговаривать друг с другом и применять фильтры к своим голосам. Является ли OpenAL подходящим для этого? Если нет, может ли кто-нибудь предоставить альтернативу? Кроме того, если кто-либо может предоставить или связать меня с простой программой «привет мир», которая читает с микрофона и выплевывает выход обратно, это было бы потрясающе.OpenAL Обработка звука в реальном времени с микрофона

Спасибо!

+0

Я также заинтересован в этом. Жаль, что никто не ответил = / – CptAJ

ответ

-1

У Apple есть два образца (или более), которые делают это. Отъезд aurioTouch и SpeakHere. aurioTouch может принимать микрофонный вход и воспроизводить его обратно, а SpeakHere может принимать вход и записывать его, и вы можете довольно легко изменить его, чтобы воспроизвести его.

2

OpenAL технически способен на него в соответствии с API, но реализация Apple для iOS не включает функции захвата звука.

На iOS вам нужно либо использовать звуковые очереди, либо аудиоустройства для записи. Для применения эффектов в реальном времени Audio Units - путь, хотя и гораздо более сложный, чем звуковые очереди.

3

OpenAL может быть не очень удобно для этой цели. Я бы рекомендовал использовать SDL (возможно, с SDL_Mixer) или PortAudio. Оба являются кросс-платформенными, и оба они довольно просты в использовании.

Чтобы использовать OpenAL для этой цели, вам необходимо провести опрос, чтобы узнать, сколько проб накоплено в скрытом кольцевом буфере. Затем вы вытаскиваете их, когда решите, что готовы. Затем вы применяете свой фильтр. Затем вы прикрепляете отфильтрованные данные в буфер. Затем вы помещаете буфер в источник и указываете, что источник играет (если он уже не воспроизводится). Сила OpenAL, на мой взгляд, заключается в применении 3D-эффектов. Это не так хорошо при фильтрации в реальном времени, хотя я ожидаю, что вы сможете заставить его работать, если вы готовы принять немного больше времени на выход. Я предпочитаю модель обратного вызова по модели буфера-объекта для фильтрации.


Edit: Я отправил некоторый код, который будет делать именно над этим на: OpenAL: How to create simple "Microphone Echo" programm? Комментарий указывает, где можно было бы поставить обработку.

Смежные вопросы