diff --git a/README.md b/README.md index d5470d6..6671f4f 100644 --- a/README.md +++ b/README.md @@ -69,7 +69,7 @@ func main() { text, _ := reader.ReadString('\n') go func() { // stream audio from elevenlabs using the first voice we found - err = client.TTSStream(ctx, pipeWriter, text, ids[0], types.SynthesisOptions{Stability: 0.75, SimilarityBoost: 0.75}) + err = client.TTSStream(ctx, pipeWriter, text, ids[0], types.SynthesisOptions{Stability: 0.75, SimilarityBoost: 0.75, Style: 0.0, UseSpeakerBoost: true}) if err != nil { panic(err) } diff --git a/client/types/types.go b/client/types/types.go index e1d43e5..92bc22c 100644 --- a/client/types/types.go +++ b/client/types/types.go @@ -31,11 +31,19 @@ func (so *SynthesisOptions) Clamp() { if so.SimilarityBoost > 1 || so.SimilarityBoost < 0 { so.SimilarityBoost = 0.75 } + if so.Style > 1 || so.Style < 0 { + so.Style = 0.0 + } + if so.UseSpeakerBoost != true && so.UseSpeakerBoost != false { + so.UseSpeakerBoost = true + } } type SynthesisOptions struct { Stability float64 `json:"stability"` SimilarityBoost float64 `json:"similarity_boost"` + Style float64 `json:"style"` + UseSpeakerBoost bool `json:"use_speaker_boost"` } type SharingOptions struct { diff --git a/cmd/say/main.go b/cmd/say/main.go index 7e3016e..dd5157c 100644 --- a/cmd/say/main.go +++ b/cmd/say/main.go @@ -7,6 +7,7 @@ import ( "log" "os" "time" + "strings" "github.com/faiface/beep" "github.com/faiface/beep/mp3" @@ -25,12 +26,23 @@ func main() { } pipeReader, pipeWriter := io.Pipe() - reader := bufio.NewReader(os.Stdin) - b, _ := io.ReadAll(reader) - text := string(b) + // record how long it takes to run and print out on exit + start := time.Now() + defer func() { + log.Println(time.Since(start)) + }() + + var text string + if len(os.Args) > 1 { + text = strings.Join(os.Args[1:], " ") + } else { + reader := bufio.NewReader(os.Stdin) + b, _ := io.ReadAll(reader) + text = string(b) + } go func() { - err = client.TTSStream(ctx, pipeWriter, text, ids[0], types.SynthesisOptions{Stability: 0.75, SimilarityBoost: 0.75}) + err = client.TTSStream(ctx, pipeWriter, text, ids[0], types.SynthesisOptions{Stability: 0.75, SimilarityBoost: 0.75, Style: 0.0, UseSpeakerBoost: false}) if err != nil { panic(err) }