Как открыть файл WAV с Lua - PullRequest
1 голос
/ 19 мая 2010

Я пытаюсь выполнить wav-обработку с использованием Lua, но это первое препятствие! Я не могу найти функцию или библиотеку, которая позволит мне загрузить файл WAV и получить доступ к необработанным данным. Есть одна библиотека, но она позволяет воспроизводить wavs, а не доступ к необработанным данным.

Есть ли там что-нибудь?

Ура, Пит.

Ответы [ 2 ]

1 голос
/ 19 мая 2010

Я не думаю, что Lua является правильным инструментом для обработки необработанных аудиоданных, в основном потому, что Lua использует только один числовой тип данных - удваивается. Кроме того, Lua не может напрямую обращаться к элементам потока данных, хотя вы можете использовать что-то вроде библиотеки struct (http://www.inf.puc -rio.br / ~ roberto / struct / )

Лучшим способом обработки данных было бы написать фильтры на C с привязкой для Lua, а затем использовать Lua для обработки более высокого уровня, например (воображаемый инструментарий):

требуется «волна»
- загрузить волну
wav = wave.load ('file.wav', 's16')
- применить несколько фильтров
thresh = wave.threshold (wav, 0.5)
faded = wave.fadeout (thresh, 5)

0 голосов
/ 08 декабря 2011

Кроме того, вы можете загрузить данные и просмотреть их следующим образом. В столбце 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
...