【发布时间】:2022-06-16 15:53:50
【问题描述】:
我正在使用 Apple 的 SFSpeechRecognizer 周围的 Observable 包装器示例,如下所示:
class SpeechRecognizer: ObservableObject {
@Published var transcript: String
func transcribe() {}
}
我们的目标是使用 ViewModel 在脚本生成时使用它,并将值传递给 SwiftUI 视图以进行可视化调试:
class ViewModel : ObservableObject {
@Published var SpeechText: String = ""
@ObservedObject var speech: SpeechRecognizer = SpeechRecognizer()
public init() {
speech.transcribe()
speech.transcript.publisher
.map { $0 as! String? ?? "" }
.sink(receiveCompletion: {
print ($0) },
receiveValue: {
self.SpeechText = $0
self.doStuff(transcript: $0)
})
}
private void doStuffWithText(transcript: String) {
//Process the output as commands in the application
}
}
我可以确认,如果我直接在 SwiftUI 视图中观察 transcript,则数据正在流经。我的问题是接收变化的值,然后将该数据分配给我自己发布的变量。
我该如何进行这项工作?
【问题讨论】:
标签: swift combine sfspeechrecognizer