yasserrmd commited on
Commit
6962c3c
·
verified ·
1 Parent(s): c5a6d28

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -5
app.py CHANGED
@@ -76,9 +76,8 @@ async def chat_with_llm(file: UploadFile = File(...)):
76
  # Load WAV file
77
  fs, recorded_waveform = wav.read("input_chat.wav")
78
  os.remove("input_chat.wav")
79
-
80
- # Convert to bytes and decode
81
- waveform_bytes = recorded_waveform.astype(np.uint8).tobytes()
82
  user_message = ggwave.decode(instance, waveform_bytes)
83
 
84
  # Send to LLM
@@ -89,9 +88,23 @@ async def chat_with_llm(file: UploadFile = File(...)):
89
  llm_response = chat_completion.choices[0].message.content
90
 
91
  # Convert response to audio
92
- response_waveform = ggwave.encode(instance, llm_response)
 
 
 
 
 
 
 
 
 
93
  buffer = io.BytesIO()
94
- wav.write(buffer, 44100, np.frombuffer(response_waveform, dtype=np.uint8))
 
 
 
 
 
95
  buffer.seek(0)
96
 
97
  return Response(content=buffer.getvalue(), media_type="audio/wav", headers={
 
76
  # Load WAV file
77
  fs, recorded_waveform = wav.read("input_chat.wav")
78
  os.remove("input_chat.wav")
79
+ recorded_waveform = recorded_waveform.astype(np.float32) / 32767.0
80
+ waveform_bytes = recorded_waveform.tobytes()
 
81
  user_message = ggwave.decode(instance, waveform_bytes)
82
 
83
  # Send to LLM
 
88
  llm_response = chat_completion.choices[0].message.content
89
 
90
  # Convert response to audio
91
+ """Convert text to a WAV audio file using ggwave and return as response."""
92
+ encoded_waveform = ggwave.encode(input_text.text, protocolId=1, volume=100)
93
+
94
+ # Convert byte data into float32 array
95
+ waveform_float32 = np.frombuffer(encoded_waveform, dtype=np.float32)
96
+
97
+ # Normalize float32 data to the range of int16
98
+ waveform_int16 = np.int16(waveform_float32 * 32767)
99
+
100
+ # Save to buffer instead of a file
101
  buffer = io.BytesIO()
102
+ with wave.open(buffer, "wb") as wf:
103
+ wf.setnchannels(1) # Mono audio
104
+ wf.setsampwidth(2) # 2 bytes per sample (16-bit PCM)
105
+ wf.setframerate(48000) # Sample rate
106
+ wf.writeframes(waveform_int16.tobytes()) # Write waveform as bytes
107
+
108
  buffer.seek(0)
109
 
110
  return Response(content=buffer.getvalue(), media_type="audio/wav", headers={