2014-09-30 71 views
1

我非常喜欢R.我正在写这个论坛,因为我经常在这里找到非常有用的问题和答案。我正尝试从4个独立立体声音频文件的右声道中创建4声道.wav音频文件。这就是我试图做使用调谐器:如何在R中的4个独立音频文件中创建4声道音频文件?

# read in 4 stereo audio files 

s1A <- readWave("/090306_1A.wav") 
s2A <- readWave("/090306_2A.wav") 
s3A <- readWave("/090306_3A.wav") 
s4A <- readWave("/090306_4A.wav") 

# extract the right channel as a vector file 

m1A <- [email protected] 
m2A <- [email protected] 
m3A <- [email protected] 
m4A <- [email protected] 

# combine the four files into one multi-channel file 

A_1 <- WaveMC(data = list(m1A, m2A, m3A, m4A), samp.rate = 96000, bit = 16, pcm = TRUE) 

# write the multi-channel file as a .wav file 

writeWave(A_1, filename = "/A_1.wav", extensible= TRUE) 

在这里,我得到一个错误消息说:

"Error in writeWave(A_1, filename = "/A_1.wav", : 
    colnames(object) must be specified and must uniquely identify the channel ordering for WaveMC objects, see ?MCnames for possible channels" 

我已经看过MCnames,可以看到有三个变量的数据帧(ID ,所有4个频道的标签和名称)是必要的。我无法找到的是如何正确创建它(意思是什么id,标签和名称是什么?)以及如何将它与writeWave一起使用?我已经检查过在MC名下的R帮助文件中提到的网站,但我仍然无法理解如何在我的情况下使用它。我已经试过各种组合 - 在这里是一个:

id = c("m1A","m2A","m3A","m4A") 
label = c("Front Left - FL", "Front Right - FR", "Front Center - FC", "Low Frequency - LF") 
name = c(1,2,3,4) 
names <- data.frame(id, label, name) 
writeWave(A_1, colnames(names), filename = "/A_1.wav", extensible= TRUE) 

这也导致一个错误消息:

"Error in writeWave(A_1, colnames(names), filename = "/A_1.wav", : 
    unused argument (colnames(names)) 

我希望得到任何帮助。

由于提前, 欧蒂

+1

直接发送消息给包作者可能会更好。 – jazzurro 2014-09-30 14:23:02

+0

谢谢。我现在已经这样做了,希望能从他那里听到。 – Outi 2014-10-02 15:11:47

+0

我经历了CRAN手册,看到你可以在'WavMac()'中有列表和数据框架。假设你有四个通道,列表可能是正确的。但我想知道该函数是否期待数据框。我只是在猜测。希望你很快听到作者的消息。 – jazzurro 2014-10-02 15:15:41

回答

0

我真的无法检验它是否工作,但你应该做A_1命名 试试下面的代码:

colnames(A_1$Data) <- c("Front Left - FL", "Front Right - FR", "Front Center - FC", "Low Frequency - LF") 

,然后运行最后线。

+0

嗨Yevgeny,我试过你的路线,但不幸有一条错误消息说:'* tmp *'中的错误$ Data:$运算符对原子向量无效。你还有其他建议吗?在此先感谢,Outi – Outi 2014-10-01 07:53:21