使用tuneR生成16位无声Wave对象时出错

问题描述 投票:0回答:1

我正在 R 中工作,需要用静音填充短音频块以使其长度固定。我正在使用tuneR::readWave() 读取音频块,这表明文件是16 位的。然后我打算使用tuneR::silence()来创建所需长度的静音Wave对象,然后tuneR::bind()将静音附加到块中。 uneR::bind() 要求 Wave 对象具有相同的位深度。问题是当位指定为 16 时,tuneR::silence() 返回以下错误。

validObject(.Object) 中的错误:无效类“Wave”对象:Float (非 pcm)Wave 对象的分辨率必须为 32 或 64 位

示例代码在这里:

library(tuneR) padding <- silence(duration = 1, samp.rate = 22050, xunit = "time", bit = 16)
tuneR

文档表明接受bit=16。这是一个错误还是我误解了如何使用此功能。是否有其他方法可以创建静音并与 Wave 对象绑定?

谢谢

西蒙

r audio tuner
1个回答
0
投票
我发现的一个解决方法是直接创建一个静默的 Wave 对象,如下所示:

sr = 22050 silence_length <- 1.5 silent_samples <- rep(0, sr * silence_length) padding <- tuneR::Wave(left = silent_samples, bit = 16, samp.rate = sr)
但最初的问题仍然是位=16 的tuneR::silence() 是否应该工作。

© www.soinside.com 2019 - 2024. All rights reserved.