使用ohun包split_acoustic_data函数遇类型错误求助
问题原因及解决思路
错误提示“both objects must be of class 'selection_table'”是因为split_acoustic_data()函数需要两个selection_table类型的参数(X和Y),但你只传入了X,未提供Y参数,不符合函数的调用要求。
另外,从你的需求来看,你想要将音频分割为30秒的片段,split_acoustic_data()并不是合适的工具——这个函数的设计目的是基于两个选择表(比如参考片段和目标片段)来分割音频,而非直接切割整个音频文件。
正确解决方案:使用warbleR的split_sounds()函数
要实现分割音频为固定时长片段的需求,应该用warbleR包中的split_sounds()函数,步骤如下:
- 确保你知道音频文件所在的实际路径(比如
"~/audio_files/") - 调用
split_sounds()完成切割,示例代码如下:
# 加载warbleR包 library(warbleR) # 指定音频文件路径(替换为你的实际路径) audio_path <- "~/your_audio_directory/" # 分割音频为30秒片段,输出到指定文件夹 split_sounds(sgmt.dur = 30, path = audio_path, dest.path = file.path(audio_path, "split_segments"), pb = TRUE)
补充说明
- 你之前创建的
exampleselectiontable因为设置path = NULL,没有关联实际的音频文件路径,这类选择表无法用于后续的音频处理操作,创建时务必指定正确的path参数。 - 如果你的需求确实需要使用
split_acoustic_data()(比如基于参考片段分割目标音频),则需要准备第二个selection_table对象(Y)并传入函数,同时确保两个选择表都关联了正确的音频路径。
内容的提问来源于stack exchange,提问作者ksh530
相关产品推荐
相关产品推荐

