1

我需要在无头 Linux 主机上的批处理作业中从一组音频文件中提取声波包络。

我认为这可以使用Nyquist 编程语言来实现,它是 Lisp 的一种变体,尤其是嵌入了 Audacity 中,并且专门用于声音处理。但是,如果我对 Lisp 有一些了解,那么我之前没有任何使用 Nyquist 的经验。

Nyquist 中是否有一些原语可以直接实现这一点?或者我如何编写一个简短的 Nyquist 程序来提取声音的包络?


我尝试使用snd-avg函数。但它似乎没有产生一个平滑的包络(截图中的上半部分):

(snd-avg
  (aref *track* 0)                 ; first sound
  (truncate (/ *sound-srate* 50))  ; 50 Hz to samples
  1 op-peak)                       ; follow peak values

使用 <code>snd-avg</code> 获得的信封

4

1 回答 1

0

snd-avg为了消除楼梯波纹,我通过应用低通滤波器获得了不错的结果:

(lp 
  (snd-avg
    (aref *track* 0)
    (truncate (/ *sound-srate* 1000)) ; 1kHz
    1 op-peak)
  50)                                 ; 50 Hz low-pass

在此处输入图像描述

于 2019-11-19T23:50:38.767 回答