Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

drskot

macrumors newbie
Original poster
Has anybody had any luck using an NSSpeechSynthesizerDelegate? None of my delegate's methods are being called.

Here's the code:


Code:
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>

@interface SynthesizerDelegate : NSObject <NSSpeechSynthesizerDelegate>
@end

@implementation SynthesizerDelegate
- (void)speechSynthesizer:(NSSpeechSynthesizer *)sender willSpeakWord:(NSRange)characterRange ofString:(NSString *)string {
  printf("speaking word ");
  printf("%s \n", [[string substringWithRange:characterRange] UTF8String]);
}
- (void)speechSynthesizer:(NSSpeechSynthesizer *)sender didFinishSpeaking:(BOOL)finishedSpeaking {
  printf("finished speaking\n");
}
@end

int main (int argc, const char * argv[])
{
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  
  NSString *input = @"I am not an animal. I am a man.";
  
  NSSpeechSynthesizer *synthesizer = [[NSSpeechSynthesizer alloc] init];
  SynthesizerDelegate *delegate = [[SynthesizerDelegate alloc] init];
  [synthesizer setDelegate:delegate];
  
  [synthesizer startSpeakingString:input];
  
  while ([synthesizer isSpeaking]) {
    sleep(1);
  }
  
  [synthesizer release];
  [delegate release];
  
  [pool drain];
  return 0;
}
 
Last edited:
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.