【问题标题】:Send binary data with headers text发送带有标题文本的二进制数据
【发布时间】:2018-06-28 19:39:57
【问题描述】:

我正在 Golang 和 Gorilla WebSocket 中创建一项服务,该服务将使用 Microsoft Bing 语音服务将语音转换为文本。 供参考

https://docs.microsoft.com/en-us/azure/cognitive-services/speech/api-reference-rest/websocketprotocol

javascript 实现

https://github.com/Azure-Samples/SpeechToText-WebSockets-Javascript

这里我们需要发送文本数据以及带有标题的音频数据。 我能够发送文本数据,但无法发送带有标题的音频二进制数据。

请建议我如何发送数据

谢谢 迪内什·古普塔

【问题讨论】:

    标签: go websocket gorilla


    【解决方案1】:

    经过大量谷歌搜索后,我提出了以下解决方案,无论好坏。 请提供我可以改进的地方。

    我为标头创建了 2 个字节,然后是标头字符串的长度,最后是缓冲数据的长度。代码如下:

    import(
       "encoding/binary"
       "fmt"
       "time"
       "strings"
       "encoding/json"
    )
    func BufferToBytes(buffer *[]byte, requestId string) *[]byte{
       headersString := GetHeaders("audio", requestId, "audio/x-wav")
       headersString = strings.Replace(headersString, "\n", "\r\n", -1)
       headerInt8Array := []byte(headersString)
       payload := make([]byte,2)
       binary.BigEndian.PutUint16(payload, uint16(len(headerInt8Array)))//till 1st part
       t := make([]byte, len(headerInt8Array))
       for i := 0; i < len(headerInt8Array); i++ {
        t[i] = headerInt8Array[i];
       }
       payload = append(payload, t...)//till 2nd part
       payload = append(payload, *buffer...)//final part
       return &payload;
    }
    
    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",params[2])////content type
        return header
    }
    
    func GetTimestamp() string {
       format := "2006-01-02T15:04:05.000Z"
       return time.Now().UTC().Format(format)
    }
    

    然后这个数据被 MS bing 接受。

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-16
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-07
      相关资源
      最近更新 更多