3

我正在编写一个基于 Cocoa Book 示例的简单程序,该示例使用 NSSpeechSynthesizer 说出短语。我想知道如何更改用于合成相位的语言。

#import "PHAppDelegate.h"

@implementation PHAppDelegate

@synthesize window = _window;
@synthesize textField = _textField;

- (id)init{

    self = [super init];

    if(self){

        NSLog(@"init");

        _speechSynth = [[NSSpeechSynthesizer alloc] initWithVoice:nil];

    }

        return self;

}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    // Insert code here to initialize your application
}

- (IBAction)stopIt:(id)sender {

    NSLog(@"stoppping");
    [_speechSynth stopSpeaking];

}

- (IBAction)sayit:(id)sender {

    NSString *string = [_textField stringValue];

    if([string length] == 0){

        NSLog(@"There is no text to speech.");

        return;
    }

    NSString *voiceID =[[NSSpeechSynthesizer availableVoices] objectAtIndex:10];

    [_speechSynth setVoice:voiceID];

    [_speechSynth startSpeakingString:string];


    NSLog(@"Have started to say: %@", string);


}
@end

这段代码工作正常。

4

2 回答 2

1
for (NSString *voiceIdentifierString in [NSSpeechSynthesizer availableVoices]) {
    NSString *voiceLocaleIdentifier = [[NSSpeechSynthesizer attributesForVoice:voiceIdentifierString] objectForKey:NSVoiceLocaleIdentifier];
    NSLog(@"%@ speaks %@", voiceIdentifierString, voiceLocaleIdentifier);

}

查看语音属性键

于 2015-03-25T20:50:48.993 回答
0

这份 2014 年的文件说只有一种语言可用(美国英语)。

NSVoiceLanguage
The language of the voice (currently US English only). An NSString Deprecated: Use NSVoiceLocaleIdentifier (page 24) instead. Available in OS X v10.0 and later.
Deprecated in OS X v10.5.
Declared in NSSpeechSynthesizer.h.
于 2014-04-30T23:04:46.033 回答