当前位置:首页 > JavaScript

js实现发送语音消息

2026-04-04 11:18:53JavaScript

使用 Web Audio API 录制语音

通过 navigator.mediaDevices.getUserMedia 获取麦克风权限,结合 MediaRecorder 进行录音:

let mediaRecorder;
let audioChunks = [];

navigator.mediaDevices.getUserMedia({ audio: true })
  .then(stream => {
    mediaRecorder = new MediaRecorder(stream);
    mediaRecorder.ondataavailable = event => {
      audioChunks.push(event.data);
    };
    mediaRecorder.onstop = () => {
      const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
      // 此处可上传或处理音频
    };
  });

控制录音开始与结束

通过按钮触发录音控制:

document.getElementById('startBtn').addEventListener('click', () => {
  audioChunks = [];
  mediaRecorder.start();
});

document.getElementById('stopBtn').addEventListener('click', () => {
  mediaRecorder.stop();
});

上传音频到服务器

使用 FormDatafetch 上传音频文件:

function uploadAudio(audioBlob) {
  const formData = new FormData();
  formData.append('audio', audioBlob, 'recording.wav');

  fetch('/upload-endpoint', {
    method: 'POST',
    body: formData
  }).then(response => {
    console.log('Upload successful');
  });
}

播放录制的音频

通过 URL.createObjectURL 生成临时链接播放:

const audioElement = document.createElement('audio');
audioElement.src = URL.createObjectURL(audioBlob);
audioElement.controls = true;
document.body.appendChild(audioElement);

兼容性处理

检查浏览器支持情况:

if (!navigator.mediaDevices || !window.MediaRecorder) {
  alert('您的浏览器不支持语音录制功能');
}

格式转换(可选)

如需转换为其他格式(如MP3),需引入第三方库如 lamejs

js实现发送语音消息

// 示例:使用lamejs编码MP3
const mp3Encoder = new lamejs.Mp3Encoder(1, 44100, 128);
const mp3Data = mp3Encoder.encodeBuffer(leftChannel);

注意事项

  • 需在 HTTPS 环境或 localhost 下使用 getUserMedia
  • iOS 可能对自动播放有限制,需用户手势触发
  • 长时间录音需注意内存管理,可分段上传

标签: 语音消息
分享给朋友:

相关文章

uniapp 消息推送

uniapp 消息推送

uniapp 消息推送实现方法 使用uniPush服务 uniapp官方提供了uniPush服务,支持iOS、Android及小程序平台的消息推送。需要在manifest.json中配置推送模块,并按…

elementui消息

elementui消息

ElementUI 消息提示 ElementUI 提供了一套消息提示组件,包括 Message、MessageBox 和 Notification,用于展示不同类型的反馈信息。 消息提示(Mes…

vue实现消息提示

vue实现消息提示

Vue 实现消息提示的方法 在 Vue 中实现消息提示功能可以通过多种方式完成,以下是几种常见的实现方法。 使用 Vue 插件(如 Element UI、Vant 等) Element UI 提供了…

vue实现语音录音

vue实现语音录音

实现语音录音的基本步骤 在Vue中实现语音录音功能可以通过浏览器提供的MediaRecorder API完成。以下是一个完整的实现方案: 安装依赖(可选) 如果需要更高级的音频处理功能,可以安装re…

vue消息提醒实现

vue消息提醒实现

vue消息提醒实现 在Vue中实现消息提醒功能,可以通过以下几种方式: 使用Element UI的Notification组件 Element UI提供了Notification组件,可以快速实现消…

vue实现语音自动播报

vue实现语音自动播报

实现语音自动播报的步骤 在Vue中实现语音自动播报功能,可以通过Web Speech API中的SpeechSynthesis接口完成。以下是具体实现方法: 检查浏览器支持情况 在调用语音合成功能前…