/** NSSpeechSynthesizer abstract base class for speech synthesis Copyright (C) 2009 Free Software Foundation, Inc. Author: Gregory Casamento Date: Mar 2009 This file is part of the GNUstep GUI Library. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include "AppKit/NSSpeechSynthesizer.h" // Keys for properties... NSString *NSVoiceIdentifier = @"NSVoiceIdentifier"; NSString *NSVoiceName = @"NSVoiceName"; NSString *NSVoiceAge = @"NSVoiceAge"; NSString *NSVoiceGender = @"NSVoiceGender"; NSString *NSVoiceDemoText = @"NSVoiceDemoText"; NSString *NSVoiceLanguage = @"NSVoiceLanguage"; NSString *NSVoiceLocaleIdentifier = @"NSVoiceLocaleIdentifier"; NSString *NSVoiceSupportedCharacters = @"NSVoiceSupportedCharacters"; NSString *NSVoiceIndividuallySpokenCharacters = @"NSVoiceIndividuallySpokenCharacters"; // Values for gender NSString *NSVoiceGenderNeuter = @"NSVoiceGenderNeuter"; NSString *NSVoiceGenderMale = @"NSVoiceGenderMale"; NSString *NSVoiceGenderFemale = @"NSVoiceGenderFemale"; // values for speech mode NSString *NSSpeechModeText = @"NSSpeechModeText"; NSString *NSSpeechModePhoneme = @"NSSpeechModePhoneme"; NSString *NSSpeechModeNormal = @"NSSpeechModeNormal"; NSString *NSSpeechModeLiteral = @"NSSpeechModeLiteral"; // values for speech status... NSString *NSSpeechStatusOutputBusy = @"NSSpeechStatusOutputBusy"; NSString *NSSpeechStatusOutputPaused = @"NSSpeechStatusOutputPaused"; NSString *NSSpeechStatusNumberOfCharactersLeft = @"NSSpeechStatusNumberOfCharactersLeft"; NSString *NSSpeechStatusPhonemeCode = @"NSSpeechStatusPhonemeCode"; // values for error NSString *NSSpeechErrorCount = @"NSSpeechErrorCount"; NSString *NSSpeechErrorOldestCode = @"NSSpeechErrorOldestCode"; NSString *NSSpeechErrorOldestCharacterOffset = @"NSSpeechErrorOldestCharacterOffset"; NSString *NSSpeechErrorNewestCode = @"NSSpeechErrorNewestCode"; NSString *NSSpeechErrorNewestCharacterOffset = @"NSSpeechErrorNewestCharacterOffset"; // values for info NSString *NSSpeechSynthesizerInfoIdentifier = @"NSSpeechSynthesizerInfoIdentifier"; NSString *NSSpeechSynthesizerInfoVersion = @"NSSpeechSynthesizerInfoVersion"; // values for command delimiter NSString *NSSpeechCommandPrefix = @"NSSpeechCommandPrefix"; NSString *NSSpeechCommandSuffix = @"NSSpeechCommandSuffix"; // values for dictionaries. NSString *NSSpeechDictionaryLanguage = @"NSSpeechDictionaryLanguage"; NSString *NSSpeechDictionaryModificationDate = @"NSSpeechDictionaryModificationDate"; NSString *NSSpeechDictionaryPronunciations = @"NSSpeechDictionaryPronunciations"; NSString *NSSpeechDictionaryAbreviations = @"NSSpeechDictionaryAbreviations"; NSString *NSSpeechDictionaryEntrySpelling = @"NSSpeechDictionaryEntrySpelling"; NSString *NSSpeechDictionaryEntryPhonemes = @"NSSpeechDictionaryEntryPhonemes"; // class declaration... @implementation NSSpeechSynthesizer // init... - (id) initWithVoice: (NSString *)voice { return self; } // configuring speech synthesis - (BOOL) usesFeebackWindow { return _usesFeedbackWindow; } - (void) setUsesFeebackWindow: (BOOL)flag { _usesFeedbackWindow = flag; } - (NSString *) voice { return _voice; } - (void) setVoice: (NSString *)voice { ASSIGN(_voice, voice); } - (float) rate { return _rate; } - (void) setRate: (float)rate { _rate = rate; } - (float) volume { return _volume; } - (void) setVolume: (float)volume { _volume = volume; } - (void) addSpeechDictionary: (NSDictionary *)speechDictionary { } - (id) objectForProperty: (NSString *)property error: (NSError **)error { return nil; } - (id) setObject: (id) object forProperty: (NSString *)property error: (NSError **)error { [self subclassResponsibility: _cmd]; return nil; } - (id) delegate { return _delegate; } - (void) setDelegate: (id)delegate { _delegate = delegate; } // Getting information... + (NSArray *) availableVoices { return [NSArray array]; } + (NSDictionary *) attributesForVoice: (NSString *)voice { return [NSDictionary dictionary]; } + (NSString *) defaultVoice { [self subclassResponsibility: _cmd]; return nil; } // Getting state... + (BOOL) isAnyApplicationSpeaking { return NO; } // Synthesizing.. - (BOOL) isSpeaking { return _isSpeaking; } - (BOOL) startSpeakingString: (NSString *)text { [self subclassResponsibility: _cmd]; return NO; } - (BOOL) startSpeakingString: (NSString *)text toURL: (NSURL *)url { [self subclassResponsibility: _cmd]; return NO; } - (void) stopSpeaking { [self subclassResponsibility: _cmd]; } - (void) stopSpeakingAtBoundary: (NSSpeechBoundary)boundary { [self subclassResponsibility: _cmd]; } - (void) pauseSpeakingAtBoundary: (NSSpeechBoundary)boundary { [self subclassResponsibility: _cmd]; } - (void) continueSpeaking { [self subclassResponsibility: _cmd]; } - (NSString *) phonemesFromText: (NSString *)text { [self subclassResponsibility: _cmd]; return nil; } @end