Mercurial Hosting > lang
view src/stt.js.luan @ 71:44bec62c49e2 default tip
split ask
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 24 Aug 2025 08:32:08 -0600 |
parents | f5e72f2d1025 |
children |
line wrap: on
line source
local Luan = require "luan:Luan.luan" local error = Luan.error local Parsers = require "luan:Parsers.luan" local json_string = Parsers.json_string or error() local json_parse = Parsers.json_parse 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 key = Config.chatgpt.key or error() local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "sst.js" -- https://platform.openai.com/docs/guides/speech-to-text local url = "https://api.openai.com/v1/audio/transcriptions" local headers = { Authorization = "Bearer "..key ["Content-Type"] = "multipart/form-data" } local function speech_to_text(audio,prompt) local options = { method = "POST" headers = headers enctype = "multipart/form-data" parameters = { model = "whisper-1" file = audio prompt = prompt } } local json = uri(url,options).read_text() -- logger.info(json) local result = json_parse(json) return result.text or error() end return function() local audio = Http.request.parameters.audio or error() local prompt = Http.request.parameters.prompt or error() local text = speech_to_text(audio,prompt) Io.stdout = Http.response.text_writer() %> setText(<%=json_string(text)%>); <% end