在我的 iOS 应用程序中,我正在尝试使用 iOS 10 的最新功能 Speech API 转录预先录制的音频。
包括文档在内的多个来源都指出,语音 API(更具体地说是 SFSpeechRecognizer)的音频持续时间限制为 1 分钟。
在我的代码中,我发现任何长度约为 15 秒或更长的音频文件都会出现以下错误。
错误域=kAFAssistantErrorDomain 代码=203“SessionId=com.siri.cortex.ace.speech.session.event.SpeechSessionId@50a8e246,消息=在 30000 毫秒后等待命令超时”UserInfo={NSLocalizedDescription=SessionId=com.siri.cortex .ace.speech.session.event.SpeechSessionId@50a8e246, Message=Timeout waiting for command after 30000 ms, NSUnderlyingError=0x170248c40 {Error Domain=SiriSpeechErrorDomain Code=100 "(null)"}}
我在整个互联网上进行了搜索,但无法找到解决此问题的方法。也有人遇到同样的问题。有些人怀疑这是 Nuance 的问题。
还值得注意的是,我确实从转录过程中获得了部分结果。
这是我的 iOS 应用程序的代码。` // 创建一个语音识别器请求对象。让 srRequest = SFSpeechURLRecognitionRequest(url: location) srRequest.shouldReportPartialResults = false
sr?.recognitionTask(with: srRequest) { (result, error) in
if let error = error {
// Something wrong happened
print(error.localizedDescription)
} else {
if let result = result {
print(4)
print(result.bestTranscription.formattedString)
if result.isFinal {
print(5)
transcript = result.bestTranscription.formattedString
print(result.bestTranscription.formattedString)
// Store the transcript into the database.
print("\nSiri-Transcript: " + transcript!)
// Store the audio transcript into Firebase Realtime Database
self.firebaseRef = FIRDatabase.database().reference()
let ud = UserDefaults.standard
if let uid = ud.string(forKey: "uid") {
print("Storing the transcript into the database.")
let path = "users" + "/" + uid + "/" + "siri_transcripts" + "/" + date_recorded + "/" + filename.components(separatedBy: ".")[0]
print("transcript database path: \(path)")
self.firebaseRef.child(path).setValue(transcript)
}
}
}
}
}`
感谢您的帮助。