xiangyuecn / Recorder

html5 js 录音 mp3 wav ogg webm amr g711a g711u 格式,支持pc和Android、iOS部分浏览器、Hybrid App(提供Android iOS App源码)、微信,提供ASR语音识别转文字 H5版语音通话聊天示例 DTMF编码解码
https://xiangyuecn.github.io/Recorder/
MIT License
4.59k stars 1.01k forks source link

实时转写,在移动版本上,录制时间越久,转写结果出来的越慢 #194

Open yz0903 opened 10 months ago

yz0903 commented 10 months ago

每次上传固定音频流,实时转写,在移动版本上,录制时间越久,转写结果出来的越慢 ,可能是什么原因导致的呢 借鉴以下案例代码实现的 https://xiangyuecn.gitee.io/recorder/assets/%E5%B7%A5%E5%85%B7-%E4%BB%A3%E7%A0%81%E8%BF%90%E8%A1%8C%E5%92%8C%E9%9D%99%E6%80%81%E5%88%86%E5%8F%91Runtime.html?jsname=teach.realtime.encode_transfer_frame_pcm

xiangyuecn commented 10 months ago

发送的音频数据没有问题的话,那就是语音识别接口的问题

yz0903 commented 10 months ago
  • 检查每次最终发送出去的数据长度
  • 把每次发送的数据存起来,最后保存成一个blob 用URL.createObjectURL生成url下载下来,这里可以播放pcm 检查音频数据是不是正常的

发送的音频数据没有问题的话,那就是语音识别接口的问题

按照上面那个例子会出现数据延后一点发送的情况,现在改为直接转了数据就发送给后端是实时的

 realTimeSendChunk(buffers, bufferSampleRate) {
            if (buffers.length > 0) {
                let pcm = []
                let chunk = Recorder.SampleData(buffers, bufferSampleRate, targetSampleRate, realTimeSendTryChunk)
                for(let i = realTimeSendTryChunk ? realTimeSendTryChunk.index : 0; i < chunk.index; i++){
                    buffers[i] = null
                }
                realTimeSendTryChunk = chunk
                pcm = chunk.data
                this.transferUpload(pcm.buffer)
            }
        },
flyskywhy commented 7 months ago

我移植到了 react-native 上来实现移动版本,实时速度很棒 https://github.com/flyskywhy/react-native-live-audio-fft