Anybody had any luck using an NSSpeechSynthesizerDelegate? None of my delegate messages are being called. Here's the code:

//  main.m

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

@interface SynthesizerDelegate : NSObject <NSSpeechSynthesizerDelegate>

@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");

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]) {
  [synthesizer release];
  [delegate release];
  [pool drain];
  return 0;