Felguk commited on
Commit
c44c1a4
·
verified ·
1 Parent(s): 6a23d80

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -0
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()