From 72d9a6a568b562aa8839b7e353b7df12a2255438 Mon Sep 17 00:00:00 2001 From: ringsaturn Date: Tue, 5 Dec 2023 11:06:38 +0800 Subject: [PATCH] Add cli --- .gitignore | 1 + cmd/azuretts/main.go | 52 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 cmd/azuretts/main.go diff --git a/.gitignore b/.gitignore index ba418a6..1ec9fba 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ tmp/ .env *.mp3 +cmd/azuretts/azuretts diff --git a/cmd/azuretts/main.go b/cmd/azuretts/main.go new file mode 100644 index 0000000..a8954b9 --- /dev/null +++ b/cmd/azuretts/main.go @@ -0,0 +1,52 @@ +package main + +import ( + "context" + "flag" + "os" + + "github.com/ringsaturn/azuretts" +) + +var ( + languageFlag = flag.String("language", "zh-CN", "Language Flags") + voiceFlag = flag.String("voice", azuretts.VoiceNameZhCNYunxiNeural.String(), "Voice Flags") + styleFlag = flag.String("style", azuretts.StyleChat.String(), "Style Flags") + rateFlag = flag.Int("rate", 1, "Rate") + styleDegreeFlag = flag.Int("styledegree", 2, "Style Degree") + volumeFlag = flag.Int("volume", 100, "Volume") + textFlag = flag.String("text", "你好,世界", "Text") + outputFileName = flag.String("output", "audio.mp3", "Output File Name") +) + +func main() { + flag.Parse() + + c := azuretts.NewClient( + os.Getenv("SPEECH_KEY"), + azuretts.Region(os.Getenv("SPEECH_REGION")), + ) + speak := azuretts.NewSpeak( + azuretts.WithLanguage(azuretts.Language(*languageFlag)), + azuretts.WithVoiceName(azuretts.VoiceName(*voiceFlag)), + azuretts.WithStyle(azuretts.Style(*styleFlag)), + azuretts.WithRate(float64(*rateFlag)), + azuretts.WithVoiceStyledegree(float64(*styleDegreeFlag)), + azuretts.WithSpeechText(*textFlag), + azuretts.WithVolume(*volumeFlag), + ) + 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(*outputFileName, b.Body, 0644) + if err != nil { + panic(err) + } +}