通過(guò) REST 調(diào)用 Speech-To-Text API 時(shí),響應(yīng)結(jié)構(gòu)與使用 Golang SDK 調(diào)用時(shí)略有不同。例如,我通過(guò) golang SDK 提交了一個(gè)異步語(yǔ)音作業(yè)。然后在下面我顯示了通過(guò) 2 種不同的方法查詢谷歌云的轉(zhuǎn)錄作業(yè)結(jié)果的結(jié)果,REST 和 go SDK 的結(jié)果略有不同。方法一:REST調(diào)用GET https://speech.googleapis.com/v1/operations/{id}{id} 是操作 id,例如 (2593790426826555555)string結(jié)果 1,具有類型化屬性的駝峰式屬性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)結(jié)果 2,snake_cased 對(duì)象類型為start_time/end_time"words": [{ "start_time": {}, "end_time": { "nanos": 400000000 }, "word": "We", "confidence": 0.98762906},...如果您在 SDK 代碼中查找類型信息,它會(huì)start_time用作 json 標(biāo)記,所以我想這是預(yù)期的行為?;蛘呶铱赡苠e(cuò)誤地解組了響應(yīng)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更新,詳細(xì)說(shuō)明問題的基本原理我有 2 套成績(jī)單是通過(guò)不同的方法(存儲(chǔ)桶與 SDK)下載的。一個(gè)是從 Google 云存儲(chǔ)桶中提取的,這些存儲(chǔ)桶由 Google 在桶中以 camcelCased 的形式保存(與 REST API 的格式相同)。我有另一組從 SDK API 中提取并使用 golang 中的 json 編碼保留的轉(zhuǎn)錄本,它根據(jù) SDK 的結(jié)構(gòu)布局應(yīng)用 snake_casing。編寫一些代碼來(lái)糾正/規(guī)范化為單一格式并不是什么大不了的事情,但在我看來(lái)這有點(diǎn)不一致。提出問題以了解我是否做錯(cuò)了什么并且可以糾正或者是否可以預(yù)期。
1 回答

RISEBY
TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個(gè)贊
JSON 編組的 Golang(結(jié)構(gòu))是 protobufs(snake_case'd 字段和時(shí)間是google.protobuf.Timestamp
)。
您能否嘗試使用 Golang protobufprotojson
包而不是 encoding/json,因?yàn)檫@應(yīng)該雙射映射 JSON 和 Golang protobuf 結(jié)構(gòu)。
- 1 回答
- 0 關(guān)注
- 93 瀏覽
添加回答
舉報(bào)
0/150
提交
取消