首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌云语音API响应:解析iOS

谷歌云语音API响应:解析iOS
EN

Stack Overflow用户
提问于 2017-02-06 07:07:14
回答 2查看 826关注 0票数 1

我正在尝试将google云语音API集成到我的演示应用程序中。我得到的结果如下:

代码语言:javascript
复制
    {
    results {
      alternatives {
        transcript: "hello"
      }
      stability: 0.01
    }
}

获得响应的代码:

代码语言:javascript
复制
[[SpeechRecognitionService sharedInstance] streamAudioData:self.audioData
                                                withCompletion:^(StreamingRecognizeResponse *response, NSError *error) {
                                                  if (error) {
                                                    NSLog(@"ERROR: %@", error);
                                                    _textView.text = [error localizedDescription];
                                                    [self stopAudio:nil];
                                                  } else if (response) {
                                                    BOOL finished = NO;
                                                    //NSLog(@"RESPONSE: %@", response.resultsArray);
                                                    for (StreamingRecognitionResult *result in response.resultsArray) {
                                                        NSLog(@"result : %@",result);
                                                        //_textView.text = result.alternatives.transcript;
                                                      if (result.isFinal) {
                                                        finished = YES;
                                                      }
                                                    }

                                                    if (finished) {
                                                      [self stopAudio:nil];
                                                    }
                                                  }
                                                }
     ];

我的问题是,我得到的响应不是正确的JSON,那么如何获得键transcript的值呢?任何帮助都将不胜感激。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-07 09:35:32

对于正在寻找这个问题的解决方案的人来说:

代码语言:javascript
复制
for (StreamingRecognitionResult *result in response.resultsArray) {
    for (StreamingRecognitionResult *alternative in result.alternativesArray) {
        _textView.text = [NSString stringWithFormat:@"%@",[alternative valueForKey:@"transcript"]];
    }
    if (result.isFinal) {
        finished = YES;
    }
}

这就是我为连续获得transcript值所做的事情。

票数 1
EN

Stack Overflow用户

发布于 2018-01-30 09:15:47

下面是在Swift4 4/iOS11.2.5上解决问题的代码,请欣赏!:

代码语言:javascript
复制
SpeechRecognitionService.sharedInstance.streamAudioData(audioData, completion:
{ [weak self] (response, error) in
    guard let strongSelf = self else {
        return
    }
    if let error = error {
        print("*** Streaming ASR ERROR: "+error.localizedDescription)
    } else if let response = response {
        for result in response.resultsArray {
            print("result i: ")  //log to console
            print(result)
            if let alternative = result as? StreamingRecognitionResult {
                for a in alternative.alternativesArray{
                    if let ai = a as? SpeechRecognitionAlternative{
                        print("alternative i: ")  //log to console
                        print(ai)
                        if(alternative.isFinal){
                            print("*** FINAL ASR result: "+ai.transcript)
                            strongSelf.stopGoogleStreamingASR(strongSelf)
                        }
                        else{
                            print("*** PARTIAL ASR result: "+ai.transcript)
                        }
                    }
                }
                
            }
            else{
                print("ERROR: let alternative = result as? StreamingRecognitionResult")
            }
        }
    }
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42062099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档