The error is because AVPlayer’s audio session is the one active at the time of the error, i.e. OpenEars is not resetting the audio session after one second delay but instead recognition is trying to start while the audio route still has no audio input.
For simplicity, can you first of all move all of your related code into the root view controller? The app delegate isn’t a great place for any non-app-delegate code. You can use OpenEarsEventsObserver to get recognition results in other view controllers so that doesn’t pin you down to have it in the root view controller and it lets us deal with the issue without wondering about any race conditions with view loading or recognition starting.
And then it would be good to see your code in viewDidLoad (or wherever it all ends up) that just relates to this task.