azuretts

package module
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 19, 2024 License: Apache-2.0 Imports: 8 Imported by: 0

README

Azure TTS (Text to Speech) API wrapper for Go.

Quick Start

go get github.com/ringsaturn/azuretts
package main

import (
	"context"
	"os"

	"github.com/ringsaturn/azuretts"
)

func main() {
	c := azuretts.NewClient(
		os.Getenv("SPEECH_KEY"),
		azuretts.Region(os.Getenv("SPEECH_REGION")),
	)
	speak := azuretts.NewSpeak(
		azuretts.WithLanguage(azuretts.LanguageZhCN),
		azuretts.WithVoiceName(azuretts.VoiceNameZhCNYunxiNeural),
		azuretts.WithStyle(azuretts.StyleChat),
		azuretts.WithRate(1),
		azuretts.WithVoiceStyledegree(2),
		azuretts.WithSpeechText("你好,世界"),
		azuretts.WithVolume(100),
	)
	b, err := c.GetSynthesize(context.Background(), &azuretts.SynthesisRequest{
		Speak:  speak,
		Output: azuretts.AudioOutputFormat_Streaming_Audio16Khz32KbitrateMonoMp3,
	})
	if err != nil {
		panic(err)
	}
	if err := b.Error(); err != nil {
		panic(err)
	}
	err = os.WriteFile("sample.mp3", b.Body, 0644)
	if err != nil {
		panic(err)
	}
}

CLI

go install github.com/ringsaturn/azuretts/cmd/azuretts

NOTE: Please setup environment variables SPEECH_KEY and SPEECH_REGION before running the CLI.

azuretts --help
Usage of ./azuretts:
  -language string
        Language Flags (default "zh-CN")
  -output string
        Output File Name (default "audio.mp3")
  -rate int
        Rate (default 1)
  -style string
        Style Flags (default "chat")
  -styledegree int
        Style Degree (default 2)
  -text string
        Text (default "你好,世界")
  -voice string
        Voice Flags (default "zh-CN-YunxiNeural")
  -volume int
        Volume (default 100)

Thanks

I learned a lot from https://github.com/jesseward/azuretexttospeech.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AccessTokenResponse

type AccessTokenResponse struct {
	AccessToken      string `json:"token"`
	ExpiresInSeconds int64  `json:"exp"`
}

type AccessTokenSaver

type AccessTokenSaver interface {
	GetAccessToken(context.Context) (string, int64, error)
	SetAccessToken(context.Context, string, int64) error
}

AccessTokenSaver is an interface to save and get access token.

Please implement this interface if you want to save access token in Redis or other places.

type AudioOutputFormat

type AudioOutputFormat string

The supported streaming and non-streaming audio formats are sent in each request as the `X-Microsoft-OutputFormat` header. Each format incorporates a bit rate and encoding type. The Speech service supports 48-kHz, 24-kHz, 16-kHz, and 8-kHz audio outputs. Each prebuilt neural voice model is available at 24kHz and high-fidelity 48kHz.

If you select 48kHz output format, the high-fidelity voice model with 48kHz will be invoked accordingly. The sample rates other than 24kHz and 48kHz can be obtained through upsampling or downsampling when synthesizing, for example, 44.1kHz is downsampled from 48kHz. If your selected voice and output format have different bit rates, the audio is resampled as necessary. You can decode the ogg-24khz-16bit-mono-opus format by using the [Opus codec](https://opus-codec.org/downloads/).

Source: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/rest-text-to-speech?tabs=nonstreaming#audio-outputs

const (
	AudioOutputFormat_Streaming_AmrWb16000Hz                  AudioOutputFormat = "amr-wb-16000hz"
	AudioOutputFormat_Streaming_Audio16Khz16Bit32KbpsMonoOpus AudioOutputFormat = "audio-16khz-16bit-32kbps-mono-opus"
	AudioOutputFormat_Streaming_Audio16Khz32KbitrateMonoMp3   AudioOutputFormat = "audio-16khz-32kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Audio16Khz64KbitrateMonoMp3   AudioOutputFormat = "audio-16khz-64kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Audio16Khz128KbitrateMonoMp3  AudioOutputFormat = "audio-16khz-128kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Audio24Khz16Bit24KbpsMonoOpus AudioOutputFormat = "audio-24khz-16bit-24kbps-mono-opus"
	AudioOutputFormat_Streaming_Audio24Khz16Bit48KbpsMonoOpus AudioOutputFormat = "audio-24khz-16bit-48kbps-mono-opus"
	AudioOutputFormat_Streaming_Audio24Khz48KbitrateMonoMp3   AudioOutputFormat = "audio-24khz-48kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Audio24Khz96KbitrateMonoMp3   AudioOutputFormat = "audio-24khz-96kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Audio24Khz160KbitrateMonoMp3  AudioOutputFormat = "audio-24khz-160kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Audio48Khz96KbitrateMonoMp3   AudioOutputFormat = "audio-48khz-96kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Audio48Khz192KbitrateMonoMp3  AudioOutputFormat = "audio-48khz-192kbitrate-mono-mp3"
	AudioOutputFormat_Streaming_Ogg16Khz16BitMonoOpus         AudioOutputFormat = "ogg-16khz-16bit-mono-opus"
	AudioOutputFormat_Streaming_Ogg24Khz16BitMonoOpus         AudioOutputFormat = "ogg-24khz-16bit-mono-opus"
	AudioOutputFormat_Streaming_Ogg48Khz16BitMonoOpus         AudioOutputFormat = "ogg-48khz-16bit-mono-opus"
	AudioOutputFormat_Streaming_Raw8Khz8BitMonoAlaw           AudioOutputFormat = "raw-8khz-8bit-mono-alaw"
	AudioOutputFormat_Streaming_Raw8Khz8BitMonoMulaw          AudioOutputFormat = "raw-8khz-8bit-mono-mulaw"
	AudioOutputFormat_Streaming_Raw8Khz16BitMonoPcm           AudioOutputFormat = "raw-8khz-16bit-mono-pcm"
	AudioOutputFormat_Streaming_Raw16Khz16BitMonoPcm          AudioOutputFormat = "raw-16khz-16bit-mono-pcm"
	AudioOutputFormat_Streaming_Raw16Khz16BitMonoTruesilk     AudioOutputFormat = "raw-16khz-16bit-mono-truesilk"
	AudioOutputFormat_Streaming_Raw22050Hz16BitMonoPcm        AudioOutputFormat = "raw-22050hz-16bit-mono-pcm"
	AudioOutputFormat_Streaming_Raw24Khz16BitMonoPcm          AudioOutputFormat = "raw-24khz-16bit-mono-pcm"
	AudioOutputFormat_Streaming_Raw24Khz16BitMonoTruesilk     AudioOutputFormat = "raw-24khz-16bit-mono-truesilk"
	AudioOutputFormat_Streaming_Raw44100Hz16BitMonoPcm        AudioOutputFormat = "raw-44100hz-16bit-mono-pcm"
	AudioOutputFormat_Streaming_Raw48Khz16BitMonoPcm          AudioOutputFormat = "raw-48khz-16bit-mono-pcm"
	AudioOutputFormat_Streaming_Webm16Khz16BitMonoOpus        AudioOutputFormat = "webm-16khz-16bit-mono-opus"
	AudioOutputFormat_Streaming_Webm24Khz16Bit24KbpsMonoOpus  AudioOutputFormat = "webm-24khz-16bit-24kbps-mono-opus"
	AudioOutputFormat_Streaming_Webm24Khz16BitMonoOpus        AudioOutputFormat = "webm-24khz-16bit-mono-opus"

	AudioOutputFormat_NonStreaming_Riff8Khz8BitMonoAlaw    AudioOutputFormat = "riff-8khz-8bit-mono-alaw"
	AudioOutputFormat_NonStreaming_Riff8Khz8BitMonoMulaw   AudioOutputFormat = "riff-8khz-8bit-mono-mulaw"
	AudioOutputFormat_NonStreaming_Riff8Khz16BitMonoPcm    AudioOutputFormat = "riff-8khz-16bit-mono-pcm"
	AudioOutputFormat_NonStreaming_Riff22050Hz16BitMonoPcm AudioOutputFormat = "riff-22050hz-16bit-mono-pcm"
	AudioOutputFormat_NonStreaming_Riff24Khz16BitMonoPcm   AudioOutputFormat = "riff-24khz-16bit-mono-pcm"
	AudioOutputFormat_NonStreaming_Riff44100Hz16BitMonoPcm AudioOutputFormat = "riff-44100hz-16bit-mono-pcm"
	AudioOutputFormat_NonStreaming_Riff48Khz16BitMonoPcm   AudioOutputFormat = "riff-48khz-16bit-mono-pcm"
)

func (AudioOutputFormat) String

func (a AudioOutputFormat) String() string

type AutoRefresh

type AutoRefresh func(ctx context.Context, client Client) (string, int64, error)

AutoRefresh is a function to refresh access token based on token expire time.

type Client

type Client interface {
	AccessTokenSaver

	GetNewAccessToken(context.Context) (*AccessTokenResponse, error)
	GetSynthesize(ctx context.Context, req *SynthesisRequest) (*SynthesisResponse, error)
}

func NewClient

func NewClient(subscriptionKey string, region Region, opts ...Option) Client

type Effect added in v0.2.0

type Effect string

The audio effect processor that's used to optimize the quality of the synthesized speech output for specific scenarios on devices.

For some scenarios in production environments, the auditory experience might be degraded due to the playback distortion on certain devices. For example, the synthesized speech from a car speaker might sound dull and muffled due to environmental factors such as speaker response, room reverberation, and background noise. The passenger might have to turn up the volume to hear more clearly. To avoid manual operations in such a scenario, the audio effect processor can make the sound clearer by compensating the distortion of playback.

Source: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/speech-synthesis-markup-voice

const (
	// Optimize the auditory experience when providing high-fidelity speech in
	// cars, buses, and other enclosed automobiles.
	EffectEqCar Effect = "eq_car"

	// Optimize the auditory experience for narrowband speech in telecom or
	// telephone scenarios. You should use a sampling rate of 8 kHz. If the
	// sample rate isn't 8 kHz, the auditory quality of the output speech isn't
	// optimized.
	EffectEqTelecomhp8k Effect = "eq_telecomhp8k"
)

type ExpressAs

type ExpressAs struct {
	// Text        string  `xml:",chardata"`
	Style       Style   `xml:"style,attr"`
	Styledegree string  `xml:"styledegree,attr"`
	Prosody     Prosody `xml:"prosody"`
	Role        Role    `xml:"role,attr,omitempty"`
}

type Language

type Language string

https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/speech-service/includes/language-support/tts.md

const (
	LanguageAfZA         Language = "af-ZA"
	LanguageAmET         Language = "am-ET"
	LanguageArAE         Language = "ar-AE"
	LanguageArBH         Language = "ar-BH"
	LanguageArDZ         Language = "ar-DZ"
	LanguageArEG         Language = "ar-EG"
	LanguageArIQ         Language = "ar-IQ"
	LanguageArJO         Language = "ar-JO"
	LanguageArKW         Language = "ar-KW"
	LanguageArLB         Language = "ar-LB"
	LanguageArLY         Language = "ar-LY"
	LanguageArMA         Language = "ar-MA"
	LanguageArOM         Language = "ar-OM"
	LanguageArQA         Language = "ar-QA"
	LanguageArSA         Language = "ar-SA"
	LanguageArSY         Language = "ar-SY"
	LanguageArTN         Language = "ar-TN"
	LanguageArYE         Language = "ar-YE"
	LanguageAzAZ         Language = "az-AZ"
	LanguageBgBG         Language = "bg-BG"
	LanguageBnBD         Language = "bn-BD"
	LanguageBnIN         Language = "bn-IN"
	LanguageBsBA         Language = "bs-BA"
	LanguageCaES         Language = "ca-ES"
	LanguageCsCZ         Language = "cs-CZ"
	LanguageCyGB         Language = "cy-GB"
	LanguageDaDK         Language = "da-DK"
	LanguageDeAT         Language = "de-AT"
	LanguageDeCH         Language = "de-CH"
	LanguageDeDE         Language = "de-DE"
	LanguageElGR         Language = "el-GR"
	LanguageEnAU         Language = "en-AU"
	LanguageEnCA         Language = "en-CA"
	LanguageEnGB         Language = "en-GB"
	LanguageEnHK         Language = "en-HK"
	LanguageEnIE         Language = "en-IE"
	LanguageEnIN         Language = "en-IN"
	LanguageEnKE         Language = "en-KE"
	LanguageEnNG         Language = "en-NG"
	LanguageEnNZ         Language = "en-NZ"
	LanguageEnPH         Language = "en-PH"
	LanguageEnSG         Language = "en-SG"
	LanguageEnTZ         Language = "en-TZ"
	LanguageEnUS         Language = "en-US"
	LanguageEnZA         Language = "en-ZA"
	LanguageEsAR         Language = "es-AR"
	LanguageEsBO         Language = "es-BO"
	LanguageEsCL         Language = "es-CL"
	LanguageEsCO         Language = "es-CO"
	LanguageEsCR         Language = "es-CR"
	LanguageEsCU         Language = "es-CU"
	LanguageEsDO         Language = "es-DO"
	LanguageEsEC         Language = "es-EC"
	LanguageEsES         Language = "es-ES"
	LanguageEsGQ         Language = "es-GQ"
	LanguageEsGT         Language = "es-GT"
	LanguageEsHN         Language = "es-HN"
	LanguageEsMX         Language = "es-MX"
	LanguageEsNI         Language = "es-NI"
	LanguageEsPA         Language = "es-PA"
	LanguageEsPE         Language = "es-PE"
	LanguageEsPR         Language = "es-PR"
	LanguageEsPY         Language = "es-PY"
	LanguageEsSV         Language = "es-SV"
	LanguageEsUS         Language = "es-US"
	LanguageEsUY         Language = "es-UY"
	LanguageEsVE         Language = "es-VE"
	LanguageEtEE         Language = "et-EE"
	LanguageEuES         Language = "eu-ES"
	LanguageFaIR         Language = "fa-IR"
	LanguageFiFI         Language = "fi-FI"
	LanguageFilPH        Language = "fil-PH"
	LanguageFrBE         Language = "fr-BE"
	LanguageFrCA         Language = "fr-CA"
	LanguageFrCH         Language = "fr-CH"
	LanguageFrFR         Language = "fr-FR"
	LanguageGaIE         Language = "ga-IE"
	LanguageGlES         Language = "gl-ES"
	LanguageGuIN         Language = "gu-IN"
	LanguageHeIL         Language = "he-IL"
	LanguageHiIN         Language = "hi-IN"
	LanguageHrHR         Language = "hr-HR"
	LanguageHuHU         Language = "hu-HU"
	LanguageHyAM         Language = "hy-AM"
	LanguageIdID         Language = "id-ID"
	LanguageIsIS         Language = "is-IS"
	LanguageItIT         Language = "it-IT"
	LanguageJaJP         Language = "ja-JP"
	LanguageJvID         Language = "jv-ID"
	LanguageKaGE         Language = "ka-GE"
	LanguageKkKZ         Language = "kk-KZ"
	LanguageKmKH         Language = "km-KH"
	LanguageKnIN         Language = "kn-IN"
	LanguageKoKR         Language = "ko-KR"
	LanguageLoLA         Language = "lo-LA"
	LanguageLtLT         Language = "lt-LT"
	LanguageLvLV         Language = "lv-LV"
	LanguageMkMK         Language = "mk-MK"
	LanguageMlIN         Language = "ml-IN"
	LanguageMnMN         Language = "mn-MN"
	LanguageMrIN         Language = "mr-IN"
	LanguageMsMY         Language = "ms-MY"
	LanguageMtMT         Language = "mt-MT"
	LanguageMyMM         Language = "my-MM"
	LanguageNbNO         Language = "nb-NO"
	LanguageNeNP         Language = "ne-NP"
	LanguageNlBE         Language = "nl-BE"
	LanguageNlNL         Language = "nl-NL"
	LanguagePlPL         Language = "pl-PL"
	LanguagePsAF         Language = "ps-AF"
	LanguagePtBR         Language = "pt-BR"
	LanguagePtPT         Language = "pt-PT"
	LanguageRoRO         Language = "ro-RO"
	LanguageRuRU         Language = "ru-RU"
	LanguageSiLK         Language = "si-LK"
	LanguageSkSK         Language = "sk-SK"
	LanguageSlSI         Language = "sl-SI"
	LanguageSoSO         Language = "so-SO"
	LanguageSqAL         Language = "sq-AL"
	LanguageSrLATNRS     Language = "sr-LATN-RS"
	LanguageSrRS         Language = "sr-RS"
	LanguageSuID         Language = "su-ID"
	LanguageSvSE         Language = "sv-SE"
	LanguageSwKE         Language = "sw-KE"
	LanguageSwTZ         Language = "sw-TZ"
	LanguageTaIN         Language = "ta-IN"
	LanguageTaLK         Language = "ta-LK"
	LanguageTaMY         Language = "ta-MY"
	LanguageTaSG         Language = "ta-SG"
	LanguageTeIN         Language = "te-IN"
	LanguageThTH         Language = "th-TH"
	LanguageTrTR         Language = "tr-TR"
	LanguageUkUA         Language = "uk-UA"
	LanguageUrIN         Language = "ur-IN"
	LanguageUrPK         Language = "ur-PK"
	LanguageUzUZ         Language = "uz-UZ"
	LanguageViVN         Language = "vi-VN"
	LanguageWuuCN        Language = "wuu-CN"
	LanguageYueCN        Language = "yue-CN"
	LanguageZhCN         Language = "zh-CN"
	LanguageZhCNGUANGXI  Language = "zh-CN-GUANGXI"
	LanguageZhCNhenan    Language = "zh-CN-henan"
	LanguageZhCNliaoning Language = "zh-CN-liaoning"
	LanguageZhCNshaanxi  Language = "zh-CN-shaanxi"
	LanguageZhCNshandong Language = "zh-CN-shandong"
	LanguageZhCNsichuan  Language = "zh-CN-sichuan"
	LanguageZhHK         Language = "zh-HK"
	LanguageZhTW         Language = "zh-TW"
	LanguageZuZA         Language = "zu-ZA"
)

func (Language) String

func (l Language) String() string

type Option

type Option func(*baseClient)

func WithAutoTokenRefresh

func WithAutoTokenRefresh(fn AutoRefresh) Option

Will use `defaultAutoRefresh`(an internal function) by default. If you want to disable auto refresh, please set this option to nil.

If you want to implement your own auto refresh function, please make sure the function is thread safe. Because the function could be called by multiple goroutines.

func WithHTTPClient

func WithHTTPClient(client *http.Client) Option

Will use http.DefaultClient by default.

func WithTokenSaver

func WithTokenSaver(saver AccessTokenSaver) Option

Will use `memorySaver`(an internal function) default.

Please implement your own `AccessTokenSaver` if you want to save access token in Redis or other places.

type Payload

type Payload interface {
	ToXML() ([]byte, error)
}

type Prosody

type Prosody struct {
	SpeechText string `xml:",chardata"`
	Rate       string `xml:"rate,attr"`
	Volume     string `xml:"volume,attr"`
}

type Region

type Region string

https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/speech-service/regions.md?plain=1

const (
	RegionSouthafricanorth   Region = "southafricanorth"
	RegionEastasia           Region = "eastasia"
	RegionSoutheastasia      Region = "southeastasia"
	RegionAustraliaeast      Region = "australiaeast"
	RegionCentralindia       Region = "centralindia"
	RegionJapaneast          Region = "japaneast"
	RegionJapanwest          Region = "japanwest"
	RegionKoreacentral       Region = "koreacentral"
	RegionCanadacentral      Region = "canadacentral"
	RegionNortheurope        Region = "northeurope"
	RegionWesteurope         Region = "westeurope"
	RegionFrancecentral      Region = "francecentral"
	RegionGermanywestcentral Region = "germanywestcentral"
	RegionNorwayeast         Region = "norwayeast"
	RegionSwedentcentral     Region = "swedentcentral"
	RegionSwitzerlandnorth   Region = "switzerlandnorth"
	RegionSwitzerlandwest    Region = "switzerlandwest"
	RegionUksouth            Region = "uksouth"
	RegionUaenorth           Region = "uaenorth"
	RegionBrazilsouth        Region = "brazilsouth"
	RegionCentralus          Region = "centralus"
	RegionEastus             Region = "eastus"
	RegionEastus2            Region = "eastus2"
	RegionNorthcentralus     Region = "northcentralus"
	RegionSouthcentralus     Region = "southcentralus"
	RegionWestcentralus      Region = "westcentralus"
	RegionWestus             Region = "westus"
	RegionWestus2            Region = "westus2"
	RegionWestus3            Region = "westus3"
)

func (Region) String

func (r Region) String() string

type Role

type Role string

https://learn.microsoft.com/en-us/azure/ai-services/speech-service/speech-synthesis-markup-voice

const (
	RoleGirl             Role = "Girl"             // The voice imitates a girl.
	RoleBoy              Role = "Boy"              // The voice imitates a boy.
	RoleYoungAdultFemale Role = "YoungAdultFemale" // The voice imitates a young adult female.
	RoleYoungAdultMale   Role = "YoungAdultMale"   // The voice imitates a young adult male.
	RoleOlderAdultFemale Role = "OlderAdultFemale" // The voice imitates an older adult female.
	RoleOlderAdultMale   Role = "OlderAdultMale"   // The voice imitates an older adult male.
	RoleSeniorFemale     Role = "SeniorFemale"     // The voice imitates a senior female.
	RoleSeniorMale       Role = "SeniorMale"       // The voice imitates a senior male.
)

func (Role) String

func (r Role) String() string

type Speak

type Speak struct {
	XMLName xml.Name `xml:"speak"`
	// Text    string   `xml:",chardata"`
	Version string   `xml:"version,attr"`
	Xmlns   string   `xml:"xmlns,attr"`
	Mstts   string   `xml:"xmlns:mstts,attr"`
	Lang    Language `xml:"xml:lang,attr"`
	Voice   Voice    `xml:"voice"`
}

Speak is the root element of the SSML document.

https://learn.microsoft.com/en-us/azure/ai-services/speech-service/speech-synthesis-markup-structure

func NewDefaultSpeak

func NewDefaultSpeak() *Speak

func NewSpeak

func NewSpeak(opts ...SpeakOption) *Speak

func (*Speak) ToXML

func (s *Speak) ToXML() ([]byte, error)

type SpeakOption

type SpeakOption func(*Speak)

func WithLanguage

func WithLanguage(lang Language) SpeakOption

func WithRate

func WithRate(rate float64) SpeakOption

func WithSpeechText

func WithSpeechText(text string) SpeakOption

func WithStyle

func WithStyle(style Style) SpeakOption

func WithVoiceName

func WithVoiceName(name VoiceName) SpeakOption

func WithVoiceStyledegree

func WithVoiceStyledegree(degree float64) SpeakOption

func WithVolume

func WithVolume(volume int) SpeakOption

type Style

type Style string

https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/speech-service/includes/language-support/voice-styles-and-roles.md?plain=1

const (
	StyleCheerful                Style = "cheerful"
	StyleChat                    Style = "chat"
	StyleSad                     Style = "sad"
	StyleAngry                   Style = "angry"
	StyleCustomerservice         Style = "customerservice"
	StyleEmpathetic              Style = "empathetic"
	StyleExcited                 Style = "excited"
	StyleFriendly                Style = "friendly"
	StyleHopeful                 Style = "hopeful"
	StyleNarrationprofessional   Style = "narration-professional"
	StyleNewscastcasual          Style = "newscast-casual"
	StyleNewscastformal          Style = "newscast-formal"
	StyleShouting                Style = "shouting"
	StyleTerrified               Style = "terrified"
	StyleUnfriendly              Style = "unfriendly"
	StyleWhispering              Style = "whispering"
	StyleNewscast                Style = "newscast"
	StyleAssistant               Style = "assistant"
	StyleCalm                    Style = "calm"
	StyleAffectionate            Style = "affectionate"
	StyleDisgruntled             Style = "disgruntled"
	StyleEmbarrassed             Style = "embarrassed"
	StyleFearful                 Style = "fearful"
	StyleGentle                  Style = "gentle"
	StyleSerious                 Style = "serious"
	StyleDepressed               Style = "depressed"
	StyleEnvious                 Style = "envious"
	StyleLyrical                 Style = "lyrical"
	StylePoetryreading           Style = "poetry-reading"
	StyleAdvertisementupbeat     Style = "advertisement-upbeat"
	StyleDocumentarynarration    Style = "documentary-narration"
	StyleNarrationrelaxed        Style = "narration-relaxed"
	StyleSportscommentary        Style = "sports-commentary"
	StyleSportscommentaryexcited Style = "sports-commentary-excited"
)

func (Style) String

func (s Style) String() string

type SynthesisRequest

type SynthesisRequest struct {
	Speak  Payload
	Output AudioOutputFormat
}

type SynthesisResponse

type SynthesisResponse struct {
	Status     int
	Body       []byte
	Resp       *http.Response
	RequestXML []byte
}

func (*SynthesisResponse) Error

func (resp *SynthesisResponse) Error() error

type Voice

type Voice struct {
	// Text      string    `xml:",chardata"`
	Name      VoiceName `xml:"name,attr"`
	ExpressAs ExpressAs `xml:"mstts:express-as"`
	Effect    Effect    `xml:"effect,omitempty"`
}

type VoiceName

type VoiceName string

https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/speech-service/includes/language-support/tts.md

const (
	VoiceNameAfZAAdriNeural                  VoiceName = "af-ZA-AdriNeural"
	VoiceNameAfZAWillemNeural                VoiceName = "af-ZA-WillemNeural"
	VoiceNameAmETMekdesNeural                VoiceName = "am-ET-MekdesNeural"
	VoiceNameAmETAmehaNeural                 VoiceName = "am-ET-AmehaNeural"
	VoiceNameArAEFatimaNeural                VoiceName = "ar-AE-FatimaNeural"
	VoiceNameArAEHamdanNeural                VoiceName = "ar-AE-HamdanNeural"
	VoiceNameArBHLailaNeural                 VoiceName = "ar-BH-LailaNeural"
	VoiceNameArBHAliNeural                   VoiceName = "ar-BH-AliNeural"
	VoiceNameArDZAminaNeural                 VoiceName = "ar-DZ-AminaNeural"
	VoiceNameArDZIsmaelNeural                VoiceName = "ar-DZ-IsmaelNeural"
	VoiceNameArEGSalmaNeural                 VoiceName = "ar-EG-SalmaNeural"
	VoiceNameArEGShakirNeural                VoiceName = "ar-EG-ShakirNeural"
	VoiceNameArIQRanaNeural                  VoiceName = "ar-IQ-RanaNeural"
	VoiceNameArIQBasselNeural                VoiceName = "ar-IQ-BasselNeural"
	VoiceNameArJOSanaNeural                  VoiceName = "ar-JO-SanaNeural"
	VoiceNameArJOTaimNeural                  VoiceName = "ar-JO-TaimNeural"
	VoiceNameArKWNouraNeural                 VoiceName = "ar-KW-NouraNeural"
	VoiceNameArKWFahedNeural                 VoiceName = "ar-KW-FahedNeural"
	VoiceNameArLBLaylaNeural                 VoiceName = "ar-LB-LaylaNeural"
	VoiceNameArLBRamiNeural                  VoiceName = "ar-LB-RamiNeural"
	VoiceNameArLYImanNeural                  VoiceName = "ar-LY-ImanNeural"
	VoiceNameArLYOmarNeural                  VoiceName = "ar-LY-OmarNeural"
	VoiceNameArMAMounaNeural                 VoiceName = "ar-MA-MounaNeural"
	VoiceNameArMAJamalNeural                 VoiceName = "ar-MA-JamalNeural"
	VoiceNameArOMAyshaNeural                 VoiceName = "ar-OM-AyshaNeural"
	VoiceNameArOMAbdullahNeural              VoiceName = "ar-OM-AbdullahNeural"
	VoiceNameArQAAmalNeural                  VoiceName = "ar-QA-AmalNeural"
	VoiceNameArQAMoazNeural                  VoiceName = "ar-QA-MoazNeural"
	VoiceNameArSAZariyahNeural               VoiceName = "ar-SA-ZariyahNeural"
	VoiceNameArSAHamedNeural                 VoiceName = "ar-SA-HamedNeural"
	VoiceNameArSYAmanyNeural                 VoiceName = "ar-SY-AmanyNeural"
	VoiceNameArSYLaithNeural                 VoiceName = "ar-SY-LaithNeural"
	VoiceNameArTNReemNeural                  VoiceName = "ar-TN-ReemNeural"
	VoiceNameArTNHediNeural                  VoiceName = "ar-TN-HediNeural"
	VoiceNameArYEMaryamNeural                VoiceName = "ar-YE-MaryamNeural"
	VoiceNameArYESalehNeural                 VoiceName = "ar-YE-SalehNeural"
	VoiceNameAzAZBanuNeural                  VoiceName = "az-AZ-BanuNeural"
	VoiceNameAzAZBabekNeural                 VoiceName = "az-AZ-BabekNeural"
	VoiceNameBgBGKalinaNeural                VoiceName = "bg-BG-KalinaNeural"
	VoiceNameBgBGBorislavNeural              VoiceName = "bg-BG-BorislavNeural"
	VoiceNameBnBDNabanitaNeural              VoiceName = "bn-BD-NabanitaNeural"
	VoiceNameBnBDPradeepNeural               VoiceName = "bn-BD-PradeepNeural"
	VoiceNameBnINTanishaaNeural              VoiceName = "bn-IN-TanishaaNeural"
	VoiceNameBnINBashkarNeural               VoiceName = "bn-IN-BashkarNeural"
	VoiceNameBsBAVesnaNeural                 VoiceName = "bs-BA-VesnaNeural"
	VoiceNameBsBAGoranNeural                 VoiceName = "bs-BA-GoranNeural"
	VoiceNameCaESJoanaNeural                 VoiceName = "ca-ES-JoanaNeural"
	VoiceNameCaESEnricNeural                 VoiceName = "ca-ES-EnricNeural"
	VoiceNameCaESAlbaNeural                  VoiceName = "ca-ES-AlbaNeural"
	VoiceNameCsCZVlastaNeural                VoiceName = "cs-CZ-VlastaNeural"
	VoiceNameCsCZAntoninNeural               VoiceName = "cs-CZ-AntoninNeural"
	VoiceNameCyGBNiaNeural                   VoiceName = "cy-GB-NiaNeural"
	VoiceNameCyGBAledNeural                  VoiceName = "cy-GB-AledNeural"
	VoiceNameDaDKChristelNeural              VoiceName = "da-DK-ChristelNeural"
	VoiceNameDaDKJeppeNeural                 VoiceName = "da-DK-JeppeNeural"
	VoiceNameDeATIngridNeural                VoiceName = "de-AT-IngridNeural"
	VoiceNameDeATJonasNeural                 VoiceName = "de-AT-JonasNeural"
	VoiceNameDeCHLeniNeural                  VoiceName = "de-CH-LeniNeural"
	VoiceNameDeCHJanNeural                   VoiceName = "de-CH-JanNeural"
	VoiceNameDeDEKatjaNeural                 VoiceName = "de-DE-KatjaNeural"
	VoiceNameDeDEConradNeural                VoiceName = "de-DE-ConradNeural"
	VoiceNameDeDEAmalaNeural                 VoiceName = "de-DE-AmalaNeural"
	VoiceNameDeDEBerndNeural                 VoiceName = "de-DE-BerndNeural"
	VoiceNameDeDEChristophNeural             VoiceName = "de-DE-ChristophNeural"
	VoiceNameDeDEElkeNeural                  VoiceName = "de-DE-ElkeNeural"
	VoiceNameDeDEGiselaNeural                VoiceName = "de-DE-GiselaNeural"
	VoiceNameDeDEKasperNeural                VoiceName = "de-DE-KasperNeural"
	VoiceNameDeDEKillianNeural               VoiceName = "de-DE-KillianNeural"
	VoiceNameDeDEKlarissaNeural              VoiceName = "de-DE-KlarissaNeural"
	VoiceNameDeDEKlausNeural                 VoiceName = "de-DE-KlausNeural"
	VoiceNameDeDELouisaNeural                VoiceName = "de-DE-LouisaNeural"
	VoiceNameDeDEMajaNeural                  VoiceName = "de-DE-MajaNeural"
	VoiceNameDeDERalfNeural                  VoiceName = "de-DE-RalfNeural"
	VoiceNameDeDESeraphinaNeural             VoiceName = "de-DE-SeraphinaNeural"
	VoiceNameDeDEFlorianMultilingualNeural   VoiceName = "de-DE-FlorianMultilingualNeural"
	VoiceNameDeDESeraphinaMultilingualNeural VoiceName = "de-DE-SeraphinaMultilingualNeural"
	VoiceNameElGRAthinaNeural                VoiceName = "el-GR-AthinaNeural"
	VoiceNameElGRNestorasNeural              VoiceName = "el-GR-NestorasNeural"
	VoiceNameEnAUNatashaNeural               VoiceName = "en-AU-NatashaNeural"
	VoiceNameEnAUWilliamNeural               VoiceName = "en-AU-WilliamNeural"
	VoiceNameEnAUAnnetteNeural               VoiceName = "en-AU-AnnetteNeural"
	VoiceNameEnAUCarlyNeural                 VoiceName = "en-AU-CarlyNeural"
	VoiceNameEnAUDarrenNeural                VoiceName = "en-AU-DarrenNeural"
	VoiceNameEnAUDuncanNeural                VoiceName = "en-AU-DuncanNeural"
	VoiceNameEnAUElsieNeural                 VoiceName = "en-AU-ElsieNeural"
	VoiceNameEnAUFreyaNeural                 VoiceName = "en-AU-FreyaNeural"
	VoiceNameEnAUJoanneNeural                VoiceName = "en-AU-JoanneNeural"
	VoiceNameEnAUKenNeural                   VoiceName = "en-AU-KenNeural"
	VoiceNameEnAUKimNeural                   VoiceName = "en-AU-KimNeural"
	VoiceNameEnAUNeilNeural                  VoiceName = "en-AU-NeilNeural"
	VoiceNameEnAUTimNeural                   VoiceName = "en-AU-TimNeural"
	VoiceNameEnAUTinaNeural                  VoiceName = "en-AU-TinaNeural"
	VoiceNameEnCAClaraNeural                 VoiceName = "en-CA-ClaraNeural"
	VoiceNameEnCALiamNeural                  VoiceName = "en-CA-LiamNeural"
	VoiceNameEnGBSoniaNeural                 VoiceName = "en-GB-SoniaNeural"
	VoiceNameEnGBRyanNeural                  VoiceName = "en-GB-RyanNeural"
	VoiceNameEnGBLibbyNeural                 VoiceName = "en-GB-LibbyNeural"
	VoiceNameEnGBAbbiNeural                  VoiceName = "en-GB-AbbiNeural"
	VoiceNameEnGBAlfieNeural                 VoiceName = "en-GB-AlfieNeural"
	VoiceNameEnGBBellaNeural                 VoiceName = "en-GB-BellaNeural"
	VoiceNameEnGBElliotNeural                VoiceName = "en-GB-ElliotNeural"
	VoiceNameEnGBEthanNeural                 VoiceName = "en-GB-EthanNeural"
	VoiceNameEnGBHollieNeural                VoiceName = "en-GB-HollieNeural"
	VoiceNameEnGBMaisieNeural                VoiceName = "en-GB-MaisieNeural"
	VoiceNameEnGBNoahNeural                  VoiceName = "en-GB-NoahNeural"
	VoiceNameEnGBOliverNeural                VoiceName = "en-GB-OliverNeural"
	VoiceNameEnGBOliviaNeural                VoiceName = "en-GB-OliviaNeural"
	VoiceNameEnGBThomasNeural                VoiceName = "en-GB-ThomasNeural"
	VoiceNameEnHKYanNeural                   VoiceName = "en-HK-YanNeural"
	VoiceNameEnHKSamNeural                   VoiceName = "en-HK-SamNeural"
	VoiceNameEnIEEmilyNeural                 VoiceName = "en-IE-EmilyNeural"
	VoiceNameEnIEConnorNeural                VoiceName = "en-IE-ConnorNeural"
	VoiceNameEnINNeerjaNeural                VoiceName = "en-IN-NeerjaNeural"
	VoiceNameEnINPrabhatNeural               VoiceName = "en-IN-PrabhatNeural"
	VoiceNameEnKEAsiliaNeural                VoiceName = "en-KE-AsiliaNeural"
	VoiceNameEnKEChilembaNeural              VoiceName = "en-KE-ChilembaNeural"
	VoiceNameEnNGEzinneNeural                VoiceName = "en-NG-EzinneNeural"
	VoiceNameEnNGAbeoNeural                  VoiceName = "en-NG-AbeoNeural"
	VoiceNameEnNZMollyNeural                 VoiceName = "en-NZ-MollyNeural"
	VoiceNameEnNZMitchellNeural              VoiceName = "en-NZ-MitchellNeural"
	VoiceNameEnPHRosaNeural                  VoiceName = "en-PH-RosaNeural"
	VoiceNameEnPHJamesNeural                 VoiceName = "en-PH-JamesNeural"
	VoiceNameEnSGLunaNeural                  VoiceName = "en-SG-LunaNeural"
	VoiceNameEnSGWayneNeural                 VoiceName = "en-SG-WayneNeural"
	VoiceNameEnTZImaniNeural                 VoiceName = "en-TZ-ImaniNeural"
	VoiceNameEnTZElimuNeural                 VoiceName = "en-TZ-ElimuNeural"
	VoiceNameEnUSJennyMultilingualNeural     VoiceName = "en-US-JennyMultilingualNeural"
	VoiceNameEnUSJennyNeural                 VoiceName = "en-US-JennyNeural"
	VoiceNameEnUSGuyNeural                   VoiceName = "en-US-GuyNeural"
	VoiceNameEnUSAriaNeural                  VoiceName = "en-US-AriaNeural"
	VoiceNameEnUSDavisNeural                 VoiceName = "en-US-DavisNeural"
	VoiceNameEnUSAmberNeural                 VoiceName = "en-US-AmberNeural"
	VoiceNameEnUSAnaNeural                   VoiceName = "en-US-AnaNeural"
	VoiceNameEnUSAndrewNeural                VoiceName = "en-US-AndrewNeural"
	VoiceNameEnUSAshleyNeural                VoiceName = "en-US-AshleyNeural"
	VoiceNameEnUSBrandonNeural               VoiceName = "en-US-BrandonNeural"
	VoiceNameEnUSBrianNeural                 VoiceName = "en-US-BrianNeural"
	VoiceNameEnUSChristopherNeural           VoiceName = "en-US-ChristopherNeural"
	VoiceNameEnUSCoraNeural                  VoiceName = "en-US-CoraNeural"
	VoiceNameEnUSElizabethNeural             VoiceName = "en-US-ElizabethNeural"
	VoiceNameEnUSEmmaNeural                  VoiceName = "en-US-EmmaNeural"
	VoiceNameEnUSEricNeural                  VoiceName = "en-US-EricNeural"
	VoiceNameEnUSJacobNeural                 VoiceName = "en-US-JacobNeural"
	VoiceNameEnUSJaneNeural                  VoiceName = "en-US-JaneNeural"
	VoiceNameEnUSJasonNeural                 VoiceName = "en-US-JasonNeural"
	VoiceNameEnUSMichelleNeural              VoiceName = "en-US-MichelleNeural"
	VoiceNameEnUSMonicaNeural                VoiceName = "en-US-MonicaNeural"
	VoiceNameEnUSNancyNeural                 VoiceName = "en-US-NancyNeural"
	VoiceNameEnUSRogerNeural                 VoiceName = "en-US-RogerNeural"
	VoiceNameEnUSSaraNeural                  VoiceName = "en-US-SaraNeural"
	VoiceNameEnUSSteffanNeural               VoiceName = "en-US-SteffanNeural"
	VoiceNameEnUSTonyNeural                  VoiceName = "en-US-TonyNeural"
	VoiceNameEnUSAIGenerate1Neural           VoiceName = "en-US-AIGenerate1Neural"
	VoiceNameEnUSAIGenerate2Neural           VoiceName = "en-US-AIGenerate2Neural"
	VoiceNameEnUSBlueNeural                  VoiceName = "en-US-BlueNeural"
	VoiceNameEnUSJennyMultilingualV2Neural   VoiceName = "en-US-JennyMultilingualV2Neural"
	VoiceNameEnUSRyanMultilingualNeural      VoiceName = "en-US-RyanMultilingualNeural"
	VoiceNameEnUSAvaMultilingualNeural       VoiceName = "en-US-AvaMultilingualNeural"
	VoiceNameEnUSAndrewMultilingualNeural    VoiceName = "en-US-AndrewMultilingualNeural"
	VoiceNameEnUSEmmaMultilingualNeural      VoiceName = "en-US-EmmaMultilingualNeural"
	VoiceNameEnUSBrianMultilingualNeural     VoiceName = "en-US-BrianMultilingualNeural "
	VoiceNameEnZALeahNeural                  VoiceName = "en-ZA-LeahNeural"
	VoiceNameEnZALukeNeural                  VoiceName = "en-ZA-LukeNeural"
	VoiceNameEsARElenaNeural                 VoiceName = "es-AR-ElenaNeural"
	VoiceNameEsARTomasNeural                 VoiceName = "es-AR-TomasNeural"
	VoiceNameEsBOSofiaNeural                 VoiceName = "es-BO-SofiaNeural"
	VoiceNameEsBOMarceloNeural               VoiceName = "es-BO-MarceloNeural"
	VoiceNameEsCLCatalinaNeural              VoiceName = "es-CL-CatalinaNeural"
	VoiceNameEsCLLorenzoNeural               VoiceName = "es-CL-LorenzoNeural"
	VoiceNameEsCOSalomeNeural                VoiceName = "es-CO-SalomeNeural"
	VoiceNameEsCOGonzaloNeural               VoiceName = "es-CO-GonzaloNeural"
	VoiceNameEsCRMariaNeural                 VoiceName = "es-CR-MariaNeural"
	VoiceNameEsCRJuanNeural                  VoiceName = "es-CR-JuanNeural"
	VoiceNameEsCUBelkysNeural                VoiceName = "es-CU-BelkysNeural"
	VoiceNameEsCUManuelNeural                VoiceName = "es-CU-ManuelNeural"
	VoiceNameEsDORamonaNeural                VoiceName = "es-DO-RamonaNeural"
	VoiceNameEsDOEmilioNeural                VoiceName = "es-DO-EmilioNeural"
	VoiceNameEsECAndreaNeural                VoiceName = "es-EC-AndreaNeural"
	VoiceNameEsECLuisNeural                  VoiceName = "es-EC-LuisNeural"
	VoiceNameEsESElviraNeural                VoiceName = "es-ES-ElviraNeural"
	VoiceNameEsESAlvaroNeural                VoiceName = "es-ES-AlvaroNeural"
	VoiceNameEsESAbrilNeural                 VoiceName = "es-ES-AbrilNeural"
	VoiceNameEsESArnauNeural                 VoiceName = "es-ES-ArnauNeural"
	VoiceNameEsESDarioNeural                 VoiceName = "es-ES-DarioNeural"
	VoiceNameEsESEliasNeural                 VoiceName = "es-ES-EliasNeural"
	VoiceNameEsESEstrellaNeural              VoiceName = "es-ES-EstrellaNeural"
	VoiceNameEsESIreneNeural                 VoiceName = "es-ES-IreneNeural"
	VoiceNameEsESLaiaNeural                  VoiceName = "es-ES-LaiaNeural"
	VoiceNameEsESLiaNeural                   VoiceName = "es-ES-LiaNeural"
	VoiceNameEsESNilNeural                   VoiceName = "es-ES-NilNeural"
	VoiceNameEsESSaulNeural                  VoiceName = "es-ES-SaulNeural"
	VoiceNameEsESTeoNeural                   VoiceName = "es-ES-TeoNeural"
	VoiceNameEsESTrianaNeural                VoiceName = "es-ES-TrianaNeural"
	VoiceNameEsESVeraNeural                  VoiceName = "es-ES-VeraNeural"
	VoiceNameEsESXimenaNeural                VoiceName = "es-ES-XimenaNeural"
	VoiceNameEsGQTeresaNeural                VoiceName = "es-GQ-TeresaNeural"
	VoiceNameEsGQJavierNeural                VoiceName = "es-GQ-JavierNeural"
	VoiceNameEsGTMartaNeural                 VoiceName = "es-GT-MartaNeural"
	VoiceNameEsGTAndresNeural                VoiceName = "es-GT-AndresNeural"
	VoiceNameEsHNKarlaNeural                 VoiceName = "es-HN-KarlaNeural"
	VoiceNameEsHNCarlosNeural                VoiceName = "es-HN-CarlosNeural"
	VoiceNameEsMXDaliaNeural                 VoiceName = "es-MX-DaliaNeural"
	VoiceNameEsMXJorgeNeural                 VoiceName = "es-MX-JorgeNeural"
	VoiceNameEsMXBeatrizNeural               VoiceName = "es-MX-BeatrizNeural"
	VoiceNameEsMXCandelaNeural               VoiceName = "es-MX-CandelaNeural"
	VoiceNameEsMXCarlotaNeural               VoiceName = "es-MX-CarlotaNeural"
	VoiceNameEsMXCecilioNeural               VoiceName = "es-MX-CecilioNeural"
	VoiceNameEsMXGerardoNeural               VoiceName = "es-MX-GerardoNeural"
	VoiceNameEsMXLarissaNeural               VoiceName = "es-MX-LarissaNeural"
	VoiceNameEsMXLibertoNeural               VoiceName = "es-MX-LibertoNeural"
	VoiceNameEsMXLucianoNeural               VoiceName = "es-MX-LucianoNeural"
	VoiceNameEsMXMarinaNeural                VoiceName = "es-MX-MarinaNeural"
	VoiceNameEsMXNuriaNeural                 VoiceName = "es-MX-NuriaNeural"
	VoiceNameEsMXPelayoNeural                VoiceName = "es-MX-PelayoNeural"
	VoiceNameEsMXRenataNeural                VoiceName = "es-MX-RenataNeural"
	VoiceNameEsMXYagoNeural                  VoiceName = "es-MX-YagoNeural"
	VoiceNameEsNIYolandaNeural               VoiceName = "es-NI-YolandaNeural"
	VoiceNameEsNIFedericoNeural              VoiceName = "es-NI-FedericoNeural"
	VoiceNameEsPAMargaritaNeural             VoiceName = "es-PA-MargaritaNeural"
	VoiceNameEsPARobertoNeural               VoiceName = "es-PA-RobertoNeural"
	VoiceNameEsPECamilaNeural                VoiceName = "es-PE-CamilaNeural"
	VoiceNameEsPEAlexNeural                  VoiceName = "es-PE-AlexNeural"
	VoiceNameEsPRKarinaNeural                VoiceName = "es-PR-KarinaNeural"
	VoiceNameEsPRVictorNeural                VoiceName = "es-PR-VictorNeural"
	VoiceNameEsPYTaniaNeural                 VoiceName = "es-PY-TaniaNeural"
	VoiceNameEsPYMarioNeural                 VoiceName = "es-PY-MarioNeural"
	VoiceNameEsSVLorenaNeural                VoiceName = "es-SV-LorenaNeural"
	VoiceNameEsSVRodrigoNeural               VoiceName = "es-SV-RodrigoNeural"
	VoiceNameEsUSPalomaNeural                VoiceName = "es-US-PalomaNeural"
	VoiceNameEsUSAlonsoNeural                VoiceName = "es-US-AlonsoNeural"
	VoiceNameEsUYValentinaNeural             VoiceName = "es-UY-ValentinaNeural"
	VoiceNameEsUYMateoNeural                 VoiceName = "es-UY-MateoNeural"
	VoiceNameEsVEPaolaNeural                 VoiceName = "es-VE-PaolaNeural"
	VoiceNameEsVESebastianNeural             VoiceName = "es-VE-SebastianNeural"
	VoiceNameEtEEAnuNeural                   VoiceName = "et-EE-AnuNeural"
	VoiceNameEtEEKertNeural                  VoiceName = "et-EE-KertNeural"
	VoiceNameEuESAinhoaNeural                VoiceName = "eu-ES-AinhoaNeural"
	VoiceNameEuESAnderNeural                 VoiceName = "eu-ES-AnderNeural"
	VoiceNameFaIRDilaraNeural                VoiceName = "fa-IR-DilaraNeural"
	VoiceNameFaIRFaridNeural                 VoiceName = "fa-IR-FaridNeural"
	VoiceNameFiFISelmaNeural                 VoiceName = "fi-FI-SelmaNeural"
	VoiceNameFiFIHarriNeural                 VoiceName = "fi-FI-HarriNeural"
	VoiceNameFiFINooraNeural                 VoiceName = "fi-FI-NooraNeural"
	VoiceNameFilPHBlessicaNeural             VoiceName = "fil-PH-BlessicaNeural"
	VoiceNameFilPHAngeloNeural               VoiceName = "fil-PH-AngeloNeural"
	VoiceNameFrBECharlineNeural              VoiceName = "fr-BE-CharlineNeural"
	VoiceNameFrBEGerardNeural                VoiceName = "fr-BE-GerardNeural"
	VoiceNameFrCASylvieNeural                VoiceName = "fr-CA-SylvieNeural"
	VoiceNameFrCAJeanNeural                  VoiceName = "fr-CA-JeanNeural"
	VoiceNameFrCAAntoineNeural               VoiceName = "fr-CA-AntoineNeural"
	VoiceNameFrCAThierryNeural               VoiceName = "fr-CA-ThierryNeural"
	VoiceNameFrCHArianeNeural                VoiceName = "fr-CH-ArianeNeural"
	VoiceNameFrCHFabriceNeural               VoiceName = "fr-CH-FabriceNeural"
	VoiceNameFrFRDeniseNeural                VoiceName = "fr-FR-DeniseNeural"
	VoiceNameFrFRHenriNeural                 VoiceName = "fr-FR-HenriNeural"
	VoiceNameFrFRAlainNeural                 VoiceName = "fr-FR-AlainNeural"
	VoiceNameFrFRBrigitteNeural              VoiceName = "fr-FR-BrigitteNeural"
	VoiceNameFrFRCelesteNeural               VoiceName = "fr-FR-CelesteNeural"
	VoiceNameFrFRClaudeNeural                VoiceName = "fr-FR-ClaudeNeural"
	VoiceNameFrFRCoralieNeural               VoiceName = "fr-FR-CoralieNeural"
	VoiceNameFrFREloiseNeural                VoiceName = "fr-FR-EloiseNeural"
	VoiceNameFrFRJacquelineNeural            VoiceName = "fr-FR-JacquelineNeural"
	VoiceNameFrFRJeromeNeural                VoiceName = "fr-FR-JeromeNeural"
	VoiceNameFrFRJosephineNeural             VoiceName = "fr-FR-JosephineNeural"
	VoiceNameFrFRMauriceNeural               VoiceName = "fr-FR-MauriceNeural"
	VoiceNameFrFRVivienneNeural              VoiceName = "fr-FR-VivienneNeural"
	VoiceNameFrFRYvesNeural                  VoiceName = "fr-FR-YvesNeural"
	VoiceNameFrFRVivienneMultilingualNeural  VoiceName = "fr-FR-VivienneMultilingualNeural"
	VoiceNameGaIEOrlaNeural                  VoiceName = "ga-IE-OrlaNeural"
	VoiceNameGaIEColmNeural                  VoiceName = "ga-IE-ColmNeural"
	VoiceNameGlESSabelaNeural                VoiceName = "gl-ES-SabelaNeural"
	VoiceNameGlESRoiNeural                   VoiceName = "gl-ES-RoiNeural"
	VoiceNameGuINDhwaniNeural                VoiceName = "gu-IN-DhwaniNeural"
	VoiceNameGuINNiranjanNeural              VoiceName = "gu-IN-NiranjanNeural"
	VoiceNameHeILHilaNeural                  VoiceName = "he-IL-HilaNeural"
	VoiceNameHeILAvriNeural                  VoiceName = "he-IL-AvriNeural"
	VoiceNameHiINSwaraNeural                 VoiceName = "hi-IN-SwaraNeural"
	VoiceNameHiINMadhurNeural                VoiceName = "hi-IN-MadhurNeural"
	VoiceNameHrHRGabrijelaNeural             VoiceName = "hr-HR-GabrijelaNeural"
	VoiceNameHrHRSreckoNeural                VoiceName = "hr-HR-SreckoNeural"
	VoiceNameHuHUNoemiNeural                 VoiceName = "hu-HU-NoemiNeural"
	VoiceNameHuHUTamasNeural                 VoiceName = "hu-HU-TamasNeural"
	VoiceNameHyAMAnahitNeural                VoiceName = "hy-AM-AnahitNeural"
	VoiceNameHyAMHaykNeural                  VoiceName = "hy-AM-HaykNeural"
	VoiceNameIdIDGadisNeural                 VoiceName = "id-ID-GadisNeural"
	VoiceNameIdIDArdiNeural                  VoiceName = "id-ID-ArdiNeural"
	VoiceNameIsISGudrunNeural                VoiceName = "is-IS-GudrunNeural"
	VoiceNameIsISGunnarNeural                VoiceName = "is-IS-GunnarNeural"
	VoiceNameItITElsaNeural                  VoiceName = "it-IT-ElsaNeural"
	VoiceNameItITIsabellaNeural              VoiceName = "it-IT-IsabellaNeural"
	VoiceNameItITDiegoNeural                 VoiceName = "it-IT-DiegoNeural"
	VoiceNameItITBenignoNeural               VoiceName = "it-IT-BenignoNeural"
	VoiceNameItITCalimeroNeural              VoiceName = "it-IT-CalimeroNeural"
	VoiceNameItITCataldoNeural               VoiceName = "it-IT-CataldoNeural"
	VoiceNameItITFabiolaNeural               VoiceName = "it-IT-FabiolaNeural"
	VoiceNameItITFiammaNeural                VoiceName = "it-IT-FiammaNeural"
	VoiceNameItITGianniNeural                VoiceName = "it-IT-GianniNeural"
	VoiceNameItITGiuseppeNeural              VoiceName = "it-IT-GiuseppeNeural"
	VoiceNameItITImeldaNeural                VoiceName = "it-IT-ImeldaNeural"
	VoiceNameItITIrmaNeural                  VoiceName = "it-IT-IrmaNeural"
	VoiceNameItITLisandroNeural              VoiceName = "it-IT-LisandroNeural"
	VoiceNameItITPalmiraNeural               VoiceName = "it-IT-PalmiraNeural"
	VoiceNameItITPierinaNeural               VoiceName = "it-IT-PierinaNeural"
	VoiceNameItITRinaldoNeural               VoiceName = "it-IT-RinaldoNeural"
	VoiceNameJaJPNanamiNeural                VoiceName = "ja-JP-NanamiNeural"
	VoiceNameJaJPKeitaNeural                 VoiceName = "ja-JP-KeitaNeural"
	VoiceNameJaJPAoiNeural                   VoiceName = "ja-JP-AoiNeural"
	VoiceNameJaJPDaichiNeural                VoiceName = "ja-JP-DaichiNeural"
	VoiceNameJaJPMayuNeural                  VoiceName = "ja-JP-MayuNeural"
	VoiceNameJaJPNaokiNeural                 VoiceName = "ja-JP-NaokiNeural"
	VoiceNameJaJPShioriNeural                VoiceName = "ja-JP-ShioriNeural"
	VoiceNameJaJPMasaruMultiligual           VoiceName = "ja-JP-MasaruMultiligual"
	VoiceNameJvIDSitiNeural                  VoiceName = "jv-ID-SitiNeural"
	VoiceNameJvIDDimasNeural                 VoiceName = "jv-ID-DimasNeural"
	VoiceNameKaGEEkaNeural                   VoiceName = "ka-GE-EkaNeural"
	VoiceNameKaGEGiorgiNeural                VoiceName = "ka-GE-GiorgiNeural"
	VoiceNameKkKZAigulNeural                 VoiceName = "kk-KZ-AigulNeural"
	VoiceNameKkKZDauletNeural                VoiceName = "kk-KZ-DauletNeural"
	VoiceNameKmKHSreymomNeural               VoiceName = "km-KH-SreymomNeural"
	VoiceNameKmKHPisethNeural                VoiceName = "km-KH-PisethNeural"
	VoiceNameKnINSapnaNeural                 VoiceName = "kn-IN-SapnaNeural"
	VoiceNameKnINGaganNeural                 VoiceName = "kn-IN-GaganNeural"
	VoiceNameKoKRSunHiNeural                 VoiceName = "ko-KR-SunHiNeural"
	VoiceNameKoKRInJoonNeural                VoiceName = "ko-KR-InJoonNeural"
	VoiceNameKoKRBongJinNeural               VoiceName = "ko-KR-BongJinNeural"
	VoiceNameKoKRGookMinNeural               VoiceName = "ko-KR-GookMinNeural"
	VoiceNameKoKRHyunsuNeural                VoiceName = "ko-KR-HyunsuNeural"
	VoiceNameKoKRJiMinNeural                 VoiceName = "ko-KR-JiMinNeural"
	VoiceNameKoKRSeoHyeonNeural              VoiceName = "ko-KR-SeoHyeonNeural"
	VoiceNameKoKRSoonBokNeural               VoiceName = "ko-KR-SoonBokNeural"
	VoiceNameKoKRYuJinNeural                 VoiceName = "ko-KR-YuJinNeural"
	VoiceNameLoLAKeomanyNeural               VoiceName = "lo-LA-KeomanyNeural"
	VoiceNameLoLAChanthavongNeural           VoiceName = "lo-LA-ChanthavongNeural"
	VoiceNameLtLTOnaNeural                   VoiceName = "lt-LT-OnaNeural"
	VoiceNameLtLTLeonasNeural                VoiceName = "lt-LT-LeonasNeural"
	VoiceNameLvLVEveritaNeural               VoiceName = "lv-LV-EveritaNeural"
	VoiceNameLvLVNilsNeural                  VoiceName = "lv-LV-NilsNeural"
	VoiceNameMkMKMarijaNeural                VoiceName = "mk-MK-MarijaNeural"
	VoiceNameMkMKAleksandarNeural            VoiceName = "mk-MK-AleksandarNeural"
	VoiceNameMlINSobhanaNeural               VoiceName = "ml-IN-SobhanaNeural"
	VoiceNameMlINMidhunNeural                VoiceName = "ml-IN-MidhunNeural"
	VoiceNameMnMNYesuiNeural                 VoiceName = "mn-MN-YesuiNeural"
	VoiceNameMnMNBataaNeural                 VoiceName = "mn-MN-BataaNeural"
	VoiceNameMrINAarohiNeural                VoiceName = "mr-IN-AarohiNeural"
	VoiceNameMrINManoharNeural               VoiceName = "mr-IN-ManoharNeural"
	VoiceNameMsMYYasminNeural                VoiceName = "ms-MY-YasminNeural"
	VoiceNameMsMYOsmanNeural                 VoiceName = "ms-MY-OsmanNeural"
	VoiceNameMtMTGraceNeural                 VoiceName = "mt-MT-GraceNeural"
	VoiceNameMtMTJosephNeural                VoiceName = "mt-MT-JosephNeural"
	VoiceNameMyMMNilarNeural                 VoiceName = "my-MM-NilarNeural"
	VoiceNameMyMMThihaNeural                 VoiceName = "my-MM-ThihaNeural"
	VoiceNameNbNOPernilleNeural              VoiceName = "nb-NO-PernilleNeural"
	VoiceNameNbNOFinnNeural                  VoiceName = "nb-NO-FinnNeural"
	VoiceNameNbNOIselinNeural                VoiceName = "nb-NO-IselinNeural"
	VoiceNameNeNPHemkalaNeural               VoiceName = "ne-NP-HemkalaNeural"
	VoiceNameNeNPSagarNeural                 VoiceName = "ne-NP-SagarNeural"
	VoiceNameNlBEDenaNeural                  VoiceName = "nl-BE-DenaNeural"
	VoiceNameNlBEArnaudNeural                VoiceName = "nl-BE-ArnaudNeural"
	VoiceNameNlNLFennaNeural                 VoiceName = "nl-NL-FennaNeural"
	VoiceNameNlNLMaartenNeural               VoiceName = "nl-NL-MaartenNeural"
	VoiceNameNlNLColetteNeural               VoiceName = "nl-NL-ColetteNeural"
	VoiceNamePlPLAgnieszkaNeural             VoiceName = "pl-PL-AgnieszkaNeural"
	VoiceNamePlPLMarekNeural                 VoiceName = "pl-PL-MarekNeural"
	VoiceNamePlPLZofiaNeural                 VoiceName = "pl-PL-ZofiaNeural"
	VoiceNamePsAFLatifaNeural                VoiceName = "ps-AF-LatifaNeural"
	VoiceNamePsAFGulNawazNeural              VoiceName = "ps-AF-GulNawazNeural"
	VoiceNamePtBRFranciscaNeural             VoiceName = "pt-BR-FranciscaNeural"
	VoiceNamePtBRAntonioNeural               VoiceName = "pt-BR-AntonioNeural"
	VoiceNamePtBRBrendaNeural                VoiceName = "pt-BR-BrendaNeural"
	VoiceNamePtBRDonatoNeural                VoiceName = "pt-BR-DonatoNeural"
	VoiceNamePtBRElzaNeural                  VoiceName = "pt-BR-ElzaNeural"
	VoiceNamePtBRFabioNeural                 VoiceName = "pt-BR-FabioNeural"
	VoiceNamePtBRGiovannaNeural              VoiceName = "pt-BR-GiovannaNeural"
	VoiceNamePtBRHumbertoNeural              VoiceName = "pt-BR-HumbertoNeural"
	VoiceNamePtBRJulioNeural                 VoiceName = "pt-BR-JulioNeural"
	VoiceNamePtBRLeilaNeural                 VoiceName = "pt-BR-LeilaNeural"
	VoiceNamePtBRLeticiaNeural               VoiceName = "pt-BR-LeticiaNeural"
	VoiceNamePtBRManuelaNeural               VoiceName = "pt-BR-ManuelaNeural"
	VoiceNamePtBRNicolauNeural               VoiceName = "pt-BR-NicolauNeural"
	VoiceNamePtBRThalitaNeural               VoiceName = "pt-BR-ThalitaNeural"
	VoiceNamePtBRValerioNeural               VoiceName = "pt-BR-ValerioNeural"
	VoiceNamePtBRYaraNeural                  VoiceName = "pt-BR-YaraNeural"
	VoiceNamePtPTRaquelNeural                VoiceName = "pt-PT-RaquelNeural"
	VoiceNamePtPTDuarteNeural                VoiceName = "pt-PT-DuarteNeural"
	VoiceNamePtPTFernandaNeural              VoiceName = "pt-PT-FernandaNeural"
	VoiceNameRoROAlinaNeural                 VoiceName = "ro-RO-AlinaNeural"
	VoiceNameRoROEmilNeural                  VoiceName = "ro-RO-EmilNeural"
	VoiceNameRuRUSvetlanaNeural              VoiceName = "ru-RU-SvetlanaNeural"
	VoiceNameRuRUDmitryNeural                VoiceName = "ru-RU-DmitryNeural"
	VoiceNameRuRUDariyaNeural                VoiceName = "ru-RU-DariyaNeural"
	VoiceNameSiLKThiliniNeural               VoiceName = "si-LK-ThiliniNeural"
	VoiceNameSiLKSameeraNeural               VoiceName = "si-LK-SameeraNeural"
	VoiceNameSkSKViktoriaNeural              VoiceName = "sk-SK-ViktoriaNeural"
	VoiceNameSkSKLukasNeural                 VoiceName = "sk-SK-LukasNeural"
	VoiceNameSlSIPetraNeural                 VoiceName = "sl-SI-PetraNeural"
	VoiceNameSlSIRokNeural                   VoiceName = "sl-SI-RokNeural"
	VoiceNameSoSOUbaxNeural                  VoiceName = "so-SO-UbaxNeural"
	VoiceNameSoSOMuuseNeural                 VoiceName = "so-SO-MuuseNeural"
	VoiceNameSqALAnilaNeural                 VoiceName = "sq-AL-AnilaNeural"
	VoiceNameSqALIlirNeural                  VoiceName = "sq-AL-IlirNeural"
	VoiceNameSrLatnRSNicholasNeural          VoiceName = "sr-Latn-RS-NicholasNeural"
	VoiceNameSrLatnRSSophieNeural            VoiceName = "sr-Latn-RS-SophieNeural"
	VoiceNameSrRSSophieNeural                VoiceName = "sr-RS-SophieNeural"
	VoiceNameSrRSNicholasNeural              VoiceName = "sr-RS-NicholasNeural"
	VoiceNameSuIDTutiNeural                  VoiceName = "su-ID-TutiNeural"
	VoiceNameSuIDJajangNeural                VoiceName = "su-ID-JajangNeural"
	VoiceNameSvSESofieNeural                 VoiceName = "sv-SE-SofieNeural"
	VoiceNameSvSEMattiasNeural               VoiceName = "sv-SE-MattiasNeural"
	VoiceNameSvSEHilleviNeural               VoiceName = "sv-SE-HilleviNeural"
	VoiceNameSwKEZuriNeural                  VoiceName = "sw-KE-ZuriNeural"
	VoiceNameSwKERafikiNeural                VoiceName = "sw-KE-RafikiNeural"
	VoiceNameSwTZRehemaNeural                VoiceName = "sw-TZ-RehemaNeural"
	VoiceNameSwTZDaudiNeural                 VoiceName = "sw-TZ-DaudiNeural"
	VoiceNameTaINPallaviNeural               VoiceName = "ta-IN-PallaviNeural"
	VoiceNameTaINValluvarNeural              VoiceName = "ta-IN-ValluvarNeural"
	VoiceNameTaLKSaranyaNeural               VoiceName = "ta-LK-SaranyaNeural"
	VoiceNameTaLKKumarNeural                 VoiceName = "ta-LK-KumarNeural"
	VoiceNameTaMYKaniNeural                  VoiceName = "ta-MY-KaniNeural"
	VoiceNameTaMYSuryaNeural                 VoiceName = "ta-MY-SuryaNeural"
	VoiceNameTaSGVenbaNeural                 VoiceName = "ta-SG-VenbaNeural"
	VoiceNameTaSGAnbuNeural                  VoiceName = "ta-SG-AnbuNeural"
	VoiceNameTeINShrutiNeural                VoiceName = "te-IN-ShrutiNeural"
	VoiceNameTeINMohanNeural                 VoiceName = "te-IN-MohanNeural"
	VoiceNameThTHPremwadeeNeural             VoiceName = "th-TH-PremwadeeNeural"
	VoiceNameThTHNiwatNeural                 VoiceName = "th-TH-NiwatNeural"
	VoiceNameThTHAcharaNeural                VoiceName = "th-TH-AcharaNeural"
	VoiceNameTrTREmelNeural                  VoiceName = "tr-TR-EmelNeural"
	VoiceNameTrTRAhmetNeural                 VoiceName = "tr-TR-AhmetNeural"
	VoiceNameUkUAPolinaNeural                VoiceName = "uk-UA-PolinaNeural"
	VoiceNameUkUAOstapNeural                 VoiceName = "uk-UA-OstapNeural"
	VoiceNameUrINGulNeural                   VoiceName = "ur-IN-GulNeural"
	VoiceNameUrINSalmanNeural                VoiceName = "ur-IN-SalmanNeural"
	VoiceNameUrPKUzmaNeural                  VoiceName = "ur-PK-UzmaNeural"
	VoiceNameUrPKAsadNeural                  VoiceName = "ur-PK-AsadNeural"
	VoiceNameUzUZMadinaNeural                VoiceName = "uz-UZ-MadinaNeural"
	VoiceNameUzUZSardorNeural                VoiceName = "uz-UZ-SardorNeural"
	VoiceNameViVNHoaiMyNeural                VoiceName = "vi-VN-HoaiMyNeural"
	VoiceNameViVNNamMinhNeural               VoiceName = "vi-VN-NamMinhNeural"
	VoiceNameWuuCNXiaotongNeural             VoiceName = "wuu-CN-XiaotongNeural"
	VoiceNameWuuCNYunzheNeural               VoiceName = "wuu-CN-YunzheNeural"
	VoiceNameYueCNXiaoMinNeural              VoiceName = "yue-CN-XiaoMinNeural"
	VoiceNameYueCNYunSongNeural              VoiceName = "yue-CN-YunSongNeural"
	VoiceNameZhCNXiaoxiaoNeural              VoiceName = "zh-CN-XiaoxiaoNeural"
	VoiceNameZhCNYunxiNeural                 VoiceName = "zh-CN-YunxiNeural"
	VoiceNameZhCNYunjianNeural               VoiceName = "zh-CN-YunjianNeural"
	VoiceNameZhCNXiaoyiNeural                VoiceName = "zh-CN-XiaoyiNeural"
	VoiceNameZhCNYunyangNeural               VoiceName = "zh-CN-YunyangNeural"
	VoiceNameZhCNXiaochenNeural              VoiceName = "zh-CN-XiaochenNeural"
	VoiceNameZhCNXiaohanNeural               VoiceName = "zh-CN-XiaohanNeural"
	VoiceNameZhCNXiaomengNeural              VoiceName = "zh-CN-XiaomengNeural"
	VoiceNameZhCNXiaomoNeural                VoiceName = "zh-CN-XiaomoNeural"
	VoiceNameZhCNXiaoqiuNeural               VoiceName = "zh-CN-XiaoqiuNeural"
	VoiceNameZhCNXiaoruiNeural               VoiceName = "zh-CN-XiaoruiNeural"
	VoiceNameZhCNXiaoshuangNeural            VoiceName = "zh-CN-XiaoshuangNeural"
	VoiceNameZhCNXiaoxuanNeural              VoiceName = "zh-CN-XiaoxuanNeural"
	VoiceNameZhCNXiaoyanNeural               VoiceName = "zh-CN-XiaoyanNeural"
	VoiceNameZhCNXiaoyouNeural               VoiceName = "zh-CN-XiaoyouNeural"
	VoiceNameZhCNXiaozhenNeural              VoiceName = "zh-CN-XiaozhenNeural"
	VoiceNameZhCNYunfengNeural               VoiceName = "zh-CN-YunfengNeural"
	VoiceNameZhCNYunhaoNeural                VoiceName = "zh-CN-YunhaoNeural"
	VoiceNameZhCNYunxiaNeural                VoiceName = "zh-CN-YunxiaNeural"
	VoiceNameZhCNYunyeNeural                 VoiceName = "zh-CN-YunyeNeural"
	VoiceNameZhCNYunzeNeural                 VoiceName = "zh-CN-YunzeNeural"
	VoiceNameZhCNXiaorouNeural               VoiceName = "zh-CN-XiaorouNeural"
	VoiceNameZhCNYunjieNeural                VoiceName = "zh-CN-YunjieNeural"
	VoiceNameZhCNguangxiYunqiNeural          VoiceName = "zh-CN-guangxi-YunqiNeural"
	VoiceNameZhCNhenanYundengNeural          VoiceName = "zh-CN-henan-YundengNeural"
	VoiceNameZhCNliaoningXiaobeiNeural       VoiceName = "zh-CN-liaoning-XiaobeiNeural"
	VoiceNameZhCNliaoningYunbiaoNeural       VoiceName = "zh-CN-liaoning-YunbiaoNeural"
	VoiceNameZhCNshaanxiXiaoniNeural         VoiceName = "zh-CN-shaanxi-XiaoniNeural"
	VoiceNameZhCNshandongYunxiangNeural      VoiceName = "zh-CN-shandong-YunxiangNeural"
	VoiceNameZhCNsichuanYunxiNeural          VoiceName = "zh-CN-sichuan-YunxiNeural"
	VoiceNameZhCNXiaoxiaoMultiligualNeural   VoiceName = "zh-CN-XiaoxiaoMultiligualNeural"
	VoiceNameZhHKHiuMaanNeural               VoiceName = "zh-HK-HiuMaanNeural"
	VoiceNameZhHKWanLungNeural               VoiceName = "zh-HK-WanLungNeural"
	VoiceNameZhHKHiuGaaiNeural               VoiceName = "zh-HK-HiuGaaiNeural"
	VoiceNameZhTWHsiaoChenNeural             VoiceName = "zh-TW-HsiaoChenNeural"
	VoiceNameZhTWYunJheNeural                VoiceName = "zh-TW-YunJheNeural"
	VoiceNameZhTWHsiaoYuNeural               VoiceName = "zh-TW-HsiaoYuNeural"
	VoiceNameZuZAThandoNeural                VoiceName = "zu-ZA-ThandoNeural"
	VoiceNameZuZAThembaNeural                VoiceName = "zu-ZA-ThembaNeural"
)

func (VoiceName) String

func (v VoiceName) String() string

Directories

Path Synopsis
cmd
example
Package mockclient is a generated GoMock package.
Package mockclient is a generated GoMock package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL