Update app.py
Browse files
app.py
CHANGED
@@ -6,6 +6,8 @@ import cv2
|
|
6 |
import numpy as np
|
7 |
from pydub import AudioSegment
|
8 |
from langdetect import detect
|
|
|
|
|
9 |
|
10 |
# Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
|
11 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
@@ -43,6 +45,13 @@ def detect_language(text):
|
|
43 |
except:
|
44 |
return "en" # По умолчанию английский
|
45 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
46 |
# Функция для обработки сообщений, истории и файлов
|
47 |
def respond(
|
48 |
message,
|
@@ -103,6 +112,13 @@ def respond(
|
|
103 |
response += token
|
104 |
yield response
|
105 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
# Функция для сброса истории чата
|
107 |
def reset_chat():
|
108 |
return []
|
@@ -134,9 +150,19 @@ with gr.Blocks() as demo:
|
|
134 |
],
|
135 |
)
|
136 |
|
|
|
|
|
|
|
137 |
# Привязка кнопки "Новый чат" к функции сброса истории
|
138 |
new_chat_button.click(fn=reset_chat, outputs=chat_interface.chatbot)
|
139 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
140 |
# Запуск интерфейса
|
141 |
if __name__ == "__main__":
|
142 |
demo.launch()
|
|
|
6 |
import numpy as np
|
7 |
from pydub import AudioSegment
|
8 |
from langdetect import detect
|
9 |
+
from gtts import gTTS
|
10 |
+
import os
|
11 |
|
12 |
# Инициализация клиента для модели HuggingFaceH4/zephyr-7b-beta
|
13 |
client = InferenceClient("HuggingFaceH4/zephyr-7b-beta")
|
|
|
45 |
except:
|
46 |
return "en" # По умолчанию английский
|
47 |
|
48 |
+
# Функция для преобразования текста в речь (TTS)
|
49 |
+
def text_to_speech(text, language):
|
50 |
+
tts = gTTS(text=text, lang=language, slow=False)
|
51 |
+
audio_file = "output.mp3"
|
52 |
+
tts.save(audio_file)
|
53 |
+
return audio_file
|
54 |
+
|
55 |
# Функция для обработки сообщений, истории и файлов
|
56 |
def respond(
|
57 |
message,
|
|
|
112 |
response += token
|
113 |
yield response
|
114 |
|
115 |
+
# Сохраняем ответ для TTS
|
116 |
+
if response:
|
117 |
+
audio_file = text_to_speech(response, language)
|
118 |
+
return response, gr.Audio.update(value=audio_file, visible=True)
|
119 |
+
else:
|
120 |
+
return response, gr.Audio.update(visible=False)
|
121 |
+
|
122 |
# Функция для сброса истории чата
|
123 |
def reset_chat():
|
124 |
return []
|
|
|
150 |
],
|
151 |
)
|
152 |
|
153 |
+
# Аудиоплеер для TTS
|
154 |
+
audio_player = gr.Audio(label="Reader", visible=False)
|
155 |
+
|
156 |
# Привязка кнопки "Новый чат" к функции сброса истории
|
157 |
new_chat_button.click(fn=reset_chat, outputs=chat_interface.chatbot)
|
158 |
|
159 |
+
# Обновление интерфейса после ответа бота
|
160 |
+
chat_interface.chatbot.change(
|
161 |
+
fn=lambda response: (response, gr.Audio.update(visible=bool(response))),
|
162 |
+
inputs=chat_interface.chatbot,
|
163 |
+
outputs=[chat_interface.chatbot, audio_player],
|
164 |
+
)
|
165 |
+
|
166 |
# Запуск интерфейса
|
167 |
if __name__ == "__main__":
|
168 |
demo.launch()
|