Just a follow up to this, as I had similar issues that I managed to work around and thought the solution might be helpful to others.
My app uses Open Ears for speech recognition and I also have a requirement to play very short, low-latency sounds for alerts, button click noises etc.
If I use my own instance of AVAudioPlayer to play these sounds, the latency is still unacceptably high (~ 500ms), even using the [myAVAudioPlayer prepareToPlay] method described by Halle above.
My solution was to use the [AudioServicesPlaySystemSound ] API to play these short sounds. It works with very low latency. That method is described here: http://stackoverflow.com/questions/900461/slow-start-for-avaudioplayer-the-first-time-a-sound-is-played?rq=1
If Open Ears has started listening however, the sound produced by [AudioServicesPlaySystemSound ] will not be audible. After reading around the forums, I set [OEPocketsphinxController sharedInstance].audioMode to @”VoiceChat”, which makes the sound audible, although at a lower volume. Not quite sure why that is, maybe related to http://www.politepix.com/forums/topic/openearspocketsphinx-turns-audio-player-volume-down-and-wont-let-go/ ? Halle?
Anyway if you need very low-latency playback of short sounds in a project using OpenEars, this is what currently works for me. Hope it helps someone!