docs: def update_voice_model(self,
                             customization_id,
                             name=None,
                             description=None,
                             words=None,
                             **kwargs):
          """
          Update a custom model.
  
          Updates information for the specified custom voice model. You can update metadata
          such as the name and description of the voice model. You can also update the words
          in the model and their translations. Adding a new translation for a word that
          already exists in a custom model overwrites the word's existing translation. A
          custom model can contain no more than 20,000 entries. You must use credentials for
          the instance of the service that owns a model to update it.
          You can define sounds-like or phonetic translations for words. A sounds-like
          translation consists of one or more words that, when combined, sound like the
          word. Phonetic translations are based on the SSML phoneme format for representing
          a word. You can specify them in standard International Phonetic Alphabet (IPA)
          representation
            <code>&lt;phoneme alphabet=\"ipa\"
          ph=\"t&#601;m&#712;&#593;to\"&gt;&lt;/phoneme&gt;</code>
            or in the proprietary IBM Symbolic Phonetic Representation (SPR)
            <code>&lt;phoneme alphabet=\"ibm\"
          ph=\"1gAstroEntxrYFXs\"&gt;&lt;/phoneme&gt;</code>
          **Note:** This method is currently a beta release.
          **See also:**
          * [Updating a custom
          model](https://cloud.ibm.com/docs/services/text-to-speech/custom-models.html#cuModelsUpdate)
          * [Adding words to a Japanese custom
          model](https://cloud.ibm.com/docs/services/text-to-speech/custom-entries.html#cuJapaneseAdd)
          * [Understanding
          customization](https://cloud.ibm.com/docs/services/text-to-speech/custom-intro.html).
  
          :param str customization_id: The customization ID (GUID) of the custom voice
          model. You must make the request with service credentials created for the instance
          of the service that owns the custom model.
          :param str name: A new name for the custom voice model.
          :param str description: A new description for the custom voice model.
          :param list[Word] words: An array of `Word` objects that provides the words and
          their translations that are to be added or updated for the custom voice model.
          Pass an empty array to make no additions or updates.
          :param dict headers: A `dict` containing the request headers
          :return: A `DetailedResponse` containing the result, headers and HTTP status code.
          :rtype: DetailedResponse
          """
  
          if customization_id is None:
              raise ValueError('customization_id must be provided')
          if words is not None:
              words = [self._convert_model(x, Word) for x in words]
  
          headers = {}
          if 'headers' in kwargs:
              headers.update(kwargs.get('headers'))
          sdk_headers = get_sdk_headers('text_to_speech', 'V1',
                                        'update_voice_model')
          headers.update(sdk_headers)
  
          data = {'name': name, 'description': description, 'words': words}
  
          url = '/v1/customizations/{0}'.format(
              *self._encode_path_vars(customization_id))
          response = self.request(
              method='POST',
              url=url,
              headers=headers,
              json=data,
              accept_json=True)
          return response