Klien Sintesis Suara Elevenlabs.io (11.ai) Tidak Resmi
Perpustakaan ini tidak berafiliasi dengan, atau dikaitkan dengan ElevenLab dengan cara apa pun.
Dokumentasi API resmi ElevenLabs, di mana klien ini diturunkan, dapat ditemukan di sini.
Klien Go ini menyediakan antarmuka yang mudah untuk membuat suara yang disintesis dan membuat permintaan TTS (teks-ke-pidato) ke ElevenLabs.io
Sebagai prasyarat, Anda harus sudah memiliki akun dengan Elevenlabs.io. Setelah membuat akun Anda, Anda bisa mendapatkan kunci API Anda dari sini.
Untuk menguji contoh say program, jalankan:
go install github.com/taigrr/elevenlabs/cmd/say@latest
Atur variabel lingkungan XI_API_KEY , dan pipa beberapa teks untuk memberikan pusaran!
Untuk menggunakan perpustakaan ini, buat klien baru dan kirim permintaan TTS ke suara. Blok kode berikut menggambarkan bagaimana seseorang dapat mereplikasi perintah Say/Espeak, menggunakan titik akhir streaming. Saya telah memilih untuk menggunakan paket bip Faiface, tetapi Anda juga dapat menyimpan file ke mp3 on-disk.
package main
import (
"bufio"
"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"
)
func main () {
ctx := context . Background ()
// load in an API key to create a client
client := client . New ( os . Getenv ( "XI_API_KEY" ))
// fetch a list of voice IDs from elevenlabs
ids , err := client . GetVoiceIDs ( ctx )
if err != nil {
panic ( err )
}
// prepare a pipe for streaming audio directly to beep
pipeReader , pipeWriter := io . Pipe ()
reader := bufio . NewReader ( os . Stdin )
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 , Style : 0.0 , UseSpeakerBoost : true })
if err != nil {
panic ( err )
}
pipeWriter . Close ()
}()
// decode and prepare the streaming mp3 as it comes through
streamer , format , err := mp3 . Decode ( pipeReader )
if err != nil {
log . Fatal ( err )
}
defer streamer . Close ()
speaker . Init ( format . SampleRate , format . SampleRate . N ( time . Second / 10 ))
done := make ( chan bool )
// play the audio
speaker . Play ( beep . Seq ( streamer , beep . Callback ( func () {
done <- true
})))
<- done
}Contoh berikut menunjukkan cara menghasilkan efek suara menggunakan API generasi suara:
package main
import (
"context"
"os"
"github.com/taigrr/elevenlabs/client"
)
func main () {
ctx := context . Background ()
// Create a new client with your API key
client := client . New ( os . Getenv ( "XI_API_KEY" ))
// Generate a sound effect and save it to a file
f , err := os . Create ( "footsteps.mp3" )
if err != nil {
panic ( err )
}
defer f . Close ()
// Basic usage (using default duration and prompt influence)
err = client . SoundGenerationWriter ( ctx , f , "footsteps on wooden floor" , 0 , 0 )
if err != nil {
panic ( err )
}
// Advanced usage with custom duration and prompt influence
audio , err := client . SoundGeneration (
ctx ,
"heavy rain on a tin roof" ,
5.0 , // Set duration to 5 seconds
0.5 , // Set prompt influence to 0.5
)
if err != nil {
panic ( err )
}
os . WriteFile ( "rain.mp3" , audio , 0644 )
}