受到这个问题的启发(没有收到答案)。
上下文:我有一个(swiftUI)视图,它有 2 个按钮和一个文本字段。一键打开麦克风并使用 SFSpeechrecognizer 将语音转换为文本(并填充文本字段)。然后将其发送到我的服务器,我的应用程序会收到通过 AVSpeechSynthesizer 说出的响应。麦克风始终打开,因为该应用程序应该是对话式的。因此,语音输出被麦克风捕获。
问题:我不想在说出响应时禁用麦克风,因为我通过麦克风控制我的应用程序。是否可以让麦克风(SFSpeechrecognizer)忽略 AVSpeechSynthesizer 发出的语音?Facetime 通过忽略设备播放的音乐来做类似的事情。
我的语音转文本代码主要是由this修改的。
文字转语音片段如下:
let utterance = AVSpeechUtterance(string: serverResponse)
utterance.voice = AVSpeechSynthesisVoice(language: "en-US")
utterance.rate = 0.1
let synthesizer = AVSpeechSynthesizer()
synthesizer.speak(utterance)