1 Commits

Author SHA1 Message Date
samy kamkar
c585531fae Support command line text & new API attributes (#8)
* support `style` and `use_speaker_boost` API attrs

* support optional command line string as text

* print out time it took to run
2024-07-24 12:14:00 -07:00
3 changed files with 25 additions and 5 deletions

View File

@@ -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)
}

View File

@@ -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 {

View File

@@ -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()
// 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)
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)
}