Forum Replies Created
Hi, I never figured this out in the end, I had to work on other issues so never verified I could get the version number to print (sorry Halle, for not closing the issue). But the speech recognition itself was working fine.
Yes I was using Unity, never had any issues.
Thanks for your reply.
The log does get to StartListening but still no version printed. I set verbosePocketsphinx to off, left OELogging on and re-imported the RapidEars framework (which is 2.502, as downloaded from the licensee portal) but still no version – is there any other way to check, via a file in the framework etc?
Also do you think it would be a good idea to have an API to query the framework version, for OE and plugins too? Seems like it would be useful though you may have a reason for not implementing that…
Also – my last comment got converted to code and I couldnt edit any more. It should read:
I can see other verbose output for OE, but not the RapidEars version number. I’m assuming that enabling verbose RapidEars would print it’s version number? I am also using Rejecto and that version gets printed OK, as seen above. I tried re-adding the frameworks but still the same issue.
OK thanks, that makes sense.
No I’m not using VoiceChat mode at the moment, because it reduces the playback volume of other sounds in my app, as described here: https://www.politepix.com/forums/topic/openears-finch/
I can experiment with turning it on to see if it improves recognition with background noise, and if so then try to work around the low volume issue…
On a related note: is it possible to detect the threshold at which the level of background noise may start to impact on recognition, and then warn the user of that? At least then they would know that they should try to move to a quieter place if possible.
Of course we could just monitor the mic level in the background and find the threshold (in dB) based on trial and error, but I was wondering if you might have some tips or guidelines.
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!
I have a related question so thought I would add it here – please let me know if I should move it to a new thread. Just looking into using OpenEars (coming from a nightmarish experience with Nuance…very impressed with OpenEars so far! :-) )
I also want to perform recognition for speech from a WAV file, but for a known vocabulary. I want to record speech from a mic input, retain the stored audio as a WAV and to perform recognition too (not strictly in real-time, but a few seconds later).
From glancing at the docs, there is a function called [runRecognitionOnWavFileAtPath:] that I assume I can use for this purpose.
My question: I have read about certain audio APIs not playing nicely with OpenEars re audio playback, e.g. in Unity: https://www.politepix.com/forums/topic/openears-unity3d-audio-playback-conflicts/
But if it’s possible to run recognition from a WAV, why not just record a WAV using your preferred API (Unity, AVAudioRecorder etc) and then let [runRecognitionOnWavFileAtPath:] handle the recognition? (One reason may be for cases where instant or streaming recognition is required). Would this enable smooth integration with any audio API (and would have solved the Unity issues in the thread above) ?