(Swift) 条件绑定的初始化程序必须具有可选类型,而不是“AVAudioInputNode”

问题描述 投票:0回答:2

我正在尝试创建语音转文本功能,但收到错误:

Initializer for conditional binding must have Optional type, not 'AVAudioInputNode'

guard let inputNode = audioEngine.inputNode else {
        fatalError("Audio engine has no input node")
    }
xcode conditional-statements option-type speech avaudioengine
2个回答
14
投票

AVAudioEngine
inputNode
属性不是可选的。当首次访问 inputNode 时,音频引擎会按需创建一个单例。它不能为零,因此守卫没有意义。

因此,只需拆下防护罩并按原样使用

audioEngine.inputNode
即可。不可能是
nil

在使用之前,您仍然必须确保

inputNode
已连接到某个东西:

检查输入节点的输入格式(具体是硬件 格式)用于非零采样率和通道数以查看输入 已启用。

(来自苹果文档)


0
投票

// 已针对 Swift 5 进行更新

做出声明。

let node = audioEngine.inputNode

然后您就可以使用它,而不会有任何可选链的风险。

node.outputFormat(forBus: 0)
node.removeTap(onBus: 0)
© www.soinside.com 2019 - 2024. All rights reserved.