Home › Forums › OpenEars plugins › SaveThatWave not working › Reply To: SaveThatWave not working
May 7, 2015 at 7:44 pm
#1025606
chymel
Participant
I’m sorry but it’s still not working. I’ve followed the tutorial which before I wasn’t adding the linker flags but now I am, both the target and project.
I hate to dump code but this is my .m file. I can’t find anything wrong?
//
// ViewController.m
// OpenEarsTest
//
#import "ViewController.h"
#import <OpenEars/OELanguageModelGenerator.h>
#import <OpenEars/OEAcousticModel.h>
#import <OpenEars/OEPocketsphinxController.h>
#import <OpenEars/OEAcousticModel.h>
#import <OpenEars/OEEventsObserver.h>
#import <SaveThatWaveDemo/OEEventsObserver+SaveThatWave.h>
#import <SaveThatWaveDemo/SaveThatWaveController.h>
@interface ViewController () <OEEventsObserverDelegate>
@property AVAudioPlayer *musicPlayer;
@property NSString *audioFilePath;
@property (strong, nonatomic) OEEventsObserver *openEarsEventsObserver;
@property (strong, nonatomic) SaveThatWaveController *saveThatWaveController;
@end
@implementation ViewController
@synthesize saveThatWaveController;
- (void) pocketsphinxDidReceiveHypothesis:(NSString *)hypothesis recognitionScore:(NSString *)recognitionScore utteranceID:(NSString *)utteranceID {
NSLog(@"The received hypothesis is %@ with a score of %@ and an ID of %@", hypothesis, recognitionScore, utteranceID);
}
- (void) pocketsphinxDidStartListening {
NSLog(@"Pocketsphinx is now listening.");
}
- (void) pocketsphinxDidDetectSpeech {
NSLog(@"Pocketsphinx has detected speech.");
}
- (void) pocketsphinxDidDetectFinishedSpeech {
NSLog(@"Pocketsphinx has detected a period of silence, concluding an utterance.");
}
- (void) pocketsphinxDidStopListening {
NSLog(@"Pocketsphinx has stopped listening.");
}
- (void) pocketsphinxDidSuspendRecognition {
NSLog(@"Pocketsphinx has suspended recognition.");
}
- (void) pocketsphinxDidResumeRecognition {
NSLog(@"Pocketsphinx has resumed recognition.");
}
- (void) pocketsphinxDidChangeLanguageModelToFile:(NSString *)newLanguageModelPathAsString andDictionary:(NSString *)newDictionaryPathAsString {
NSLog(@"Pocketsphinx is now using the following language model: \n%@ and the following dictionary: %@",newLanguageModelPathAsString,newDictionaryPathAsString);
}
- (void) pocketSphinxContinuousSetupDidFailWithReason:(NSString *)reasonForFailure {
NSLog(@"Listening setup wasn't successful and returned the failure reason: %@", reasonForFailure);
}
- (void) pocketSphinxContinuousTeardownDidFailWithReason:(NSString *)reasonForFailure {
NSLog(@"Listening teardown wasn't successful and returned the failure reason: %@", reasonForFailure);
}
- (void) testRecognitionCompleted {
NSLog(@"A test file that was submitted for recognition is now complete.");
}
//This is never called
- (void) wavWasSavedAtLocation:(NSString *)location {
NSLog(@"WAV was saved at the path %@", location);
self.audioFilePath = location;
}
- (IBAction)startPlayback:(id)sender {
[self.saveThatWaveController stop];
[[OEPocketsphinxController sharedInstance] stopListening];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSLog(@"%@", self.audioFilePath); // this returns (null)
NSURL *fileURL = [NSURL URLWithString:self.audioFilePath];
NSError *error;
self.musicPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:fileURL error:&error];
if (error) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Playback Error" message:@"There was a problem playing the file." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
[alert show];
NSLog(@"%@", error);
}
else {
[self.musicPlayer prepareToPlay];
[self.musicPlayer play];
}
});
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.openEarsEventsObserver = [[OEEventsObserver alloc] init];
[self.openEarsEventsObserver setDelegate:self];
self.saveThatWaveController = [[SaveThatWaveController alloc] init];
OELanguageModelGenerator *lmGenerator = [[OELanguageModelGenerator alloc] init];
NSArray *words = [NSArray arrayWithObjects:@"WORD", @"STATEMENT", @"OTHER WORD", @"A PHRASE", nil];
NSString *name = @"NameIWantForMyLanguageModelFiles";
NSError *err = [lmGenerator generateLanguageModelFromArray:words withFilesNamed:name forAcousticModelAtPath:[OEAcousticModel pathToModel:@"AcousticModelEnglish"]]; // Change "AcousticModelEnglish" to "AcousticModelSpanish" to create a Spanish language model instead of an English one.
NSString *lmPath = nil;
NSString *dicPath = nil;
if(err == nil) {
lmPath = [lmGenerator pathToSuccessfullyGeneratedLanguageModelWithRequestedName:@"NameIWantForMyLanguageModelFiles"];
dicPath = [lmGenerator pathToSuccessfullyGeneratedDictionaryWithRequestedName:@"NameIWantForMyLanguageModelFiles"];
} else {
NSLog(@"Error: %@",[err localizedDescription]);
}
[[OEPocketsphinxController sharedInstance] setActive:TRUE error:nil];
[[OEPocketsphinxController sharedInstance] startListeningWithLanguageModelAtPath:lmPath dictionaryAtPath:dicPath acousticModelAtPath:[OEAcousticModel pathToModel:@"AcousticModelEnglish"] languageModelIsJSGF:NO]; // Change "AcousticModelEnglish" to "AcousticModelSpanish" to perform Spanish recognition instead of English.
[self.saveThatWaveController start]; // For saving WAVs from OpenEars or RapidEars
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end