<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="texttospeech_v1beta1.html">Cloud Text-to-Speech API</a> . <a href="texttospeech_v1beta1.text.html">text</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#synthesize">synthesize(body, x__xgafv=None)</a></code></p>
<p class="firstline">Synthesizes speech synchronously: receive results after all text input</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="synthesize">synthesize(body, x__xgafv=None)</code>
  <pre>Synthesizes speech synchronously: receive results after all text input
has been processed.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # The top-level message sent by the client for the `SynthesizeSpeech` method.
    "input": { # Contains text input to be synthesized. Either `text` or `ssml` must be # Required. The Synthesizer requires either plain text or SSML as input.
        # supplied. Supplying both or neither returns
        # google.rpc.Code.INVALID_ARGUMENT. The input size is limited to 5000
        # characters.
      "ssml": "A String", # The SSML document to be synthesized. The SSML document must be valid
          # and well-formed. Otherwise the RPC will fail and return
          # google.rpc.Code.INVALID_ARGUMENT. For more information, see
          # [SSML](/speech/text-to-speech/docs/ssml).
      "text": "A String", # The raw text to be synthesized.
    },
    "voice": { # Description of which voice to use for a synthesis request. # Required. The desired voice of the synthesized audio.
      "ssmlGender": "A String", # The preferred gender of the voice. Optional; if not set, the service will
          # choose a voice based on the other parameters such as language_code and
          # name. Note that this is only a preference, not requirement; if a
          # voice of the appropriate gender is not available, the synthesizer should
          # substitute a voice with a different gender rather than failing the request.
      "languageCode": "A String", # The language (and optionally also the region) of the voice expressed as a
          # [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag, e.g.
          # "en-US". Required. This should not include a script tag (e.g. use
          # "cmn-cn" rather than "cmn-Hant-cn"), because the script will be inferred
          # from the input provided in the SynthesisInput.  The TTS service
          # will use this parameter to help choose an appropriate voice.  Note that
          # the TTS service may choose a voice with a slightly different language code
          # than the one selected; it may substitute a different region
          # (e.g. using en-US rather than en-CA if there isn't a Canadian voice
          # available), or even a different language, e.g. using "nb" (Norwegian
          # Bokmal) instead of "no" (Norwegian)".
      "name": "A String", # The name of the voice. Optional; if not set, the service will choose a
          # voice based on the other parameters such as language_code and gender.
    },
    "audioConfig": { # Description of audio data to be synthesized. # Required. The configuration of the synthesized audio.
      "audioEncoding": "A String", # Required. The format of the requested audio byte stream.
      "effectsProfileId": [ # An identifier which selects 'audio effects' profiles that are applied on
          # (post synthesized) text to speech.
          # Effects are applied on top of each other in the order they are given.
          # See
          #
          # [audio-profiles](https:
          # //cloud.google.com/text-to-speech/docs/audio-profiles)
          # for current supported profile ids.
        "A String",
      ],
      "sampleRateHertz": 42, # The synthesis sample rate (in hertz) for this audio. Optional.  If this is
          # different from the voice's natural sample rate, then the synthesizer will
          # honor this request by converting to the desired sample rate (which might
          # result in worse audio quality), unless the specified sample rate is not
          # supported for the encoding chosen, in which case it will fail the request
          # and return google.rpc.Code.INVALID_ARGUMENT.
      "pitch": 3.14, # Optional speaking pitch, in the range [-20.0, 20.0]. 20 means increase 20
          # semitones from the original pitch. -20 means decrease 20 semitones from the
          # original pitch.
      "speakingRate": 3.14, # Optional speaking rate/speed, in the range [0.25, 4.0]. 1.0 is the normal
          # native speed supported by the specific voice. 2.0 is twice as fast, and
          # 0.5 is half as fast. If unset(0.0), defaults to the native 1.0 speed. Any
          # other values < 0.25 or > 4.0 will return an error.
      "volumeGainDb": 3.14, # Optional volume gain (in dB) of the normal native volume supported by the
          # specific voice, in the range [-96.0, 16.0]. If unset, or set to a value of
          # 0.0 (dB), will play at normal native signal amplitude. A value of -6.0 (dB)
          # will play at approximately half the amplitude of the normal native signal
          # amplitude. A value of +6.0 (dB) will play at approximately twice the
          # amplitude of the normal native signal amplitude. Strongly recommend not to
          # exceed +10 (dB) as there's usually no effective increase in loudness for
          # any value greater than that.
    },
  }

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The message returned to the client by the `SynthesizeSpeech` method.
    "audioContent": "A String", # The audio data bytes encoded as specified in the request, including the
        # header (For LINEAR16 audio, we include the WAV header). Note: as
        # with all bytes fields, protobuffers use a pure binary representation,
        # whereas JSON representations use base64.
  }</pre>
</div>

</body></html>