useMicrophone
访问和控制设备麦克风,支持音频处理和静音控制。
前置依赖
依赖参数
| 参数名 | 类型 | 说明 |
|---|---|---|
deps.vue.ref | <T>(value: T) => Ref<T> | Vue ref 函数 |
deps.vue.onUnmounted | (fn: () => void) => void | Vue onUnmounted 钩子 |
deps.mediaDevices | MediaDevices | 媒体设备 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
}参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
deps | UseMicrophoneDeps | 是 | 依赖注入对象 |
返回值
| 属性 | 类型 | 说明 |
|---|---|---|
isSupported | Ref<boolean> | 是否支持麦克风 API |
stream | Ref<MediaStream | null> | 媒体流对象 |
isStarting | Ref<boolean> | 是否正在启动 |
isMuted | Ref<boolean> | 是否静音 |
error | Ref<string | null> | 错误信息 |
start | (options?: MicrophoneOptions) => Promise<void> | 启动麦克风 |
stop | () => void | 停止麦克风 |
toggleMute | () => void | 切换静音状态 |
音频处理选项
echoCancellation(回声消除)
移除音频中的回声,适用于视频通话场景。默认开启。
noiseSuppression(噪音抑制)
减少背景噪音,提高语音清晰度。默认开启。
autoGainControl(自动增益)
自动调整音量,保持稳定的音量输出。默认开启。
工作原理
- 检查浏览器是否支持媒体设备 API
- 调用
getUserMedia请求麦克风权限 - 根据配置选项启用音频处理功能
- 获取音频流并更新状态
- 通过
toggleMute控制静音(禁用/启用音轨) - 组件卸载时自动停止麦克风并释放资源
音频流可用于:
- 语音录制
- 实时语音通话
- 语音识别
- 音频可视化
- 声音分析