gpt4 book ai didi

cocoa :言语和时间

转载 作者:行者123 更新时间:2023-12-03 16:59:04 25 4
gpt4 key购买 nike

我正在构建一个应用程序,其中一部分会说出时间。但是,当我将日期字符串(如 10/24/11)传递给 NSSpeechSynthesizer 时,它会按字面意思发音,如“一、零、斜线二四斜线一一”,与时间戳相同,“八冒号一一”结肠 结肠”等

我查看了 NSSpeechSynthesizer 文档,我想我必须使用phonemesFromText 方法,但这似乎需要大量繁重的工作才能让应用程序顺利说出时间和日期。有没有更快的方法?

谢谢

最佳答案

你可以尝试这样的事情:

@implementation MDAppController
- (id)init {
if ((self = [super init])) {
}
return self;
}

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
NSDateFormatter *dateParser = [[[NSDateFormatter alloc]
initWithDateFormat:@"%m/%d/%y" allowNaturalLanguage:YES] autorelease];

NSDate *date = [dateParser dateFromString:@"10/24/11"];

NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setTimeStyle:NSDateFormatterNoStyle];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];

NSString *string = [dateFormatter stringFromDate:date];

NSLog(@"string == %@", string);
// prints "October 24, 2011"

NSSpeechSynthesizer *alex = [[NSSpeechSynthesizer alloc]
initWithVoice:[NSSpeechSynthesizer defaultVoice]];
[alex setDelegate:self];
[alex startSpeakingString:string];
}

- (void)speechSynthesizer:(NSSpeechSynthesizer *)sender
didFinishSpeaking:(BOOL)finishedSpeaking {
if (finishedSpeaking) [sender autorelease];
}
@end

基本上,这是使用 2 个 NSDateFormatter:一个将日期的字符串表示形式“转换”为实际的 NSDate 对象,然后另一个将其转换为 NSDate 恢复为更理想的字符串表示形式。

显然,您需要调整 dateParser 格式以适合您预期的输入字符串类型。 (最好,您可以只使用输入日期而不是它的字符串表示形式)。

关于 cocoa :言语和时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com