rapid-exabyte-31869
06/14/2023, 11:44 AMlivekit-cli project add
Hey there!
Is anyone else having issues with LiveKit-CLI? The demo (https://example.livekit.io/) works perfectly with the token I generate, and my server responds well. But when I try to execute '`livekit-cli join-room ...`' it gives me the following response:
"_could not establish signal connection_."
I've tried it on both Linux and Windows with the same result.
Can someone help me?steep-balloon-41261
06/14/2023, 12:01 PMsteep-balloon-41261
06/14/2023, 12:33 PMsteep-balloon-41261
06/15/2023, 3:31 AMsteep-balloon-41261
06/15/2023, 6:49 AMsteep-balloon-41261
06/15/2023, 6:16 PMsteep-balloon-41261
06/15/2023, 10:01 PMsteep-balloon-41261
06/16/2023, 9:17 AMsteep-balloon-41261
06/16/2023, 12:58 PMsteep-balloon-41261
06/16/2023, 1:54 PMmammoth-eye-41400
06/16/2023, 6:04 PMfile, err := os.Open("../../test_audio.ogg")
if err != nil {
fmt.Println("Error opening file:", err)
return "", err
}
defer file.Close()
client := new(http.Client)
buffer := make([]byte, 1024)
for {
go func() {
defer close(currentCh)
defer wg.Done()
for {
n, err := file.Read(buffer)
if err != nil {
if err == io.EOF {
break
}
fmt.Println("Error reading file:", err, n)
return
}
// Send the packet of data to QueueReader
err = p.gptTrack.QueueReader(bytes.NewReader(buffer[:n]))
if err != nil {
logger.Errorw("Error sending packet to QueueReader", err)
return
}
}
_ = p.sendStatePacket(state_Speaking)
wg.Add(1)
}()
}
steep-balloon-41261
06/16/2023, 8:01 PMsteep-balloon-41261
06/17/2023, 9:34 PMsteep-balloon-41261
06/17/2023, 9:36 PMsteep-balloon-41261
06/18/2023, 7:25 AMsteep-balloon-41261
06/18/2023, 11:52 AMsteep-balloon-41261
06/18/2023, 5:14 PMsteep-balloon-41261
06/19/2023, 7:48 AMsteep-balloon-41261
06/19/2023, 1:57 PMsteep-balloon-41261
06/19/2023, 4:02 PMsteep-balloon-41261
06/19/2023, 7:43 PMsteep-balloon-41261
06/20/2023, 6:44 AMsteep-balloon-41261
06/20/2023, 10:45 AMsteep-balloon-41261
06/20/2023, 3:15 PMsteep-balloon-41261
06/20/2023, 5:13 PMsteep-balloon-41261
06/20/2023, 6:16 PMsteep-balloon-41261
06/20/2023, 8:06 PMfancy-army-59540
06/21/2023, 12:46 AMfunc (t *Transcriber) start() error {
defer func() {
close(t.closeCh)
}()
for {
// stream, err := t.newStream()
stream, err := t.newDeepgramStream()
if err != nil {
if status, ok := status.FromError(err); ok && status.Code() == codes.Canceled {
return nil
}
logger.Errorw("failed to create a new speech stream", err)
t.results <- RecognizeResult{
Error: err,
}
return err
}
endStreamCh := make(chan struct{})
nextCh := make(chan struct{})
// Forward oggreader to the speech stream
go func() {
defer close(nextCh)
buf := make([]byte, 1024)
for {
select {
case <-endStreamCh:
return
default:
n, err := t.oggReader.Read(buf)
if err != nil {
if err != io.EOF {
logger.Errorw("failed to read from ogg reader", err)
}
return
}
if n <= 0 {
continue // No data
}
if err := stream.WriteMessage(websocket.BinaryMessage, buf[:n]); err != nil {
if err != io.EOF {
logger.Errorw("failed to forward audio data to speech stream", err)
t.results <- RecognizeResult{
Error: err,
}
}
return
}
}
}
}()
// Read transcription results
for {
_, msg, err := stream.ReadMessage() // Read from Deepgram
if err != nil {
log.Println("failed to read transcription message", err)
break
} else {
log.Println("Success awesome !!")
}
jsonParsed, _ := gabs.ParseJSON(msg)
log.Printf("recv 0--------------------------00000 : %s", jsonParsed.Path("channel.alternatives.0.transcript").String())
var txtMsg = jsonParsed.Path("channel.alternatives.0.transcript").String()
t.results <- RecognizeResult{
Text: txtMsg,
IsFinal: true,
}
}
close(endStreamCh)
// When nothing is written on the transcriber (The track is muted), this will block because the oggReader
// is waiting for data. It avoids to create useless speech streams. (Also we end up here because Google automatically close the
// previous stream when there's no "activity")
//
// Otherwise (When we have data) it is used to wait for the end of the current stream,
// so we can create the next one and reset the oggSerializer
<-nextCh
// Create a new oggSerializer each time we open a new SpeechStream
// This is required because the stream requires ogg headers to be sent again
t.lock.Lock()
t.oggSerializer = nil
t.lock.Unlock()
}
}
func (t *Transcriber) newDeepgramStream() (*websocket.Conn, error) {
dg := *deepgram.NewClient("<MY API KEY....>")
options := deepgram.LiveTranscriptionOptions{
Language: "en-US",
Punctuate: true,
}
dgConn, _, err := dg.LiveTranscription(options)
dgConn.SetWriteDeadline(time.Time{})
dgConn.SetReadDeadline(time.Time{})
if err != nil {
return nil, err
}
return dgConn, nil
}
hundreds-orange-8321
06/21/2023, 6:02 AMsteep-balloon-41261
06/21/2023, 6:06 AM