在macOS Mojave中,如何在cocoa应用程序中使用AVSpeechSynthesizer?

5

AVSpeechSynthesizer被标记为macOS Mojave beta可用。

之前它只能在iOS、tvOS和watchOS上使用。但是如果我在Xcode 10中准备一个小的macOS测试项目,它会给我一个错误信息“使用未解决的标识符'AVSpeechSynthesizer'”。在顶部,我有:

import Cocoa
import NaturalLanguage
import AVFoundation

我的代码如下:

let string = "Mickey mouse went to town"

let recognizer = NLLanguageRecognizer()
recognizer.processString(string)
let language = recognizer.dominantLanguage!.rawValue

let speechSynthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: string)
utterance.voice = AVSpeechSynthesisVoice(language: language)
speechSynthesizer.speak(utterance)

这段代码在iOS上可以正常工作,但在macOS上却报错。非常感谢任何帮助。谢谢。

1个回答

4

目前在Mojave上的AVFAudio.h文件如下:

#if TARGET_OS_IPHONE
#import <AVFAudio/AVAudioSession.h>
#import <AVFAudio/AVSpeechSynthesis.h>
#endif

“AVSpeechSynthesizer”等相关内容声明在“AVSpeechSynthesis.h”中。这就是你看到该错误的技术原因,这些头文件只在编译iOS时才包含。

但我已经尝试手动导入该头文件,即使没有那个#if,我也不认为“AVSpeechSynthesizer”在Mojave上工作得很好。尝试在Mojave上创建一个“AVSpeechUtterance”总是返回nil。

因此,这要么是Mojave上未完成的工作,要么是头文件注释不正确,并且通过AVFoundation在Mojave上无法使用语音合成。请注意,“NSSpeechSynthesizer”仍然存在,并未被标记为过时。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接