public NSObject GetObjectValue(NSTableView tableView, NSTableColumn tableColumn, int row)
        {
            NSDictionary dict = NSSpeechSynthesizer.AttributesForVoice(mVoices[row]);
            // See all of the keys and Value types
//			var keys = dict.Keys;
//			var values = dict.Values;
//			for (int i = 0; i < dict.Count; i++) {
//				if (keys[i].ToString() != "VoiceIndividuallySpokenCharacters" &&  keys[i].ToString() != "VoiceSupportedCharacters")
//					Console.WriteLine("Key {0} = {1}, Value = {2}", i, keys[i], values[i].GetType());
//			}

            var      name = dict.ObjectForKey(new NSString("VoiceName"));
            var      age  = dict.ObjectForKey(new NSString("VoiceAge"));
            var      lang = dict.ObjectForKey(new NSString("VoiceLanguage"));
            NSString full = new NSString(String.Format("{0}, Age {1}, Language {2}", name, age, lang));

            return(full);
        }
Example #2
0
            internal MacAvailableVoice(string name)
            {
                Name = name;

                // Ask OSX for properties of this voice
                NSDictionary props  = NSSpeechSynthesizer.AttributesForVoice(name);
                NSString     gender = (NSString)props.ValueForKey(NSSpeechSynthesizer.NSVoiceGender);

                // TODO Deal with neuter voices
                // TODO Deal with multiple languages.
                if (gender == NSSpeechSynthesizer.NSVoiceGenderMale)
                {
                    Male = true;
                }
                else
                {
                    Male = false;
                }
            }
Example #3
0
 Task <IEnumerable <Locale> > PlatformGetLocalesAsync() =>
 Task.FromResult(NSSpeechSynthesizer.AvailableVoices
                 .Select(voice => NSSpeechSynthesizer.AttributesForVoice(voice))
                 .Select(attribute => new Locale(attribute["VoiceLanguage"]?.ToString(), null, attribute["VoiceName"]?.ToString(), attribute["VoiceIdentifier"]?.ToString())));