我正在尝试使用Lua进行一些wav处理,但是已经成为第一个障碍!我找不到允许我加载wav文件并访问原始数据的函数或库。有一个库,但它允许播放wavs,而不是访问原始数据。
那里有没有?
干杯, 皮特。
答案 0 :(得分:1)
我认为Lua不是原始音频数据处理的合适工具,主要是因为Lua只使用一种数字数据类型 - 双倍。此外,Lua无法直接访问数据流的元素,但您可以使用类似struct
库(http://www.inf.puc-rio.br/~roberto/struct/)
处理数据的一种更好的方法是在C中编写过滤器,绑定Lua,然后使用Lua进行更高级别的处理,如(虚构工具包):
要求'wave'
- 加载波浪 wav = wave.load('file.wav','s16')
- 应用一些过滤器
thresh = wave.threshold(wav,0.5)
faded = wave.fadeout(thresh,5)
答案 1 :(得分:0)
或者,您可以加载数据并像这样查看。 ascii列将显示WAV标头,它存储在前44个字节......
中local f = assert(io.open(path, "rb"))
-- read in 16 bytes at a time
local block = 16
while true do
local bytes = f:read(block)
if not bytes then break end
for _, b in pairs{string.byte(bytes, 1, -1)} do
io.write(string.format("%02X ", b))
end
io.write(string.rep(" ", block - string.len(bytes)))
io.write(" ", string.gsub(bytes, "%c", "."), "\n")
end