sayerapigo is a muli component that provides Sayer (Text-to-Speech) Service & Client API implementation in Go.
🔑 This is a muli component. You can find the main repository here.
⚠️ Following documentation is generated by ChatGPT. It may not be accurate.
Use go get to install SayerApiGo.
go get github.com/murchinroom/sayerapigoThe Sayer interface defines the Say method, which takes in a role and text, and returns the format of the audio file and the audio file content.
type Sayer interface {
Say(role string, text string) (format string, audio []byte, err error)
}The ServeGrpc function serves the gRPC server for the SayerService. You need to provide a Sayer implementation that will be used to handle incoming requests.
func ServeGrpc(ctx context.Context, sayer Sayer, addr string) errorAn example of how to use the ServeGrpc function can be found in the Examples section.
The SayerClient struct is a gRPC client for the SayerService. You can use it to make text-to-speech conversion requests.
type SayerClient struct {
// ...
}
func NewSayerClient(addr string) (*SayerClient, error)
func (c *SayerClient) Say(role string, text string) (format string, audio []byte, err error)
func (c *SayerClient) Close() errorThere is also a SayerClientPool struct, which is a pool of SayerClients. It implements the Sayer interface, so you can use it as a Sayer.
type SayerClientPool struct {
// ...
}
func NewSayerClientPool(addr string, size int64) (*SayerClientPool, error)
func (p *SayerClientPool) Say(role string, text string) (format string, audio []byte, err error)Here's an example of how to use the SayerApiGo library:
package main
import (
"context"
"fmt"
"github.com/murchinroom/sayerapigo"
)
type MySayer struct {}
func (s *MySayer) Say(role string, text string) (format string, audio []byte, err error) {
// Your text-to-speech conversion code here
}
func main() {
// Create a new MySayer instance
sayer := &MySayer{}
// Serve the gRPC server
ctx := context.Background()
err := sayerapigo.ServeGrpc(ctx, sayer, "localhost:9000")
if err != nil {
fmt.Printf("Error serving gRPC server: %v\n", err)
return
}
// Create a new SayerClient
client, err := sayerapigo.NewSayerClient("localhost:9000")
if err != nil {
fmt.Printf("Error creating SayerClient: %v\n", err)
return
}
defer client.Close()
// Call the Say method to convert text to speech
format, audio, err := client.Say("default", "Hello, World!")
if err != nil {
fmt.Printf("Error converting text to speech: %v\n", err)
return
}
// Do something with the audio file
fmt.Printf("Audio file format: %v\n", format)
fmt.Printf("Audio file content: %v\n", audio)
}SayerApiGo is licensed under the MIT license. See the LICENSE file for more information.