gundami

test client

Nov 5th, 2025 (edited)
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. -- test_tts.lua
  2. -- Simple local TTS test script for speakers (with speaker reset)
  3.  
  4. local decoder = require("cc.audio.dfpwm").make_decoder()
  5.  
  6. print("=== TTS Speaker Test ===")
  7. print("Enter text to speak (or type 'exit' to quit):")
  8.  
  9. -- Get all speakers
  10. local speakers = { peripheral.find("speaker") }
  11. if #speakers == 0 then
  12. print("No speaker found. Please connect one and restart.")
  13. return
  14. end
  15.  
  16. -- Function to stop any currently playing sounds
  17. local function stopAllSpeakers()
  18. for _, sp in ipairs(speakers) do
  19. -- Some sounds might still be playing; stop them
  20. pcall(function()
  21. sp.stop() -- stop all current sounds
  22. end)
  23. end
  24. -- Wait a moment to ensure speakers flush buffers
  25. sleep(0.2)
  26. end
  27.  
  28. while true do
  29. io.write("> ")
  30. local message = read()
  31.  
  32. if message == "exit" then
  33. print("Exiting test.")
  34. break
  35. end
  36.  
  37. stopAllSpeakers() -- 🔹清空所有扬声器缓冲,防止残留声音
  38.  
  39. local url = "https://music.madefor.cc/tts?text=" .. textutils.urlEncode(message)
  40. print("Requesting TTS audio...")
  41. local response, err = http.get({ url = url, binary = true })
  42.  
  43. if not response then
  44. print("HTTP request failed: " .. tostring(err))
  45. else
  46. print("Playing TTS audio...")
  47. while true do
  48. local chunk = response.read(16 * 1024)
  49. if not chunk then break end
  50.  
  51. local buffer = decoder(chunk)
  52. for _, sp in ipairs(speakers) do
  53. while not sp.playAudio(buffer) do
  54. os.pullEvent("speaker_audio_empty")
  55. end
  56. end
  57. end
  58. response.close()
  59. print("Playback finished.")
  60. end
  61. end
  62.  
Advertisement
Add Comment
Please, Sign In to add comment