add sample say program

This commit is contained in:
2023-04-18 22:09:25 -07:00
parent eeac0e7dce
commit 48f074cc9c
4 changed files with 79 additions and 4 deletions

1
cmd/say/.gitignore vendored
View File

@@ -1,2 +1,3 @@
*.mp3
main
say

View File

@@ -1,8 +1,17 @@
package main
import (
"bufio"
"bytes"
"context"
"io"
"log"
"os"
"time"
"github.com/faiface/beep"
"github.com/faiface/beep/mp3"
"github.com/faiface/beep/speaker"
"github.com/taigrr/elevenlabs/client"
"github.com/taigrr/elevenlabs/client/types"
@@ -15,13 +24,28 @@ func main() {
if err != nil {
panic(err)
}
saveFile, err := os.Create("sample.mp3")
buf := bytes.Buffer{}
w := bufio.NewWriter(&buf)
reader := bufio.NewReader(os.Stdin)
text, _ := reader.ReadString('\n')
err = client.TTSWriter(ctx, w, text, ids[0], types.SynthesisOptions{Stability: 0.75, SimilarityBoost: 0.75})
if err != nil {
panic(err)
}
defer saveFile.Close()
err = client.TTSWriter(ctx, saveFile, "hello, golang", ids[0], types.SynthesisOptions{Stability: 0.75, SimilarityBoost: 0.75})
r := io.NopCloser(bytes.NewReader(buf.Bytes()))
streamer, format, err := mp3.Decode(r)
if err != nil {
panic(err)
log.Fatal(err)
}
defer streamer.Close()
speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10))
done := make(chan bool)
speaker.Play(beep.Seq(streamer, beep.Callback(func() {
done <- true
})))
<-done
}