diff --git a/speaker_driver.lua b/speaker_driver.lua index 47b1b96..042a2e6 100644 --- a/speaker_driver.lua +++ b/speaker_driver.lua @@ -9,6 +9,13 @@ local function getFileName(name) return fullFile end +local function randomFileName(extension) + local name = "" + for i = 1, 12 do + name = name .. string.char(math.random(97, 122)) -- a–z + end + return name .. (extension or "") +end local function playSound(speaker, fileName) local fileStream = getFileName(fileName) @@ -38,16 +45,14 @@ local function playTTSFile(speakers, value) local message = textutils.urlEncode(value) local url = "http://api.astrocore.space/api/TextToSpeech?message=" .. message local response, err = http.get { url = url, binary = true } - if not response then error(err, 0) end - while true do - local chunk = response.read(16 * 1024) - if not chunk then break end - - local buffer = decoder(chunk) - while not speakers.playAudio(buffer, 200) do - os.pullEvent("speaker_audio_empty") - end - end + local name = randomFileName(".dfpwm") + local fileData = response.readAll() + local file = fs.open(name,"w") + file.write(fileData) + file.close() + response.close() + playSound(speakers, fileData) + shell.execute("rm", name) end local function createSoundFile(fileName)