You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用R语言audio包在Mac Sonoma系统下无法录音的问题

R语言audio包在Mac Sonoma下录音全为0的问题解决

问题详情

  • 设备:新款Mac mini,系统OS Sonoma 14.2.1
  • 使用工具:R语言audio包,当前驱动为macosx
  • 异常现象:
    • 外接麦克风在系统层面完全正常(声音面板显示拾音正常、可通过Siri交互、语音备忘录能正常录音)
    • play(sin(1:10000/20))可正常播放声音
    • 执行录音代码后,录制数据全为0,播放无声音
  • 复现代码:
# 设置录音时长
rec_time <- 5 

# 录音流程
Samples<-rep(NA_real_, 44100 * rec_time) # 定义采样数量
print("Start speaking")
[1] "Start speaking"
audio_obj <-record(Samples, 44100, 1) # 创建44100采样率、单声道的录音实例(录音时系统声音面板显示麦克风正在拾音,同时语音备忘录也能正常录音)
wait(6)
rec <- audio_obj$data # 获取录制数据

which(rec!=0)
integer(0)
play(rec) # 无声音输出

可行解决方案

1. 检查并授予R麦克风权限

MacOS的隐私权限可能限制了R访问麦克风:

  • 打开「系统设置」→「隐私与安全性」→「麦克风」
  • 找到R.app或你使用的IDE(如RStudio),确保麦克风权限已开启
  • 重启R/IDE后重新测试录音

2. 显式指定外接麦克风设备

audio包可能默认选中了无内置麦克风的Mac mini的虚拟设备,需手动指定外接麦克风:

# 列出所有可用音频设备,找到外接麦克风对应的ID
devices()

# 替换device参数为你的外接麦克风ID(示例为2,实际以devices输出为准)
audio_obj <- record(Samples, 44100, 1, device = 2)
wait(6)
rec <- audio_obj$data

3. 调整录音代码写法

尝试不预先创建采样向量,直接用record函数的duration参数指定时长:

rec_time <- 5
# 直接录制,自动处理采样数量
audio_obj <- record(rate = 44100, channels = 1, duration = rec_time)
wait(rec_time + 1) # 留1秒缓冲
rec <- audio_obj$data

# 检查是否有非零数据
which(rec != 0)
play(rec)

4. 更新或重装audio包

可能存在包版本与Sonoma系统的兼容问题:

# 卸载现有包
remove.packages("audio")
# 重新安装
install.packages("audio")
library(audio)

内容的提问来源于stack exchange,提问作者Barry Zeeberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 07:55:16