FauziIsyrinApridal commited on
Commit
6957d3b
·
1 Parent(s): 1a2e35d

back to first

Browse files
Files changed (1) hide show
  1. app/chat.py +18 -7
app/chat.py CHANGED
@@ -52,7 +52,7 @@ def initialize_session_state():
52
  if 'tts_output' not in st.session_state:
53
  st.session_state['tts_output'] = ""
54
  if 'tts_played' not in st.session_state:
55
- st.session_state['tts_played'] = True # default True supaya tidak main saat awal
56
 
57
  # edge-tts fallback (cadangan)
58
  async def generate_audio_edge(text, path, voice="id-ID-GadisNeural"):
@@ -126,20 +126,26 @@ def display_chat_history(chain):
126
  use_container_width=True,
127
  )
128
 
129
- # Ambil input user dari teks atau suara
130
- user_input = user_input_obj or stt_text
 
 
 
 
 
131
 
132
- # Jika ada input
133
  if user_input:
134
  with st.spinner('Sedang membuat jawaban...'):
135
  output = conversation_chat(user_input, chain, st.session_state['history'])
136
 
137
  st.session_state['past'].append(user_input)
138
  st.session_state['generated'].append(output)
 
139
 
140
- # Mainkan TTS jika diaktifkan.
141
- if st.session_state['should_speak']:
142
- st.markdown(text_to_speech(output), unsafe_allow_html=True)
 
143
 
144
  # Tampilkan Riwayat Chat
145
  if st.session_state['generated']:
@@ -147,3 +153,8 @@ def display_chat_history(chain):
147
  for i in range(len(st.session_state['generated'])):
148
  message(st.session_state["past"][i], is_user=True, key=str(i) + '_user', avatar_style="no-avatar")
149
  message(st.session_state["generated"][i], key=str(i), avatar_style="no-avatar")
 
 
 
 
 
 
52
  if 'tts_output' not in st.session_state:
53
  st.session_state['tts_output'] = ""
54
  if 'tts_played' not in st.session_state:
55
+ st.session_state['tts_played'] = True
56
 
57
  # edge-tts fallback (cadangan)
58
  async def generate_audio_edge(text, path, voice="id-ID-GadisNeural"):
 
126
  use_container_width=True,
127
  )
128
 
129
+ # Jika ada STT
130
+ if stt_text:
131
+ st.session_state.input_text = stt_text
132
+ st.experimental_rerun()
133
+
134
+ # Ambil input user
135
+ user_input = user_input_obj or st.session_state.get("input_text", "")
136
 
 
137
  if user_input:
138
  with st.spinner('Sedang membuat jawaban...'):
139
  output = conversation_chat(user_input, chain, st.session_state['history'])
140
 
141
  st.session_state['past'].append(user_input)
142
  st.session_state['generated'].append(output)
143
+ st.session_state.input_text = ""
144
 
145
+ # Reset flag supaya TTS siap memutar lagi
146
+ if st.session_state['should_speak'] and output:
147
+ st.session_state['tts_output'] = output
148
+ st.session_state['tts_played'] = False
149
 
150
  # Tampilkan Riwayat Chat
151
  if st.session_state['generated']:
 
153
  for i in range(len(st.session_state['generated'])):
154
  message(st.session_state["past"][i], is_user=True, key=str(i) + '_user', avatar_style="no-avatar")
155
  message(st.session_state["generated"][i], key=str(i), avatar_style="no-avatar")
156
+
157
+ # Pemutaran TTS
158
+ if st.session_state.get('tts_output') and not st.session_state.get('tts_played'):
159
+ st.markdown(text_to_speech(st.session_state['tts_output']), unsafe_allow_html=True)
160
+ st.session_state['tts_played'] = True