Audio 如何用Lua打开wav文件

Audio 如何用Lua打开wav文件,audio,lua,wav,Audio,Lua,Wav,我正在尝试使用Lua进行一些wav处理,但在第一个障碍中遇到了一个障碍!我找不到允许我加载wav文件并访问原始数据的函数或库。有一个库,但它只允许播放WAV,而不允许访问原始数据 外面有吗 干杯, Pete.我不认为Lua是处理原始音频数据的正确工具,主要是因为Lua只使用一种数字数据类型-doubles。此外,Lua不能直接访问数据流的元素,尽管您可以使用类似于structlibrary() 更好的处理数据的方法是用C编写过滤器,对Lua进行绑定,然后使用Lua进行更高级别的处理,如(虚拟工具

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

外面有吗

干杯,
Pete.

我不认为Lua是处理原始音频数据的正确工具,主要是因为Lua只使用一种数字数据类型-doubles。此外,Lua不能直接访问数据流的元素,尽管您可以使用类似于
struct
library()

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

需要“波浪”
--加载波浪
wav=wave.load('file.wav','s16')
--应用一些过滤器
阈值=波动阈值(波动,0.5)
衰减=波衰减(脱粒,5)


我不认为Lua是处理原始音频数据的正确工具,主要是因为Lua只使用一种数字数据类型-doubles。此外,Lua不能直接访问数据流的元素,尽管您可以使用类似于
struct
library()

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

需要“波浪”
--加载波浪
wav=wave.load('file.wav','s16')
--应用一些过滤器
阈值=波动阈值(波动,0.5)
衰减=波衰减(脱粒,5)


或者,您可以加载数据并按如下方式查看它。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

或者,您可以加载数据并按如下方式查看它。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

谢谢你的回复。我并不是在计划一个应用程序本身,只是几个脚本来对文件执行基本的操作,所以性能不是一个大问题。但是,数据类型可能会导致问题。谢谢您的回复。我并不是在计划一个应用程序本身,只是几个脚本来对文件执行基本的操作,所以性能不是一个大问题。但是,数据类型可能会导致问题。