docs: public ServiceCall<SpeechRecognitionResults> recognize(RecognizeOptions recognizeOptions) {
      Validator.notNull(recognizeOptions, "recognizeOptions cannot be null");
      String[] pathSegments = { "v1/recognize" };
      RequestBuilder builder = RequestBuilder.post(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments));
      Map<String, String> sdkHeaders = SdkCommon.getSdkHeaders("speech_to_text", "v1", "recognize");
      for (Entry<String, String> header : sdkHeaders.entrySet()) {
        builder.header(header.getKey(), header.getValue());
      }
      builder.header("Accept", "application/json");
      if (recognizeOptions.contentType() != null) {
        builder.header("Content-Type", recognizeOptions.contentType());
      }
      if (recognizeOptions.model() != null) {
        builder.query("model", recognizeOptions.model());
      }
      if (recognizeOptions.languageCustomizationId() != null) {
        builder.query("language_customization_id", recognizeOptions.languageCustomizationId());
      }
      if (recognizeOptions.acousticCustomizationId() != null) {
        builder.query("acoustic_customization_id", recognizeOptions.acousticCustomizationId());
      }
      if (recognizeOptions.baseModelVersion() != null) {
        builder.query("base_model_version", recognizeOptions.baseModelVersion());
      }
      if (recognizeOptions.customizationWeight() != null) {
        builder.query("customization_weight", String.valueOf(recognizeOptions.customizationWeight()));
      }
      if (recognizeOptions.inactivityTimeout() != null) {
        builder.query("inactivity_timeout", String.valueOf(recognizeOptions.inactivityTimeout()));
      }
      if (recognizeOptions.keywords() != null) {
        builder.query("keywords", RequestUtils.join(recognizeOptions.keywords(), ","));
      }
      if (recognizeOptions.keywordsThreshold() != null) {
        builder.query("keywords_threshold", String.valueOf(recognizeOptions.keywordsThreshold()));
      }
      if (recognizeOptions.maxAlternatives() != null) {
        builder.query("max_alternatives", String.valueOf(recognizeOptions.maxAlternatives()));
      }
      if (recognizeOptions.wordAlternativesThreshold() != null) {
        builder.query("word_alternatives_threshold", String.valueOf(recognizeOptions.wordAlternativesThreshold()));
      }
      if (recognizeOptions.wordConfidence() != null) {
        builder.query("word_confidence", String.valueOf(recognizeOptions.wordConfidence()));
      }
      if (recognizeOptions.timestamps() != null) {
        builder.query("timestamps", String.valueOf(recognizeOptions.timestamps()));
      }
      if (recognizeOptions.profanityFilter() != null) {
        builder.query("profanity_filter", String.valueOf(recognizeOptions.profanityFilter()));
      }
      if (recognizeOptions.smartFormatting() != null) {
        builder.query("smart_formatting", String.valueOf(recognizeOptions.smartFormatting()));
      }
      if (recognizeOptions.speakerLabels() != null) {
        builder.query("speaker_labels", String.valueOf(recognizeOptions.speakerLabels()));
      }
      if (recognizeOptions.customizationId() != null) {
        builder.query("customization_id", recognizeOptions.customizationId());
      }
      if (recognizeOptions.grammarName() != null) {
        builder.query("grammar_name", recognizeOptions.grammarName());
      }
      if (recognizeOptions.redaction() != null) {
        builder.query("redaction", String.valueOf(recognizeOptions.redaction()));
      }
      builder.bodyContent(recognizeOptions.contentType(), null, null, recognizeOptions.audio());
      return createServiceCall(builder.build(), ResponseConverterUtils.getObject(SpeechRecognitionResults.class));
    }