Programmieren mit Swift - Für macOS und iOS
Programmieren mit Swift - Für macOS und iOS
NSSpeechSynthesizer

Aufgabe der folgenden Anwendung soll es sein, einen in ein NSTextField eingegebenen Text als gesprochene Sprache auszugeben. Die Interface Datei der MyController Klasse ist sehr einfach. Dort benötigen Sie einen NSSpeechSynthesizer, sowie ein IBOutlet zu einem NSTextField. Die zwei Action werden Sie benutzen, um die Sprachausgabe zu starten oder einen aktiven NSSpeechSynthesizer zum Schweigen zu bringen.
#import <Cocoa/Cocoa.h>

@interface MyController : NSObject {

    NSSpeechSynthesizer *mySpeechSynth;
    IBOutlet NSTextField *inputTextField;

}

-(
IBAction)speak:(id)sender;
-(
IBAction)silence:(id)sender;

@end
Nicht viel schwieriger ist die Implementierung der Methoden. In der awakeFromNib-Methode wird der NSSpeechSynthesizer initialisiert. Die speak-Methode holt den Text aus dem NSTextField und sendet ihn an den NSSpeechSynthesizer, während die silence-Methode die Sprachausgabe abbricht.
#import "MyController.h"

@implementation MyController

-(
void)awakeFromNib
{
    mySpeechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:
nil];
}

- (
IBAction)speak:(id)sender
{
    NSString *aText = [inputTextField stringValue];
    [mySpeechSynth startSpeakingString:aText];
}

- (
IBAction)silence:(id)sender
{
    [mySpeechSynth stopSpeaking];
}

@end
Das Programmfenster für diese Anwendung ist einfach zu erstellen, da der Programmcode sehr genau vorgibt, welche Steuerelemente zum Einsatz kommen. Ein NSTextField und zwei Button.
stacks_image_3A702FF9-3420-4C4A-A85F-D7743E357BB9
Damit ist die Sprachausgabe fertig. Das ist schon ein eindrucksvolles Programm, finden Sie nicht auch? Natürlich ist das Herz eines Entwicklers noch nicht zufrieden, denn es gibt einige Schönheitsfehler, die man vielleicht korrigieren möchte.

Es wäre wahrscheinlich sinnvoller, wenn der Schweigen-Button nur dann gedrückt werden könnte, wenn auch tatsächlich eine Sprachausgabe aktiv ist. Und vielleicht möchte man auch nicht eine Sprachausgabe starten, während noch gesprochen wird. Beide Zustände sind in diesem Beispiel unkritisch, Sie können den Sprechen-Button so oft klicken wie Sie wollen, ohne dass es irgendwelche Folgen hätte. Trotzdem wollen wir uns damit beschäftigen, wie man so eine Verriegelung umsetzen kann.

Um dies zu verstehen, ist es aber nötig, sich zuvor mit einem anderen, nicht gerade leichtem Thema zu beschäftigen: Delegates.
Mehr dazu auf der nächsten Seite.

nächste Seite