Skip to content

useMicrophone

访问和控制设备麦克风,支持音频处理和静音控制。

前置依赖

依赖参数

参数名类型说明
deps.vue.ref<T>(value: T) => Ref<T>Vue ref 函数
deps.vue.onUnmounted(fn: () => void) => voidVue onUnmounted 钩子
deps.mediaDevicesMediaDevices媒体设备 API

环境要求

浏览器 API: MediaDevices API

需要在 HTTPS 环境下使用,或在 localhost 开发环境中测试。

函数签名

typescript
function useMicrophone(
  deps: UseMicrophoneDeps
): UseMicrophoneReturn

interface UseMicrophoneDeps {
  vue: VueCompositionAPI
  mediaDevices: MediaDevices
}

interface UseMicrophoneReturn {
  isSupported: Ref<boolean>
  stream: Ref<MediaStream | null>
  isStarting: Ref<boolean>
  isMuted: Ref<boolean>
  error: Ref<string | null>
  start: (options?: MicrophoneOptions) => Promise<void>
  stop: () => void
  toggleMute: () => void
}

interface MicrophoneOptions {
  echoCancellation?: boolean
  noiseSuppression?: boolean
  autoGainControl?: boolean
}

参数

参数名类型必填说明
depsUseMicrophoneDeps依赖注入对象

返回值

属性类型说明
isSupportedRef<boolean>是否支持麦克风 API
streamRef<MediaStream | null>媒体流对象
isStartingRef<boolean>是否正在启动
isMutedRef<boolean>是否静音
errorRef<string | null>错误信息
start(options?: MicrophoneOptions) => Promise<void>启动麦克风
stop() => void停止麦克风
toggleMute() => void切换静音状态

音频处理选项

echoCancellation(回声消除)

移除音频中的回声,适用于视频通话场景。默认开启。

noiseSuppression(噪音抑制)

减少背景噪音,提高语音清晰度。默认开启。

autoGainControl(自动增益)

自动调整音量,保持稳定的音量输出。默认开启。

工作原理

  1. 检查浏览器是否支持媒体设备 API
  2. 调用 getUserMedia 请求麦克风权限
  3. 根据配置选项启用音频处理功能
  4. 获取音频流并更新状态
  5. 通过 toggleMute 控制静音(禁用/启用音轨)
  6. 组件卸载时自动停止麦克风并释放资源

音频流可用于:

  • 语音录制
  • 实时语音通话
  • 语音识别
  • 音频可视化
  • 声音分析