gpt4 book ai didi

Swift avspeechsynthesizer 不同的语言

转载 作者:行者123 更新时间:2023-11-28 05:33:15 26 4
gpt4 key购买 nike

utterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"en-au"];

这行代码正是您如何更改 obj-c 中的语言的方法。但我想知道是否有人可以告诉我它是如何快速实现的。在文档中使用了这行代码......

init!(language language: String!) -> AVSpeechSynthesisVoice

但我不明白我会在哪里实现它:/

最佳答案

在名为 Type 的 Swift 接口(interface)中看到 init(paramName: ParamType) 的地方,您可以使用语法 Type(paramName: paramValue )。这就在关于 Initialization 的章节的顶部在 The Swift Programming Language 中,我建议在深入了解使用 Swift 进行 Cocoa 开发之前先阅读这本书。

同样值得一读的是关于 Initialization 的部分在 Using Swift with Cocoa and Objective-C 中,它重复了上面的内容,还为您提供了 ObjC 初始化器和工厂方法如何自动映射到 Swift 初始化器的一般规则:如果您有一个名为 Foo 与初始化器 initWithBar: 和/或工厂类方法 fooWithBar:,它映射到 Swift 初始化器 init(bar:) 并使用语法 Foo(bar: someBarValue) 调用它。

所以:

utterance.voice = AVSpeechSynthesisVoice(language: "en-au") // g'day, mate

请注意,这个特定的初始化器是 init! 的形式——这意味着底层 ObjC 代码可以返回 nil,并且 Swift 将初始化器调用的结果包装在 Implicitly Unwrapped Optional 中。 .因为 AVSpeechUtterance.voice 可以接受一个可选的(包括一个带有 nil 值的),所以你没有问题。但是,如果这种情况发生变化,或者如果您需要处理明确要求非零语音的 API,则应检查该选项;例如:

if let voice = AVSpeechSynthesisVoice(language: "en-au") {
// do something with voice
} else {
// pick another one, maybe?
}

关于Swift avspeechsynthesizer 不同的语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26611789/

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