comparison src/stt.js.luan @ 69:f5e72f2d1025

add stt_prompt
author Franklin Schmidt <fschmidt@gmail.com>
date Sat, 23 Aug 2025 07:07:59 -0600
parents d3f5448743bf
children
comparison
equal deleted inserted replaced
68:a366d27db8f1 69:f5e72f2d1025
18 local headers = { 18 local headers = {
19 Authorization = "Bearer "..key 19 Authorization = "Bearer "..key
20 ["Content-Type"] = "multipart/form-data" 20 ["Content-Type"] = "multipart/form-data"
21 } 21 }
22 22
23 local function speech_to_text(audio) 23 local function speech_to_text(audio,prompt)
24 local options = { 24 local options = {
25 method = "POST" 25 method = "POST"
26 headers = headers 26 headers = headers
27 enctype = "multipart/form-data" 27 enctype = "multipart/form-data"
28 parameters = { 28 parameters = {
29 model = "whisper-1" 29 model = "whisper-1"
30 file = audio 30 file = audio
31 prompt = prompt
31 } 32 }
32 } 33 }
33 local json = uri(url,options).read_text() 34 local json = uri(url,options).read_text()
34 -- logger.info(json) 35 -- logger.info(json)
35 local result = json_parse(json) 36 local result = json_parse(json)
36 return result.text or error() 37 return result.text or error()
37 end 38 end
38 39
39 return function() 40 return function()
40 local audio = Http.request.parameters.audio or error() 41 local audio = Http.request.parameters.audio or error()
41 local text = speech_to_text(audio) 42 local prompt = Http.request.parameters.prompt or error()
43 local text = speech_to_text(audio,prompt)
42 Io.stdout = Http.response.text_writer() 44 Io.stdout = Http.response.text_writer()
43 %> 45 %>
44 setText(<%=json_string(text)%>); 46 setText(<%=json_string(text)%>);
45 <% 47 <%
46 end 48 end