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

R 如何将seewave频谱图转换为wav文件,r,audio,spectrogram,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_t

我想操作一个
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,...)
我在
seewave
文档中找不到任何与
spectro2wave
相近的东西


你们知道一种方法如何将它转换回来,而不必深入到
wav
文件规范并手动执行吗?谢谢大家!

结果是相对简单!我遗漏的一个重要关键词是“短时傅里叶变换”——
seewave::spectro
基本上就是这样做的。在谷歌搜索“逆短时傅里叶变换”后,
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
命令,您可以听到这只鸟的声音:

@Vlo我使用
complex=TRUE
-因此我将从FFT中获取复数。我应该能够从复数中获得相位。@Vlo我不确定您是否收到此评论的通知,因为您已经删除了您的评论-但以防您感兴趣:我已经找到了解决方案。感谢您提供了有趣的链接。如果操作系统默认情况下未正确设置
play
,请使用
listen
命令。
#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!