Communication with the ASR server using WebSocket

1. The client connects to the ASR address, which /classify/asr
( wss://demo.voicelab.pl/classify/asr) waits for connections.

2. For connection, set and send the appropriate information in the
HTTP header when establishing the connection:

3. The client sends subsequent audio packages in the form of websocket binary messages.
After completing the audio stream, send a four-byte binary message
of which all four bytes are zeros (in case you would have to send four zeros as the last audio data message,
then divide
this message into two, e.g. two bytes by two, and then send four zeros bytes
terminating transmission), this is the transmission termination mark.

4. ASR returns the recognition as JSON document (websocket
text message) of the form:


{
    "status": "string: OK or ERROR",
    "shift": "string: how many words will come in recognition",
    "words": "array: list of reckognized words",
    "start": "(**) array: list with words' start times",
    "end": "(**) array: list with words' end times",
    "error": "(*) string: type of error",
    "description": "(*) string: short decription of error"
}
        

fields marked with (*) are optional and appear only if the status is different
"OK".
If the status is different than "OK", then the connection is
terminated. The type of error here will be either "BadRequest" or
"Forbidden".

the field marked with (**) is optional and appears depending on the server
configuration.

Final recognition: „ala pięknie śpiewa”.