登录
首页 >  Golang >  Go问答

语音 REST API 和 Go SDK API 之间的响应为何不同?

来源:stackoverflow

时间:2024-02-08 15:06:25 465浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《语音 REST API 和 Go SDK API 之间的响应为何不同?》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

通过 rest 调用 speech-to-text api 时,响应结构与使用 golang sdk 调用时略有不同。

例如,我通过 golang sdk 提交了一个异步语音作业。下面我展示了通过 2 种不同的方法(rest 和 go sdk)在 google 云中查询转录作业结果的结果,结果略有不同。

方法 1:rest 调用

get https://speech.googleapis.com/v1/operations/{id}

{id} 是操作 id,例如 (2593790426826555555)

结果 1,驼峰式属性,其中 string 类型为 starttime endtime 属性。

"words": [
  {
    "starttime": "0s",
    "endtime": "0.400s",
    "word": "we",
    "confidence": 0.98762906
  },
...

方法二:使用sdk

// omitting err handling,
client, err := speech.newclient(ctx)
op, err := client.lroclient.getoperation(ctx, &lropb.getoperationrequest{name: id})
resp := new(speechpb.longrunningrecognizeresponse)
err = op.getresponse().unmarshalto(resp)
js, err := json.marshal(resp)
ioutil.writefile("sdk-response.json", js, 0644)

结果2,start_time/end_time的snake_cased对象类型

"words": [
{
  "start_time": {},
  "end_time": {
    "nanos": 400000000
  },
  "word": "we",
  "confidence": 0.98762906
},
...

如果您在 sdk 代码中查找类型信息,它确实使用 start_time 作为 json 标记,所以我认为这是预期的行为。或者我可能错误地使用 op.getresponse().unmarshalto(resp) 解组响应?如有任何帮助或建议,我们将不胜感激。

StartTime *durationpb.Duration `protobuf:"bytes,1,opt,name=start_time,json=startTime,proto3" json:"start_time,omitempty"`

使用 go 1.18.1 和 cloud.google.com/go/speech v1.4.0

更新,详细说明问题的基本原理 我有 2 组通过不同方法(存储桶与 sdk)下载的记录。其中一个是从 google 云存储桶中提取的,并由 google 以 camcelcased 的形式保存在桶中(与 rest api 的格式相同)。我有另一组从 sdk api 中提取的记录,并在 golang 中使用 json 编码进行持久化,该记录根据 sdk 的结构布局应用 snake_casing。

编写一些代码来纠正/标准化为单一格式并不是什么大不了的事,但在我看来,这有点不一致。提出问题是为了了解我是否做错了什么并且可以纠正,或者这是否是预期的。


正确答案


JSON 编组的 Golang(结构)是 protobuf(snake_case'd 字段,时间为 google.protobuf.Timestamp)。

您可以尝试使用 Golang protobuf protojson 包而不是encoding/json,因为这应该双射映射 JSON 和 Golang protobuf 结构。

以上就是《语音 REST API 和 Go SDK API 之间的响应为何不同?》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>