1) Забыли async перед __anext__
2) frames_per_buffer - достаточно 1024, 2048. Задержка из-за большого блока фреймов.
3) callback не потокобезопасный, достаточно сделать вложенную асинхронную функцию и на нее навесить self.loop.call_soon_threadsafe(asyncio.create_task, ...).
4) Вы используете синхронную очередь, корректным решением будет использование asyncio.Queue, а также избавиться от put_nowait.