Skip to content

WqyJh/go-cosyvoice

Repository files navigation

CosyVoice SDK for Golang

Go Reference Go Report Card codecov

This library provides unofficial Go clients for cosyvoice-websocket-api.

Installation

go get github.com/WqyJh/go-cosyvoice

Currently, go-cosyvoice requires Go version 1.19 or greater.

Usage

Async Synthesizer (Streaming)

import (
	"context"
	"fmt"
	"os"

	"github.com/WqyJh/go-cosyvoice"
)

func main() {
	client := cosyvoice.NewClient("your-api-key")

	ctx := context.Background()

	asyncSynthesizer, err := client.AsyncSynthesizer(ctx)
	if err != nil {
		log.Fatal(err)
	}
	defer asyncSynthesizer.Close()

    output, err := synthesizer.RunTask(ctx)
	if err != nil {
		log.Println("run task err", err)
		return
	}

    texts := []string{"Hello, world!", "你好,世界!"}
    for _, text := range texts {
		err := synthesizer.SendText(ctx, text)
		if err != nil {
			log.Println("send text err", err)
			return
		}
	}

	err = synthesizer.FinishTask(ctx)
	if err != nil {
		log.Println("finish task err", err)
		return
	}

    for result := range output {
        if result.Err != nil {
            log.Println("result err", result.Err)
            return
        }
        // handle audio data
        log.Println("received audio", len(result.Data))
    }
}

Sync Synthesizer (Non-Streaming)

import (
	"context"
	"fmt"
	"os"

	"github.com/WqyJh/go-cosyvoice"
)

func main() {
	client := cosyvoice.NewClient("your-api-key")

	ctx := context.Background()

	syncSynthesizer, err := client.SyncSynthesizer(ctx)
	if err != nil {
		log.Fatal(err)
	}
	defer syncSynthesizer.Close()

    output, err := syncSynthesizer.Call(ctx, "Hello, world!")
    if err != nil {
        log.Println("call err", err)
        return
    }

    for result := range output {
        if result.Err != nil {
            log.Println("result err", result.Err)
            return
        }
        // handle audio data
        log.Println("received audio", len(result.Data))
    }

    // another call
    output, err = syncSynthesizer.Call(ctx, "你好,世界!")
    if err != nil {
        log.Println("call err", err)
        return
    }
}

Use another WebSocket dialer

The default websocket library is coder/websocket. You can use another websocket library by setting a custom dialer.

import (
	gorilla "github.com/WqyJh/go-cosyvoice/contrib/ws-gorilla"
)


func main() {
	syncSynthesizer, err := client.SyncSynthesizer(ctx,
		cosyvoice.WithDialer(gorilla.NewWebSocketDialer(gorilla.WebSocketOptions{})),
	)
}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published