Синтезирование речи

При помощи объекта NSSpeechSynthesizer можно подать заявку, произносят слово, фразу или предложение пользователю. Эта синтезированная речь является существенным средством тем пользователям с вниманием или ограниченными возможностями зрения. Также полезно, когда Вы хотите привлечь внимание пользователя к чему-то важному, когда он или она мог бы быть отвлечен чем-то еще на экране.

Используя объект NSSpeechSynthesizer «объявить» текст просто. Вы инициализируете объект с речью и отправляете a startSpeakingString: обменивайтесь сообщениями к нему, передающий в объекте NSString представление текста для разговора. Дополнительно, когда разговор заканчивается, можно реализовать один из нескольких методов делегации или чтобы сопровождать слова, произнесенные некоторым интерактивным способом или сделать что-то специализированное.

Речь и инициализация

Существенный атрибут объекта NSSpeechSynthesizer является речью. Синтез речи определяет много речи для OS X, каждого с его собственными распознаваемыми речевыми характеристиками (такими как род и возраст). Можно просмотреть список системной речи и установить речь по умолчанию в области Default Voice Речевых установок системы.

Если Вы инициализируете экземпляр NSSpeechSynthesizer с помощью init метод, речь по умолчанию используется. Если по некоторым причинам Вы хотите другую речь, инициализируете экземпляр с методом NSSpeechSynthesizer initWithVoice:. Можно изменить речь в любое время с setVoice: метод.

Путем вызова методов класса availableVoices и defaultVoice, можно получить список системной речи и текущей речи по умолчанию, соответственно. Каждая речь имеет многократные атрибуты, включая имя, возраст, род и язык. Путем вызова метода класса attributesForVoice:, можно получить объект NSDictionary для определенной речи, содержащей эти атрибуты. (Параметром этого метода является речевой идентификатор, строка формы com.apple.speech.synthesis.voice.voiceName.) См. справочную документацию для NSSpeechSynthesizer для допустимых ключей словаря.

Говорящий текст

Как только Вы инициализировали объект NSSpeechSynthesizer, отправьте startSpeakingString: обменивайтесь сообщениями к нему, передавая его текст для разговора. Перечисление 1 иллюстрирует инициализацию объекта с речью по умолчанию и затем до разговора строки, выбранной от текстового поля (phraseField), устанавливая речь в соответствии с требованиями пользователем в раскрывающемся списке (voiceList).

Перечисление 1  Используя объект NSSpeechSynthesizer

- (id)init {
    self = [super init];
    if (self) {
    synth = [[NSSpeechSynthesizer alloc] init]; //start with default voice
                                              //synth is an ivar
    [synth setDelegate:self];
    }
    return self;
}
 
- (IBAction)speak:(id)sender
{
    NSString *text = [phraseField stringValue];
    NSString *voiceID =[[NSSpeechSynthesizer availableVoices] objectAtIndex:[voiceList indexOfSelectedItem]];
    [synth setVoice:voiceID];
    [synth startSpeakingString:text];
}

Обратите внимание на то, что этот пример кода устанавливает делегата к объекту NSSpeechSynthesizer в init метод. NSSpeechSynthesizer определяет три метода, чтобы позволить его делегату оказываться замешанным во время разговора о строке текста и после разговора о строке:

Перечисление 2  реализация speechSynthesizer:didFinishSpeaking:

- (void)speechSynthesizer:(NSSpeechSynthesizer *)sender didFinishSpeaking:(BOOL)finishedSpeaking
{
    [_textToSpeechExampleTextView setSelectedRange:_orgSelectionRange]; // Set selection length to zero.
    [_textToSpeechExampleSpeakButton setTitle:@"Start Speaking"];
    [_saveButton setTitle:@"Save As File..."];
    [_textToSpeechExampleSpeakButton setEnabled:YES];
    [_saveButton setEnabled:YES];
    [_voicePop setEnabled:YES];
}