gpt4 book ai didi

ios - 在iOS上访问麦克风

转载 作者:行者123 更新时间:2023-12-03 02:04:08 25 4
gpt4 key购买 nike

我只需要知道用户何时开始对着麦克风讲话。我不会进行任何语音处理或任何花哨的操作,只需检测麦克风何时拾起任何东西即可。我已经找了一个小时,找不到这么简单的东西。有人可以指出我正确的方向吗?

更新1

对于这有多晚,我深表歉意。我一直遇到连接问题。这是我一直在使用的代码:

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.

let audioEngine = AVAudioEngine()
let inputNode = audioEngine.inputNode
let bus = 0
inputNode.installTapOnBus(bus, bufferSize: 8192, format:inputNode.inputFormatForBus(bus)) {
(buffer: AVAudioPCMBuffer!, time: AVAudioTime!) -> Void in
println("Speech detected.")
}

audioEngine.prepare()
audioEngine.startAndReturnError(nil)

}

最佳答案

您传递给installTapOnBus的回调将与来自麦克风的每个音频块一起调用。上面的代码检测到您的应用已开始监听-静音或其他任何声音-而不是是否有人在对着麦克风讲话。

为了真正识别语音的开始,您需要查看缓冲区中的数据。

一个简单的版本类似于在PA系统中使用的音频噪声门:选择一个振幅阈值和一个持续时间阈值,一旦两者都满足,就将其称为语音。由于电话,麦克风和环境各不相同,您可能需要自适应确定振幅阈值才能获得良好的性能。

即使具有自适应阈值,持续的响亮声音仍将被视为“语音”。如果您也需要清除这些杂音,则需要查看某种频率分析(例如FFT),并确定语音频率随时间的足够幅度和变化。或者,您可以将缓冲区传递给语音识别引擎(例如SFSpeechRecognizer),然后查看其是否能够识别任何内容,从而背负Apple的信号处理工作。但是,如果您经常这样做,那将是非常沉重的。

关于ios - 在iOS上访问麦克风,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28895370/

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