Change wyoming Event.Data type to string

This commit is contained in:
Alex X
2025-04-22 16:35:44 +03:00
parent 7cf672da84
commit 70b4bf779e
5 changed files with 14 additions and 13 deletions

View File

@@ -64,10 +64,11 @@ func (w *API) ReadEvent() (*Event, error) {
evt := Event{Type: hdr.Type}
if hdr.DataLength > 0 {
evt.Data = make([]byte, hdr.DataLength)
if _, err = io.ReadFull(w.rd, evt.Data); err != nil {
data = make([]byte, hdr.DataLength)
if _, err = io.ReadFull(w.rd, data); err != nil {
return nil, err
}
evt.Data = string(data)
}
if hdr.PayloadLength > 0 {
@@ -86,7 +87,7 @@ func (w *API) Close() error {
type Event struct {
Type string
Data []byte
Data string
Payload []byte
}

View File

@@ -44,7 +44,7 @@ func (b *Backchannel) AddTrack(media *core.Media, codec *core.Codec, track *core
ts := time.Now().Nanosecond()
evt := &Event{
Type: "audio-chunk",
Data: []byte(fmt.Sprintf(`{"rate":22050,"width":2,"channels":1,"timestamp":%d}`, ts)),
Data: fmt.Sprintf(`{"rate":22050,"width":2,"channels":1,"timestamp":%d}`, ts),
Payload: pkt.Payload,
}
_ = b.api.WriteEvent(evt)

View File

@@ -16,7 +16,7 @@ func (s *Server) HandleMic(conn net.Conn) error {
api := NewAPI(conn)
mic := newMicConsumer(func(chunk []byte) {
data := fmt.Sprintf(`{"rate":16000,"width":2,"channels":1,"timestamp":%d}`, timestamp)
evt := &Event{Type: "audio-chunk", Data: []byte(data), Payload: chunk}
evt := &Event{Type: "audio-chunk", Data: data, Payload: chunk}
if err := api.WriteEvent(evt); err != nil {
closed.Done(nil)
}

View File

@@ -57,7 +57,7 @@ func (s *Server) Handle(conn net.Conn) error {
case "describe":
// {"asr": [], "tts": [], "handle": [], "intent": [], "wake": [], "satellite": {"name": "my satellite", "attribution": {"name": "", "url": ""}, "installed": true, "description": "my satellite", "version": "1.4.1", "area": null, "snd_format": null}}
data := fmt.Sprintf(`{"satellite":{"name":%q,"attribution":{"name":"go2rtc","url":"https://github.com/AlexxIT/go2rtc"},"installed":true}}`, s.Name)
_ = api.WriteEvent(&Event{Type: "info", Data: []byte(data)})
_ = api.WriteEvent(&Event{Type: "info", Data: data})
case "run-satellite":
if err = sat.run(); err != nil {
return err
@@ -193,7 +193,7 @@ func (s *satellite) onMicChunk(chunk []byte) {
// some problems with wake word - redirect to HA
evt := &Event{
Type: "run-pipeline",
Data: []byte(`{"start_stage":"wake","end_stage":"tts","restart_on_end":false}`),
Data: `{"start_stage":"wake","end_stage":"tts","restart_on_end":false}`,
}
if err := s.api.WriteEvent(evt); err != nil {
return
@@ -211,7 +211,7 @@ func (s *satellite) onMicChunk(chunk []byte) {
// check if wake word detected
evt := &Event{
Type: "run-pipeline",
Data: []byte(`{"start_stage":"asr","end_stage":"tts","restart_on_end":false}`),
Data: `{"start_stage":"asr","end_stage":"tts","restart_on_end":false}`,
}
_ = s.api.WriteEvent(evt)
s.state = stateStreaming
@@ -232,7 +232,7 @@ func (s *satellite) onMicChunk(chunk []byte) {
if s.state == stateStreaming {
data := fmt.Sprintf(`{"rate":16000,"width":2,"channels":1,"timestamp":%d}`, s.timestamp)
evt := &Event{Type: "audio-chunk", Data: []byte(data), Payload: chunk}
evt := &Event{Type: "audio-chunk", Data: data, Payload: chunk}
_ = s.api.WriteEvent(evt)
}

View File

@@ -53,7 +53,7 @@ func (w *WakeWord) handle() {
var data struct {
Name string `json:"name"`
}
if err = json.Unmarshal(evt.Data, &data); err != nil {
if err = json.Unmarshal([]byte(evt.Data), &data); err != nil {
return
}
w.Detection = data.Name
@@ -95,7 +95,7 @@ func (w *WakeWord) Start() error {
if err != nil {
return err
}
evt := &Event{Type: "detect", Data: data}
evt := &Event{Type: "detect", Data: string(data)}
if err := w.WriteEvent(evt); err != nil {
return err
}
@@ -114,7 +114,7 @@ func (w *WakeWord) WriteChunk(payload []byte) error {
return w.WriteEvent(evt)
}
func audioData(send int) []byte {
func audioData(send int) string {
// timestamp in ms = send / 2 * 1000 / 16000 = send / 32
return []byte(fmt.Sprintf(`{"rate":16000,"width":2,"channels":1,"timestamp":%d}`, send/32))
return fmt.Sprintf(`{"rate":16000,"width":2,"channels":1,"timestamp":%d}`, send/32)
}