Skip to content
This repository has been archived by the owner on Nov 16, 2023. It is now read-only.

Web Socket connection get closed #87

Open
DineshGuptaa opened this issue Jun 26, 2018 · 2 comments
Open

Web Socket connection get closed #87

DineshGuptaa opened this issue Jun 26, 2018 · 2 comments

Comments

@DineshGuptaa
Copy link

Hi,

I want to make hands-free service for the mobile user so that user can speak and that should convert into text. I am implementing using Golang. I am refering https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/websocketprotocol

I am creation Gorilla WebSocket connection & getting the response as:

101 Switching Protocols 101 HTTP/1.1 1 1 map[X-Xss-Protection:[1; mode=block] X-Content-Type-Options:[nosniff] Referrer-Policy:[strict-origin-when-cross-origin] X-Msedge-Ref:[Ref A: 15D9AB468CB24BEB99668649AF797A71 Ref B: BOM02EDGE0322 Ref C: 2018-06-26T06:58:40Z] Connection:[Upgrade] Sec-Websocket-Accept:[xA4dpm5gNAwD17GxUXDq/+cXVjg=] X-Frame-Options:[DENY] Content-Security-Policy:[object-src 'none'; form-action 'self'; frame-ancestors 'none'] Date:[Tue, 26 Jun 2018 06:58:39 GMT] Upgrade:[websocket] Strict-Transport-Security:[max-age=31536000]] {0xc0421f3ec0} 0 [] false false map[]

After that I am sending the text message

 path: speech.config
 x-requestid: 7D3CD165552546CF850A480FEBD62007
 x-timestamp: 2018-06-06T06:58:41.990Z
 content-type: application/json

 {"Context":{"system":{"version":"1.0.1"},"os":{"platform":"x86_64","name":"windows","version":"10.0.17134.112"},"device":{"manufacturer":"SpeechSample","model":"SpeechSample","version":"1.0.1"}}}

After sending above message I am getting below error message

read tcp 100.64.145.14:59102->13.107.21.200:443: use of closed network connection

Please help me MS STT implemetion in Golang

Thanks
Dinesh Gupta

@DineshGuptaa
Copy link
Author

DineshGuptaa commented Jun 27, 2018

Hi All,

I tried to make websocket connection from a single file
I used code from here
https://github.com/gorilla/websocket/blob/master/examples/echo/client.go
and after making a connection I sent the config but I receive the error. code is as below

textMsg := msrecognize.GetHeaders("speech.config", "547578238432049")
config, err := msrecognize.GetSpeechConfig()
textMsg = fmt.Sprintf("%s\n%s", textMsg, config)
err = c.WriteMessage(websocket.TextMessage, []byte(textMsg))

and

func GetSpeechConfig() (string,error) {
    gi := goInfo.GetInfo()
    device := Device{Manufacturer:"JioSample",Model:"JioSample",Version:version}
    os := OS{Platform:"x86_64", Name: gi.GoOS, Version:gi.Core}
    system := System{Version: version}
        context := Context{System: system,OS:os, Device:device}
        config := SpeechConfig{Context:context}
        byt, err := json.Marshal(config)
        if err == nil{
        return string(byt), err
       }else{
	      return "", err
      }
  }
 func GetHeaders(params... string) string{
header := fmt.Sprintf("path: %s\n", params[0])
header += fmt.Sprintf("x-requestid: %s\n",params[1])//request id
header += fmt.Sprintf("x-timestamp: %s\n",GetTimestamp())// timestamp
header += fmt.Sprintf("content-type: %s\n","application/json; charset=utf-8")////content type
return header
}

And received below response from service:

  connecting to wss://speech.platform.bing.com/speech/recognition/interactive/cognitiveservices/v1? format=simple&language=en-US&Ocp-Apim-Subscription-Key=e140575af9064bd8a2e5e47a0b5e829a&X- ConnectionId=9AD09FD5DD244BBCBCA2B8DC8AB91A9B
  read: websocket: close 1007 (invalid payload data): Incorrect message format. Text message contains no header separator

Please help me on the same or suggest me any implementation on Golang. I am stuck here unable to proceed.

Regards,
Dinesh Gupta

@DineshGuptaa
Copy link
Author

Hi All,
Now I am able correct format so that can be accepted by speech.config

textMsg := msrecognize.GetHeaders("speech.config", "547578238432049", "application/json; charset=utf-8")
config, err := msrecognize.GetSpeechConfig()
textMsg = fmt.Sprintf("%s\n%s", textMsg, config)
 -->s := strings.Replace(textMsg, "\n", "\r\n", -1)
err = c.WriteMessage(websocket.TextMessage, []byte(s))

Now I am have different issue. As I am sending the text message, same way I tried to send binary data

textMsg1 := msrecognize.GetHeaders("audio", "547578238432049", "audio/x-wav")
_, err1 := ioutil.ReadFile("C:/Users/dinesh/Desktop/Test.wav")
textMsg = fmt.Sprintf("%s\n%s", textMsg1, string("RIFF,�"))
ss := strings.Replace(textMsg, "\n", "\r\n", -1)\
err1 = c.WriteMessage(websocket.BinaryMessage, []byte(ss))

I am getting below repsonse from service:

websocket: close 1007 (invalid payload data): Incorrect message format. Binary message has invalid header size

Please help me to send send the binary data to speech websocket

Regards,
Dinesh Gupta

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant