gpt4 book ai didi

ios - 尝试在使用 SpeechKit 进行语音识别之前播放系统声音

转载 作者:行者123 更新时间:2023-11-30 13:25:19 25 4
gpt4 key购买 nike

我正在尝试在 iOS Swift 应用程序中实现语音识别。当用户点击“麦克风”按钮时,我尝试播放系统声音,然后使用 SpeechKit 进行语音识别。如果我注释掉 SpeechKit 代码,语音识别工作正常,并且声音播放正常。然而,当我把它们放在一起时,我却听不到任何声音。另外,语音识别完成后,我最后没有听到声音。

这是代码:

@IBAction func listenButtonTapped(sender: UIBarButtonItem) {
let systemSoundID: SystemSoundID = 1113
AudioServicesPlaySystemSound (systemSoundID)

let session = SKSession(URL: NSURL(string: "nmsps://{my Nuance key}@sslsandbox.nmdp.nuancemobility.net:443"), appToken: "{my Nuance token}")

session.recognizeWithType(SKTransactionSpeechTypeDictation,
detection: .Long,
language: "eng-USA",
delegate: self)
}

func transaction(transaction: SKTransaction!, didReceiveRecognition recognition: SKRecognition!) {
var speechString = recognition.text
print(speechString!)

let systemSoundID: SystemSoundID = 1114
AudioServicesPlaySystemSound (systemSoundID)
}

无论哪种方式,语音识别总是工作正常。如果我将其注释掉,那么系统声音就可以正常播放。

例如每次我点击按钮时,以下内容都会正常播放声音:

@IBAction func listenButtonTapped(sender: UIBarButtonItem) {
let systemSoundID: SystemSoundID = 1113
AudioServicesPlaySystemSound (systemSoundID)
}

我尝试过不同的队列,但没有成功。我想我需要将 SpeechKit 代码移动到某种类型的回调或闭包,但不确定如何构建它。

最佳答案

这里描述了此问题的解决方案 https://developer.apple.com/documentation/audiotoolbox/1405202-audioservicesplayalertsound

SpeechKit 将录音类别添加到 AVSession,因此不再播放声音。你想做的是这样的:

    let systemSoundID: SystemSoundID = 1113

//Change from record mode to play mode
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
} catch let error as NSError {
print("Error \(error)")
}
AudioServicesPlaySystemSoundWithCompletion(systemSoundID) {
//do the recognition
}

关于ios - 尝试在使用 SpeechKit 进行语音识别之前播放系统声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288142/

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