Spaces:
Paused
Paused
Update app.py
Browse files
app.py
CHANGED
|
@@ -340,6 +340,35 @@ chain_neo4j = (
|
|
| 340 |
|
| 341 |
|
| 342 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 343 |
def bot(history, choice, tts_choice, retrieval_mode, model_choice):
|
| 344 |
if not history:
|
| 345 |
return history
|
|
@@ -352,24 +381,20 @@ def bot(history, choice, tts_choice, retrieval_mode, model_choice):
|
|
| 352 |
|
| 353 |
with concurrent.futures.ThreadPoolExecutor() as executor:
|
| 354 |
if tts_choice == "Alpha":
|
| 355 |
-
|
| 356 |
elif tts_choice == "Beta":
|
| 357 |
-
|
| 358 |
-
# elif tts_choice == "Gamma":
|
| 359 |
-
# audio_future = executor.submit(generate_audio_mars5, response)
|
| 360 |
|
| 361 |
-
|
| 362 |
-
|
| 363 |
-
|
| 364 |
-
yield history,
|
| 365 |
-
|
| 366 |
-
audio_path = audio_future.result()
|
| 367 |
-
yield history, audio_path
|
| 368 |
|
| 369 |
history.append([response, None])
|
| 370 |
|
| 371 |
|
| 372 |
|
|
|
|
| 373 |
phi_custom_template = """
|
| 374 |
<|system|>
|
| 375 |
You are a helpful assistant who provides clear, organized, crisp and conversational responses about an events,concerts,sports and all other activities of Birmingham,Alabama .<|end|>
|
|
@@ -934,26 +959,23 @@ def generate_audio_parler_tts(text):
|
|
| 934 |
for new_audio in streamer:
|
| 935 |
if new_audio.shape[0] == 0:
|
| 936 |
break
|
| 937 |
-
# Save
|
| 938 |
-
|
|
|
|
|
|
|
| 939 |
|
| 940 |
audio_segments = []
|
| 941 |
-
for
|
| 942 |
-
audio_segments.append(
|
| 943 |
-
|
| 944 |
-
temp_audio_path = os.path.join(tempfile.gettempdir(), f"parler_tts_audio_chunk_{len(audio_segments)}.wav")
|
| 945 |
-
write_wav(temp_audio_path, sampling_rate, audio_chunk.astype(np.float32))
|
| 946 |
-
logging.debug(f"Saved chunk to {temp_audio_path}")
|
| 947 |
-
|
| 948 |
|
| 949 |
# Combine all the audio chunks into one audio file
|
| 950 |
combined_audio = np.concatenate(audio_segments)
|
| 951 |
combined_audio_path = os.path.join(tempfile.gettempdir(), "parler_tts_combined_audio_stream.wav")
|
| 952 |
-
|
| 953 |
write_wav(combined_audio_path, sampling_rate, combined_audio.astype(np.float32))
|
| 954 |
|
| 955 |
logging.debug(f"Combined audio saved to {combined_audio_path}")
|
| 956 |
-
|
| 957 |
|
| 958 |
|
| 959 |
|
|
|
|
| 340 |
|
| 341 |
|
| 342 |
|
| 343 |
+
# def bot(history, choice, tts_choice, retrieval_mode, model_choice):
|
| 344 |
+
# if not history:
|
| 345 |
+
# return history
|
| 346 |
+
|
| 347 |
+
# # Select the model
|
| 348 |
+
# selected_model = chat_model if model_choice == "GPT-4o" else phi_pipe
|
| 349 |
+
|
| 350 |
+
# response, addresses = generate_answer(history[-1][0], choice, retrieval_mode, selected_model)
|
| 351 |
+
# history[-1][1] = ""
|
| 352 |
+
|
| 353 |
+
# with concurrent.futures.ThreadPoolExecutor() as executor:
|
| 354 |
+
# if tts_choice == "Alpha":
|
| 355 |
+
# audio_future = executor.submit(generate_audio_elevenlabs, response)
|
| 356 |
+
# elif tts_choice == "Beta":
|
| 357 |
+
# audio_future = executor.submit(generate_audio_parler_tts, response)
|
| 358 |
+
# # elif tts_choice == "Gamma":
|
| 359 |
+
# # audio_future = executor.submit(generate_audio_mars5, response)
|
| 360 |
+
|
| 361 |
+
# for character in response:
|
| 362 |
+
# history[-1][1] += character
|
| 363 |
+
# time.sleep(0.05)
|
| 364 |
+
# yield history, None
|
| 365 |
+
|
| 366 |
+
# audio_path = audio_future.result()
|
| 367 |
+
# yield history, audio_path
|
| 368 |
+
|
| 369 |
+
# history.append([response, None])
|
| 370 |
+
|
| 371 |
+
|
| 372 |
def bot(history, choice, tts_choice, retrieval_mode, model_choice):
|
| 373 |
if not history:
|
| 374 |
return history
|
|
|
|
| 381 |
|
| 382 |
with concurrent.futures.ThreadPoolExecutor() as executor:
|
| 383 |
if tts_choice == "Alpha":
|
| 384 |
+
audio_stream = generate_audio_elevenlabs(response)
|
| 385 |
elif tts_choice == "Beta":
|
| 386 |
+
audio_stream = generate_audio_parler_tts(response)
|
|
|
|
|
|
|
| 387 |
|
| 388 |
+
# Stream audio chunks in real-time
|
| 389 |
+
for audio_chunk_path in audio_stream:
|
| 390 |
+
history[-1][1] += response[:len(history[-1][1]) + 1] # Simulate text being generated
|
| 391 |
+
yield history, audio_chunk_path
|
|
|
|
|
|
|
|
|
|
| 392 |
|
| 393 |
history.append([response, None])
|
| 394 |
|
| 395 |
|
| 396 |
|
| 397 |
+
|
| 398 |
phi_custom_template = """
|
| 399 |
<|system|>
|
| 400 |
You are a helpful assistant who provides clear, organized, crisp and conversational responses about an events,concerts,sports and all other activities of Birmingham,Alabama .<|end|>
|
|
|
|
| 959 |
for new_audio in streamer:
|
| 960 |
if new_audio.shape[0] == 0:
|
| 961 |
break
|
| 962 |
+
# Save each audio chunk as it is generated
|
| 963 |
+
temp_audio_path = os.path.join(tempfile.gettempdir(), f"parler_tts_audio_chunk_{len(audio_segments)}.wav")
|
| 964 |
+
write_wav(temp_audio_path, sampling_rate, new_audio.astype(np.float32))
|
| 965 |
+
yield temp_audio_path
|
| 966 |
|
| 967 |
audio_segments = []
|
| 968 |
+
for audio_chunk_path in generate(text, description, chunk_size_in_s):
|
| 969 |
+
audio_segments.append(audio_chunk_path)
|
| 970 |
+
yield audio_chunk_path # Yield each audio chunk path immediately
|
|
|
|
|
|
|
|
|
|
|
|
|
| 971 |
|
| 972 |
# Combine all the audio chunks into one audio file
|
| 973 |
combined_audio = np.concatenate(audio_segments)
|
| 974 |
combined_audio_path = os.path.join(tempfile.gettempdir(), "parler_tts_combined_audio_stream.wav")
|
|
|
|
| 975 |
write_wav(combined_audio_path, sampling_rate, combined_audio.astype(np.float32))
|
| 976 |
|
| 977 |
logging.debug(f"Combined audio saved to {combined_audio_path}")
|
| 978 |
+
|
| 979 |
|
| 980 |
|
| 981 |
|