首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于R的实时音频分析

基于R的实时音频分析
EN

Stack Overflow用户
提问于 2020-04-22 18:40:39
回答 1查看 651关注 0票数 21

是否可以使用R对通过计算机麦克风录制的音频进行实时(或最小延迟)分析?

虽然R有一些全面的软件包分析音频文件(如包污水)或记录声音(包音频),但我无法找到如何访问麦克风数据的实时。

最终目标是分析记录的信号的频率混合和振幅,就像这里使用Python:https://stackoverflow.com/a/40157297/4862822所做的那样。

一个MWE将作为一个编辑,如果我能找到什么东西开始。

EN

回答 1

Stack Overflow用户

发布于 2020-12-07 03:09:58

可以使用包audio从计算机的麦克风( https://cran.r-project.org/web/packages/audio/ )异步填充缓冲区。

虽然笨重,这可以用来做实时音频分析使用R.下面是一个例子,记录到一个缓冲区从麦克风超过5秒。以1秒的间隔,记录在前1秒内的最大分贝全量程(dB FS)输出到控制台。对于这个简单的例子,我只是使用Sys.sleep()来暂停,直到下一个间隔:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61372684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档