Mercurial Hosting > lang
view src/tts.mp3.luan @ 12:2d4b3f003ec2
tts
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 24 Jul 2025 22:14:49 -0600 |
parents | |
children | f5425a3c1898 |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local Parsers = require "luan:Parsers.luan" local xml_encode = Parsers.xml_encode or error() local Io = require "luan:Io.luan" local uri = Io.uri or error() local Http = require "luan:http/Http.luan" local Config = require "site:/private/Config.luan" local region = Config.azure_tts.region or error() local url = "https://"..region..".tts.speech.microsoft.com/cognitiveservices/v1" local headers = { ["Ocp-Apim-Subscription-Key"] = Config.azure_tts.key or error() ["Content-Type"] = "application/ssml+xml" ["X-Microsoft-OutputFormat"] = "audio-16khz-128kbitrate-mono-mp3" } local function text_to_speech(lang,text) local xml = `%> <speak version='1.0' xml:lang='<%=lang%>'> <voice name='en-US-BrandonMultilingualNeural'> <%= xml_encode(text) %> </voice> </speak> <% ` local options = { method = "POST" headers = headers content = xml } return uri(url,options) end return function() local text = Http.request.parameters.text or error() local input = text_to_speech("ja-JP",text) Http.response.binary_writer().write_from(input) end