blob: 7da3cb5681a4635c71679747db354920767619f4 [file] [log] [blame]
// Copyright 2020 Google LLC.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// Code generated file. DO NOT EDIT.
// Package texttospeech provides access to the Cloud Text-to-Speech API.
//
// This package is DEPRECATED. Use package cloud.google.com/go/texttospeech/apiv1 instead.
//
// For product documentation, see: https://cloud.google.com/text-to-speech/
//
// Creating a client
//
// Usage example:
//
// import "google.golang.org/api/texttospeech/v1beta1"
// ...
// ctx := context.Background()
// texttospeechService, err := texttospeech.NewService(ctx)
//
// In this example, Google Application Default Credentials are used for authentication.
//
// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
//
// Other authentication options
//
// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
//
// texttospeechService, err := texttospeech.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
//
// config := &oauth2.Config{...}
// // ...
// token, err := config.Exchange(ctx, ...)
// texttospeechService, err := texttospeech.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See https://godoc.org/google.golang.org/api/option/ for details on options.
package texttospeech // import "google.golang.org/api/texttospeech/v1beta1"
import (
"bytes"
"context"
"encoding/json"
"errors"
"fmt"
"io"
"net/http"
"net/url"
"strconv"
"strings"
googleapi "google.golang.org/api/googleapi"
gensupport "google.golang.org/api/internal/gensupport"
option "google.golang.org/api/option"
internaloption "google.golang.org/api/option/internaloption"
htransport "google.golang.org/api/transport/http"
)
// Always reference these packages, just in case the auto-generated code
// below doesn't.
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = internaloption.WithDefaultEndpoint
const apiId = "texttospeech:v1beta1"
const apiName = "texttospeech"
const apiVersion = "v1beta1"
const basePath = "https://texttospeech.googleapis.com/"
// OAuth2 scopes used by this API.
const (
// View and manage your data across Google Cloud Platform services
CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
)
// NewService creates a new Service.
func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
scopesOption := option.WithScopes(
"https://www.googleapis.com/auth/cloud-platform",
)
// NOTE: prepend, so we don't override user-specified scopes.
opts = append([]option.ClientOption{scopesOption}, opts...)
opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
client, endpoint, err := htransport.NewClient(ctx, opts...)
if err != nil {
return nil, err
}
s, err := New(client)
if err != nil {
return nil, err
}
if endpoint != "" {
s.BasePath = endpoint
}
return s, nil
}
// New creates a new Service. It uses the provided http.Client for requests.
//
// Deprecated: please use NewService instead.
// To provide a custom HTTP client, use option.WithHTTPClient.
// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
func New(client *http.Client) (*Service, error) {
if client == nil {
return nil, errors.New("client is nil")
}
s := &Service{client: client, BasePath: basePath}
s.Text = NewTextService(s)
s.Voices = NewVoicesService(s)
return s, nil
}
type Service struct {
client *http.Client
BasePath string // API endpoint base URL
UserAgent string // optional additional User-Agent fragment
Text *TextService
Voices *VoicesService
}
func (s *Service) userAgent() string {
if s.UserAgent == "" {
return googleapi.UserAgent
}
return googleapi.UserAgent + " " + s.UserAgent
}
func NewTextService(s *Service) *TextService {
rs := &TextService{s: s}
return rs
}
type TextService struct {
s *Service
}
func NewVoicesService(s *Service) *VoicesService {
rs := &VoicesService{s: s}
return rs
}
type VoicesService struct {
s *Service
}
// AudioConfig: Description of audio data to be synthesized.
type AudioConfig struct {
// AudioEncoding: Required. The format of the audio byte stream.
//
// Possible values:
// "AUDIO_ENCODING_UNSPECIFIED" - Not specified. Will return result
// google.rpc.Code.INVALID_ARGUMENT.
// "LINEAR16" - Uncompressed 16-bit signed little-endian samples
// (Linear PCM).
// Audio content returned as LINEAR16 also contains a WAV header.
// "MP3" - MP3 audio at 32kbps.
// "OGG_OPUS" - Opus encoded audio wrapped in an ogg container. The
// result will be a
// file which can be played natively on Android, and in browsers (at
// least
// Chrome and Firefox). The quality of the encoding is considerably
// higher
// than MP3 while using approximately the same bitrate.
AudioEncoding string `json:"audioEncoding,omitempty"`
// EffectsProfileId: Optional. Input only. 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/audi
// o-profiles) for
// current supported profile ids.
EffectsProfileId []string `json:"effectsProfileId,omitempty"`
// Pitch: Optional. Input only. 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.
Pitch float64 `json:"pitch,omitempty"`
// SampleRateHertz: Optional. The synthesis sample rate (in hertz) for
// this audio. When this is
// specified in SynthesizeSpeechRequest, 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.
SampleRateHertz int64 `json:"sampleRateHertz,omitempty"`
// SpeakingRate: Optional. Input only. 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.
SpeakingRate float64 `json:"speakingRate,omitempty"`
// VolumeGainDb: Optional. Input only. 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.
VolumeGainDb float64 `json:"volumeGainDb,omitempty"`
// ForceSendFields is a list of field names (e.g. "AudioEncoding") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "AudioEncoding") to include
// in API requests with the JSON null value. By default, fields with
// empty values are omitted from API requests. However, any field with
// an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *AudioConfig) MarshalJSON() ([]byte, error) {
type NoMethod AudioConfig
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
func (s *AudioConfig) UnmarshalJSON(data []byte) error {
type NoMethod AudioConfig
var s1 struct {
Pitch gensupport.JSONFloat64 `json:"pitch"`
SpeakingRate gensupport.JSONFloat64 `json:"speakingRate"`
VolumeGainDb gensupport.JSONFloat64 `json:"volumeGainDb"`
*NoMethod
}
s1.NoMethod = (*NoMethod)(s)
if err := json.Unmarshal(data, &s1); err != nil {
return err
}
s.Pitch = float64(s1.Pitch)
s.SpeakingRate = float64(s1.SpeakingRate)
s.VolumeGainDb = float64(s1.VolumeGainDb)
return nil
}
// ListVoicesResponse: The message returned to the client by the
// `ListVoices` method.
type ListVoicesResponse struct {
// Voices: The list of voices.
Voices []*Voice `json:"voices,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
// server.
googleapi.ServerResponse `json:"-"`
// ForceSendFields is a list of field names (e.g. "Voices") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "Voices") to include in API
// requests with the JSON null value. By default, fields with empty
// values are omitted from API requests. However, any field with an
// empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *ListVoicesResponse) MarshalJSON() ([]byte, error) {
type NoMethod ListVoicesResponse
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// SynthesisInput: Contains text input to be synthesized. Either `text`
// or `ssml` must be
// supplied. Supplying both or neither
// returns
// google.rpc.Code.INVALID_ARGUMENT. The input size is limited to
// 5000
// characters.
type SynthesisInput struct {
// Ssml: 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).
Ssml string `json:"ssml,omitempty"`
// Text: The raw text to be synthesized.
Text string `json:"text,omitempty"`
// ForceSendFields is a list of field names (e.g. "Ssml") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "Ssml") to include in API
// requests with the JSON null value. By default, fields with empty
// values are omitted from API requests. However, any field with an
// empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *SynthesisInput) MarshalJSON() ([]byte, error) {
type NoMethod SynthesisInput
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// SynthesizeSpeechRequest: The top-level message sent by the client for
// the `SynthesizeSpeech` method.
type SynthesizeSpeechRequest struct {
// AudioConfig: Required. The configuration of the synthesized audio.
AudioConfig *AudioConfig `json:"audioConfig,omitempty"`
// Input: Required. The Synthesizer requires either plain text or SSML
// as input.
Input *SynthesisInput `json:"input,omitempty"`
// Voice: Required. The desired voice of the synthesized audio.
Voice *VoiceSelectionParams `json:"voice,omitempty"`
// ForceSendFields is a list of field names (e.g. "AudioConfig") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "AudioConfig") to include
// in API requests with the JSON null value. By default, fields with
// empty values are omitted from API requests. However, any field with
// an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *SynthesizeSpeechRequest) MarshalJSON() ([]byte, error) {
type NoMethod SynthesizeSpeechRequest
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// SynthesizeSpeechResponse: The message returned to the client by the
// `SynthesizeSpeech` method.
type SynthesizeSpeechResponse struct {
// AudioContent: The audio data bytes encoded as specified in the
// request, including the
// header for encodings that are wrapped in containers (e.g. MP3,
// OGG_OPUS).
// 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.
AudioContent string `json:"audioContent,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
// server.
googleapi.ServerResponse `json:"-"`
// ForceSendFields is a list of field names (e.g. "AudioContent") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "AudioContent") to include
// in API requests with the JSON null value. By default, fields with
// empty values are omitted from API requests. However, any field with
// an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *SynthesizeSpeechResponse) MarshalJSON() ([]byte, error) {
type NoMethod SynthesizeSpeechResponse
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// Voice: Description of a voice supported by the TTS service.
type Voice struct {
// LanguageCodes: The languages that this voice supports, expressed
// as
// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tags
// (e.g.
// "en-US", "es-419", "cmn-tw").
LanguageCodes []string `json:"languageCodes,omitempty"`
// Name: The name of this voice. Each distinct voice has a unique name.
Name string `json:"name,omitempty"`
// NaturalSampleRateHertz: The natural sample rate (in hertz) for this
// voice.
NaturalSampleRateHertz int64 `json:"naturalSampleRateHertz,omitempty"`
// SsmlGender: The gender of this voice.
//
// Possible values:
// "SSML_VOICE_GENDER_UNSPECIFIED" - An unspecified gender.
// In VoiceSelectionParams, this means that the client doesn't care
// which
// gender the selected voice will have. In the Voice field
// of
// ListVoicesResponse, this may mean that the voice doesn't fit any of
// the
// other categories in this enum, or that the gender of the voice isn't
// known.
// "MALE" - A male voice.
// "FEMALE" - A female voice.
// "NEUTRAL" - A gender-neutral voice.
SsmlGender string `json:"ssmlGender,omitempty"`
// ForceSendFields is a list of field names (e.g. "LanguageCodes") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "LanguageCodes") to include
// in API requests with the JSON null value. By default, fields with
// empty values are omitted from API requests. However, any field with
// an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *Voice) MarshalJSON() ([]byte, error) {
type NoMethod Voice
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// VoiceSelectionParams: Description of which voice to use for a
// synthesis request.
type VoiceSelectionParams struct {
// LanguageCode: Required. The language (and potentially 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". 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)".
LanguageCode string `json:"languageCode,omitempty"`
// Name: The name of the voice. If not set, the service will choose
// a
// voice based on the other parameters such as language_code and gender.
Name string `json:"name,omitempty"`
// SsmlGender: The preferred gender of the voice. 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.
//
// Possible values:
// "SSML_VOICE_GENDER_UNSPECIFIED" - An unspecified gender.
// In VoiceSelectionParams, this means that the client doesn't care
// which
// gender the selected voice will have. In the Voice field
// of
// ListVoicesResponse, this may mean that the voice doesn't fit any of
// the
// other categories in this enum, or that the gender of the voice isn't
// known.
// "MALE" - A male voice.
// "FEMALE" - A female voice.
// "NEUTRAL" - A gender-neutral voice.
SsmlGender string `json:"ssmlGender,omitempty"`
// ForceSendFields is a list of field names (e.g. "LanguageCode") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
// NullFields is a list of field names (e.g. "LanguageCode") to include
// in API requests with the JSON null value. By default, fields with
// empty values are omitted from API requests. However, any field with
// an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
func (s *VoiceSelectionParams) MarshalJSON() ([]byte, error) {
type NoMethod VoiceSelectionParams
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
// method id "texttospeech.text.synthesize":
type TextSynthesizeCall struct {
s *Service
synthesizespeechrequest *SynthesizeSpeechRequest
urlParams_ gensupport.URLParams
ctx_ context.Context
header_ http.Header
}
// Synthesize: Synthesizes speech synchronously: receive results after
// all text input
// has been processed.
func (r *TextService) Synthesize(synthesizespeechrequest *SynthesizeSpeechRequest) *TextSynthesizeCall {
c := &TextSynthesizeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
c.synthesizespeechrequest = synthesizespeechrequest
return c
}
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *TextSynthesizeCall) Fields(s ...googleapi.Field) *TextSynthesizeCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *TextSynthesizeCall) Context(ctx context.Context) *TextSynthesizeCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *TextSynthesizeCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
func (c *TextSynthesizeCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200311")
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
var body io.Reader = nil
body, err := googleapi.WithoutDataWrapper.JSONReader(c.synthesizespeechrequest)
if err != nil {
return nil, err
}
reqHeaders.Set("Content-Type", "application/json")
c.urlParams_.Set("alt", alt)
c.urlParams_.Set("prettyPrint", "false")
urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/text:synthesize")
urls += "?" + c.urlParams_.Encode()
req, err := http.NewRequest("POST", urls, body)
if err != nil {
return nil, err
}
req.Header = reqHeaders
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
// Do executes the "texttospeech.text.synthesize" call.
// Exactly one of *SynthesizeSpeechResponse or error will be non-nil.
// Any non-2xx status code is an error. Response headers are in either
// *SynthesizeSpeechResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *TextSynthesizeCall) Do(opts ...googleapi.CallOption) (*SynthesizeSpeechResponse, error) {
gensupport.SetOptions(c.urlParams_, opts...)
res, err := c.doRequest("json")
if res != nil && res.StatusCode == http.StatusNotModified {
if res.Body != nil {
res.Body.Close()
}
return nil, &googleapi.Error{
Code: res.StatusCode,
Header: res.Header,
}
}
if err != nil {
return nil, err
}
defer googleapi.CloseBody(res)
if err := googleapi.CheckResponse(res); err != nil {
return nil, err
}
ret := &SynthesizeSpeechResponse{
ServerResponse: googleapi.ServerResponse{
Header: res.Header,
HTTPStatusCode: res.StatusCode,
},
}
target := &ret
if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
// {
// "description": "Synthesizes speech synchronously: receive results after all text input\nhas been processed.",
// "flatPath": "v1beta1/text:synthesize",
// "httpMethod": "POST",
// "id": "texttospeech.text.synthesize",
// "parameterOrder": [],
// "parameters": {},
// "path": "v1beta1/text:synthesize",
// "request": {
// "$ref": "SynthesizeSpeechRequest"
// },
// "response": {
// "$ref": "SynthesizeSpeechResponse"
// },
// "scopes": [
// "https://www.googleapis.com/auth/cloud-platform"
// ]
// }
}
// method id "texttospeech.voices.list":
type VoicesListCall struct {
s *Service
urlParams_ gensupport.URLParams
ifNoneMatch_ string
ctx_ context.Context
header_ http.Header
}
// List: Returns a list of Voice supported for synthesis.
func (r *VoicesService) List() *VoicesListCall {
c := &VoicesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
return c
}
// LanguageCode sets the optional parameter "languageCode":
// Recommended.
// [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag.
// If
// specified, the ListVoices call will only return voices that can be
// used to
// synthesize this language_code. E.g. when specifying "en-NZ", you will
// get
// supported "en-*" voices; when specifying "no", you will get
// supported
// "no-*" (Norwegian) and "nb-*" (Norwegian Bokmal) voices; specifying
// "zh"
// will also get supported "cmn-*" voices; specifying "zh-hk" will also
// get
// supported "yue-*" voices.
func (c *VoicesListCall) LanguageCode(languageCode string) *VoicesListCall {
c.urlParams_.Set("languageCode", languageCode)
return c
}
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
func (c *VoicesListCall) Fields(s ...googleapi.Field) *VoicesListCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *VoicesListCall) IfNoneMatch(entityTag string) *VoicesListCall {
c.ifNoneMatch_ = entityTag
return c
}
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *VoicesListCall) Context(ctx context.Context) *VoicesListCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
func (c *VoicesListCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
func (c *VoicesListCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200311")
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
if c.ifNoneMatch_ != "" {
reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
}
var body io.Reader = nil
c.urlParams_.Set("alt", alt)
c.urlParams_.Set("prettyPrint", "false")
urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/voices")
urls += "?" + c.urlParams_.Encode()
req, err := http.NewRequest("GET", urls, body)
if err != nil {
return nil, err
}
req.Header = reqHeaders
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
// Do executes the "texttospeech.voices.list" call.
// Exactly one of *ListVoicesResponse or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *ListVoicesResponse.ServerResponse.Header or (if a response was
// returned at all) in error.(*googleapi.Error).Header. Use
// googleapi.IsNotModified to check whether the returned error was
// because http.StatusNotModified was returned.
func (c *VoicesListCall) Do(opts ...googleapi.CallOption) (*ListVoicesResponse, error) {
gensupport.SetOptions(c.urlParams_, opts...)
res, err := c.doRequest("json")
if res != nil && res.StatusCode == http.StatusNotModified {
if res.Body != nil {
res.Body.Close()
}
return nil, &googleapi.Error{
Code: res.StatusCode,
Header: res.Header,
}
}
if err != nil {
return nil, err
}
defer googleapi.CloseBody(res)
if err := googleapi.CheckResponse(res); err != nil {
return nil, err
}
ret := &ListVoicesResponse{
ServerResponse: googleapi.ServerResponse{
Header: res.Header,
HTTPStatusCode: res.StatusCode,
},
}
target := &ret
if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
// {
// "description": "Returns a list of Voice supported for synthesis.",
// "flatPath": "v1beta1/voices",
// "httpMethod": "GET",
// "id": "texttospeech.voices.list",
// "parameterOrder": [],
// "parameters": {
// "languageCode": {
// "description": "Optional. Recommended.\n[BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag. If\nspecified, the ListVoices call will only return voices that can be used to\nsynthesize this language_code. E.g. when specifying \"en-NZ\", you will get\nsupported \"en-*\" voices; when specifying \"no\", you will get supported\n\"no-*\" (Norwegian) and \"nb-*\" (Norwegian Bokmal) voices; specifying \"zh\"\nwill also get supported \"cmn-*\" voices; specifying \"zh-hk\" will also get\nsupported \"yue-*\" voices.",
// "location": "query",
// "type": "string"
// }
// },
// "path": "v1beta1/voices",
// "response": {
// "$ref": "ListVoicesResponse"
// },
// "scopes": [
// "https://www.googleapis.com/auth/cloud-platform"
// ]
// }
}