code: public ServiceCall<VoiceModel> createVoiceModel(CreateVoiceModelOptions createVoiceModelOptions) {
      Validator.notNull(createVoiceModelOptions, "createVoiceModelOptions cannot be null");
      String[] pathSegments = { "v1/customizations" };
      RequestBuilder builder = RequestBuilder.post(RequestBuilder.constructHttpUrl(getEndPoint(), pathSegments));
      Map<String, String> sdkHeaders = SdkCommon.getSdkHeaders("text_to_speech", "v1", "createVoiceModel");
      for (Entry<String, String> header : sdkHeaders.entrySet()) {
        builder.header(header.getKey(), header.getValue());
      }
      builder.header("Accept", "application/json");
      final JsonObject contentJson = new JsonObject();
      contentJson.addProperty("name", createVoiceModelOptions.name());
      if (createVoiceModelOptions.language() != null) {
        contentJson.addProperty("language", createVoiceModelOptions.language());
      }
      if (createVoiceModelOptions.description() != null) {
        contentJson.addProperty("description", createVoiceModelOptions.description());
      }
      builder.bodyJson(contentJson);
      return createServiceCall(builder.build(), ResponseConverterUtils.getObject(VoiceModel.class));
    }
docs: Create a custom model.
  
  Creates a new empty custom voice model. You must specify a name for the new custom model. You can optionally
  specify the language and a description for the new model. The model is owned by the instance of the service whose
  credentials are used to create it.
  
  **Note:** This method is currently a beta release.
  
  **See also:** [Creating a custom
  model](https://cloud.ibm.com/docs/services/text-to-speech/custom-models.html#cuModelsCreate).
  
  @param createVoiceModelOptions the {@link CreateVoiceModelOptions} containing the options for the call
  @return a {@link ServiceCall} with a response type of {@link VoiceModel}