当前位置:首页 > 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 可能对自动播放有限制,需用户手势触发
  • 长时间录音需注意内存管理,可分段上传

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

相关文章

elementui消息

elementui消息

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

vue实现消息接收

vue实现消息接收

Vue 实现消息接收的方法 在 Vue 中实现消息接收通常涉及 WebSocket、EventBus 或第三方库(如 Socket.IO)。以下是几种常见的实现方式: 使用 WebSocket We…

vue实现语音搜索

vue实现语音搜索

Vue 实现语音搜索的方法 在 Vue 中实现语音搜索功能可以通过浏览器的 Web Speech API 来完成。以下是一个完整的实现方案: 初始化语音识别对象 创建 Vue 组件时初始化语音识别对…

vue消息怎么实现

vue消息怎么实现

Vue 消息实现方法 Vue 中实现消息提示功能通常可以通过以下几种方式完成,包括使用 Vue 的原生特性或第三方库。 使用 Vue 的原生特性 通过 Vue 的响应式数据和事件系统,可以自定义一个…

vue实现语音发送

vue实现语音发送

实现语音发送功能 在Vue中实现语音发送功能需要结合浏览器提供的Web Speech API和音频处理技术。以下是具体实现方法: 获取用户麦克风权限 使用navigator.mediaDevices…

vue实现消息动画

vue实现消息动画

Vue 实现消息动画的方法 使用 Vue Transition 组件 Vue 内置的 <transition> 组件可以方便地实现消息动画效果。通过添加 CSS 过渡或动画类名,可以实现平…