package main
import (
"context"
"encoding/base64"
"fmt"
"log"
"os"
"github.com/lokutor-ai/lokutor-go"
)
func main() {
// Initialize client
client := lokutor.NewClient("YOUR_API_KEY", "")
ctx := context.Background()
// Synthesize speech
req := lokutor.TTSRequest{
Text: "Welcome to Lokutor! This is a high-quality text-to-speech system.",
Voice: "F1",
Quality: "high",
Speed: 1.0,
OutputFormat: "mp3_22050",
IncludeVisemes: true,
Language: "en",
}
resp, err := client.Synthesize(ctx, req)
if err != nil {
log.Fatalf("โ API Error: %v", err)
}
// Decode and save audio
audioBytes, err := base64.StdEncoding.DecodeString(resp.AudioBase64)
if err != nil {
log.Fatalf("โ Decode Error: %v", err)
}
err = os.WriteFile("output.mp3", audioBytes, 0644)
if err != nil {
log.Fatalf("โ File Error: %v", err)
}
fmt.Printf("โ
Audio saved! Duration: %.2fs\n", resp.Duration)
// Print visemes if available
if len(resp.Visemes) > 0 {
fmt.Printf("๐ Visemes: %d frames\n", len(resp.Visemes))
for i := 0; i < 5 && i < len(resp.Visemes); i++ {
v := resp.Visemes[i]
fmt.Printf(" - ID: %d, Offset: %dms\n", v.ID, v.OffsetMs)
}
}
}