如何用Lua打开wav文件

我正在尝试使用 Lua 进行一些 wav 处理,但是卡在了第一个障碍上!我找不到一个函数或库,可以让我加载 wav 文件并访问原始数据。有一个库,但它仅允许播放 wav,而不允许访问原始数据。

有没有其他的库可以做到呢?

谢谢, 皮特。

原文链接 https://stackoverflow.com/questions/2866836

点赞
stackoverflow用户221509
stackoverflow用户221509

我认为Lua不是用于原始音频数据处理的正确工具,主要是因为Lua仅使用单个数字数据类型-双精度浮点数。此外,Lua无法直接访问数据流的元素,但可以使用类似于“struct”库(http://www.inf.puc-rio.br/~roberto/struct/)

更好的处理数据方法是使用C编写过滤器并绑定到Lua,然后使用Lua进行更高级的处理,例如(虚构的工具包):

require 'wave'

-- 加载波形数据

wav = wave.load('file.wav', 's16')

-- 应用一些过滤器

thresh = wave.threshold(wav, 0.5)

faded = wave.fadeout(thresh, 5)

2010-05-19 16:04:18
stackoverflow用户1063788
stackoverflow用户1063788

或者,您可以像这样加载数据并查看它。 ascii 列将显示存储在前44个字节中的 WAV 标头...

local f = assert(io.open(path, "rb"))
-- 每次读取16个字节
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
2011-12-07 23:12:18