in api/simultaneousinterpreter/translate_speech.go [45:79]
func (h *handler) translateSpeech(w http.ResponseWriter, r *http.Request) {
ctx := r.Context()
req := &translateSpeechRequest{}
if err := hd.DecodeJSONBody(r, req); err != nil {
hd.RespondErrorJSON(w, r, err)
return
}
if req.Config.LanguageCode == "" {
hd.RespondErrorMessage(w, r,
http.StatusBadRequest,
"language_code must be specified")
return
}
text, err := h.speechToText(ctx, req.Config.LanguageCode, req.Audio.Content)
if err != nil {
hd.RespondErrorJSON(w, r, err)
return
}
translations, err := h.translate(ctx, req.Config.LanguageCode, text)
if err != nil {
hd.RespondErrorJSON(w, r, err)
return
}
res := &translateSpeechResponse{
LanguageCode: req.Config.LanguageCode,
Translations: translations,
}
hd.RespondJSON(w, r, http.StatusOK, res)
}