雾聪
2023-06-24 c062a9d72e18926b97f4f5e6357a1986569069a1
add iArray initialization;split big datas to small blocks
1个文件已修改
22 ■■■■ 已修改文件
funasr/runtime/websocket/funasr-wss-client.cpp 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/runtime/websocket/funasr-wss-client.cpp
@@ -238,15 +238,26 @@
        // fetch wav data use asr engine api
        while (audio.Fetch(buff, len, flag) > 0) {
            short iArray[len];
            // convert float -1,1 to short -32768,32767
            short* iArray = new short[len];
            for (size_t i = 0; i < len; ++i) {
              iArray[i] = (short)(buff[i] * 32767);
              iArray[i] = (short)(buff[i]*32768);
            }
            // send data to server
            m_client.send(m_hdl, iArray, len * sizeof(short),
            int offset = 0;
            int block_size = 102400;
            while(offset < len){
                int send_block = 0;
                if (offset + block_size <= len){
                    send_block = block_size;
                }else{
                    send_block = len - offset;
                }
                m_client.send(m_hdl, iArray+offset, send_block * sizeof(short),
                          websocketpp::frame::opcode::binary, ec);
                offset += send_block;
            }
            LOG(INFO) << "sended data len=" << len * sizeof(short);
            // The most likely error that we will get is that the connection is
            // not in the right state. Usually this means we tried to send a
@@ -258,6 +269,7 @@
                                        "Send Error: " + ec.message());
              break;
            }
            delete[] iArray;
            // WaitABit();
        }
        nlohmann::json jsonresult;