我正在尝试获取"成绩单"来自以下结果的值:
{
transcript: "1 2 3 4"
confidence: 0.902119
words {
start_time {
nanos: 200000000
}
end_time {
nanos: 700000000
}
word: "1"
}
words {
start_time {
nanos: 700000000
}
end_time {
nanos: 900000000
}
word: "2"
}
words {
start_time {
nanos: 900000000
}
end_time {
seconds: 1
}
word: "3"
}
words {
start_time {
seconds: 1
}
end_time {
seconds: 1
nanos: 300000000
}
word: "4"
}
}
我写的代码是:
结果在response.resultsArray! {
if let result = result as? StreamingRecognitionResult {
for alternative in result.alternativesArray {
if let alternative = alternative as? StreamingRecognitionResult {
textView.text = "\(alternative["transcript"])"
}
}
}
}
所以,当我试图将值放在textview.text中时,我收到一条错误说明:
"输入' StreamingRecognitionResult'没有下标成员"。
请帮忙。
答案 0 :(得分:2)
关键行是:
let tmpBestResult = (response.resultsArray.firstObject as! StreamingRecognitionResult)
let tmpBestAlternativeOfResult = tmpBestResult.alternativesArray.firstObject as! SpeechRecognitionAlternative
let bestTranscript = tmpBestAlternativeOfResult.transcript
这些行在streamAudioData()中的位置如下:
SpeechRecognitionService.sharedInstance.streamAudioData(audioData,languageCode: self.selectedLangType.rawValue,
completion:
{ [weak self] (response, error) in
guard let strongSelf = self else {
return
}
if let error = error {
debugPrint(">>)) Process_delegate error >> \(error.localizedDescription)")
strongSelf.stopRecordingSpeech()
self?.delegate.conversionDidFail(errorMsg: error.localizedDescription)
} else if let response = response {
var finished = false
debugPrint(response)
for result in response.resultsArray! {
if let result = result as? StreamingRecognitionResult {
if result.isFinal {
finished = true
}
}
}
let tmpBestResult = (response.resultsArray.firstObject as! StreamingRecognitionResult)
let tmpBestAlternativeOfResult = tmpBestResult.alternativesArray.firstObject as! SpeechRecognitionAlternative
let bestTranscript = tmpBestAlternativeOfResult.transcript
strongSelf.delegate.conversionOnProcess(intermediateTranscript: bestTranscript!, isFinal: finished)
if finished {
//UI
strongSelf.stopRecordingSpeech()
strongSelf.delegate.conversionDidFinish(finalTranscript: bestTranscript!)
}
}
})
快乐编码;)
答案 1 :(得分:0)
因此代码将更改为:
for alternative in result.alternativesArray {
if let alternative1 = alternative as? SpeechRecognitionAlternative {
textView.text = "\(alternative1.transcript)"
}
}