豆包的语音输入波形前端是如何实现的?

image.png
现在要做一个前端语音输入实时显示波形的功能,参考豆包的效果,请问市面上一般都是如何实现这种语音输入实时转换波形效果的?
类似的功能还有QQ的语音输入,长按录音,界面实时显示波纹效果。
尝试过wavesurfer.js,它是从头开始录入的,效果不是很好,难道是配置需要调整吗?

阅读 705
2 个回答

从技术方面来说,大概分成几步:

  1. 录音
  2. 在录音中,获取波形信息
  3. 根据波形信息,绘图

比如,我这段代码就是获取平均音量然后绘制柱状图:

// 初始化录音
stream = await navigator.mediaDevices.getUserMedia(constraints);
mediaRecorder = new MediaRecorder(stream, {
  mimeType: supportedMimeType,
});
audioContext = new AudioContext();
audioSource = audioContext.createMediaStreamSource(stream);
analyser = audioContext.createAnalyser();
audioSource.connect(analyser);

// 录音过程中绘图
analyser.getFloatTimeDomainData(waveDataArray);
const sum = waveDataArray.reduce((acc, cur) => acc + cur * cur, 0);
volume.value = Math.sqrt(sum / waveDataArray.length);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题