Joh*_*Bee 21 audio r real-time
是否可以使用 R 对通过计算机麦克风记录的音频进行实时(或最小延迟)分析?
虽然 R 有一些完善的包用于分析音频文件(例如包seewave)或录制声音(包audio)的全面,但我找不到如何实时访问麦克风数据。
最终目标是分析记录信号的混频和幅度,如此处使用 Python 完成的:https : //stackoverflow.com/a/40157297/4862822
如果我能找到一些东西开始,将提供 MWE 作为编辑。
您可以使用该包audio从计算机的麦克风实时异步填充缓冲区:https://cran.r-project.org/web/packages/audio/
虽然笨重,但它可以用于使用 R 进行实时音频分析。下面是一个在 5 秒内从麦克风记录到缓冲区的示例。以 1 秒为间隔,将前 1 秒内记录的最大满量程分贝 (dB FS) 输出到控制台。为了这个简单示例的目的,我只是使用 Sys.sleep() 暂停,直到下一个间隔:
library(audio)
sample_rate <- 44100
seconds_to_record <- 5
num_channels <- 1
reporting_interval_seconds <- 1
# allocate buffer to record into
buffer <- rep(NA_real_, sample_rate * seconds_to_record)
# start recording into the buffer
rec <- record(buffer, sample_rate, num_channels)
for (reports in seq(reporting_interval_seconds, seconds_to_record, reporting_interval_seconds)){
Sys.sleep(reporting_interval_seconds)
analysis_samples <- (((reports - 1) * sample_rate) + 1) : (reports * sample_rate)
abs_max <- max(abs(buffer[analysis_samples]), na.rm = TRUE)
print(sprintf('Max Value = %2.3f dB FS', 20*log10(abs_max) ))
}
# play back the buffer
play(buffer)
Run Code Online (Sandbox Code Playgroud)