如何将seewave频谱图转换为wav文件

时间:2015-08-26 14:45:45

标签: r audio spectrogram

我想操作seewave音频频谱图,然后将其转换回.wav文件。 一个简单的例子

library(tuneR)
library(seewave)

data(tico)
#generate spectrogram with phase information
spec_tico=spectro(tico,plot=FALSE,complex=TRUE,norm=FALSE,dB=NULL)
#manipulate spectrogram
spec_tico_new=dostuff(spec_tico)
#convert back into Wave object - but there is no function spectr2Wave!
tico_new=spectr2Wave(spec_tico_new,...)

我无法在spectr2Wave文档中找到seewave附近的任何内容。

你们是否知道如何将其转换回来而无需深入研究wav文件规范并手动完成?谢谢!

1 个答案:

答案 0 :(得分:4)

原来比较简单!我缺少的重要关键词是“短时傅里叶变换” - 这就是seewave::spectro基本上做的事情。在Google搜索“短时傅里叶变换”后,seewave函数istft出现了。

library(tuneR)
library(seewave)

data(tico)
#generate spectrogram with phase information
spec_tico=spectro(tico,plot=FALSE,complex=TRUE,norm=FALSE,dB=NULL,ovlp=50)
#convert back into Wave object
tico_new=istft(spec_tico$amp,f=tico@samp.rate,ovlp=50,wl=512,output = "Wave")

现在享受Zonotrichia capensis(*)的声音

#play on Windows
play(tico_new)
#play on Linux with vlc (or any other player ...)
play(tico_new,player="cvlc")
#on Linux you have to kill the two vlc processES afterwards!

(*)这是你执行play命令时可以听到的鸟。 :)

相关问题