func()

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)
}