在我的iOS應用程序中,我試圖使用iOS 10的最新功能Speech API轉錄預先錄製的音頻。SFSpeechRecognizer(Siri轉錄)iOS應用程序超時錯誤
包括documentation在內的多個源聲明,Speech API(更具體而言,SFSpeechRecognizer)的音頻持續時間限制爲1分鐘。
在我的代碼中,我發現任何長度大約爲15秒或更長的音頻文件都會得到以下錯誤。
Error Domain = kAFAssistantErrorDomain Code = 203「Ses[email protected]50a8e246,Message =超時等待30000 ms後的命令」UserInfo = {NSLocalizedDescription = SessionId = com .msi.cortex.ace.speech.session.event.SpeechSessionId @ 50a8e246,Message =在30000 ms後等待命令超時,NSUnderlyingError = 0x170248c40 {Error Domain = SiriSpeechErrorDomain Code = 100「(null)」}}
I已經在互聯網上搜索,並沒有找到解決辦法。也有一些人有同樣的問題。有些人懷疑這是Nuance的問題。
同樣值得注意的是,我從轉錄過程中得到了部分結果。
以下是我的iOS應用程序中的代碼。 `//創建一個語音識別器請求對象。 讓srRequest = SFSpeechURLRecognitionRequest(網址:位置) srRequest.shouldReportPartialResults =假
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)
}
}
}
}
}`
謝謝您的幫助。
謝謝你的迴應。不幸的是,問題依然存在。我認爲這與Apple在不改變文檔的情況下改變音頻文件長度的限制有關。它也可能是預先錄製音頻的無證限制。 – itsSLO
@itsSLO您是否嘗試使用實況音頻饋送,即使用麥克風而不是預先錄製的文件? –
我還沒有,因爲我目前沒有用於此情況的用戶案例。據說,我相信使用實時音頻饋送將具有比預先錄製的音頻更高的限制。 – itsSLO