ozzy4 commited on
Commit
1670477
·
verified ·
1 Parent(s): 4c1341a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +38 -13
app.py CHANGED
@@ -2,14 +2,8 @@ import sys
2
  import traceback
3
  import logging
4
  import warnings
5
- import gradio as gr
6
- import torch
7
- import torchaudio
8
  import os
9
- import g4f
10
- from transformers import pipeline
11
- from TTS.api import TTS
12
- from gtts import gTTS
13
 
14
  # Придушення попереджень
15
  warnings.filterwarnings('ignore')
@@ -25,13 +19,26 @@ logging.basicConfig(
25
  )
26
  logger = logging.getLogger(__name__)
27
 
 
 
 
 
 
 
 
 
 
 
 
 
 
28
  # Функція для перекладу через g4f
29
  def neural_translate(text, target_language, source_language):
30
  try:
31
  prompt = f"Translate the following text from {source_language} to {target_language} keeping the original meaning and emotional tone: '{text}'"
32
 
33
  response = g4f.ChatCompletion.create(
34
- model="gpt-4",
35
  messages=[{"role": "user", "content": prompt}],
36
  stream=False
37
  )
@@ -56,7 +63,7 @@ def gtts_synthesize(text, target_language, output_filename='output_gtts.wav'):
56
  # Безпечна транскрипція
57
  def safe_transcribe_audio(audio_path):
58
  try:
59
- asr = pipeline("automatic-speech-recognition", model="openai/whisper-base")
60
  result = asr(audio_path)
61
  return result['text']
62
  except Exception as e:
@@ -89,8 +96,10 @@ def safe_clone_and_synthesize(audio_path, source_language, target_language):
89
  mapped_language = LANGUAGE_MAP.get(target_language, target_language)
90
 
91
  # Спроба використати клонування голосу для підтримуваних мов
 
92
  try:
93
- tts = TTS(model_name="tts_models/multilingual/multi-dataset/xtts_v2")
 
94
  output_path = "output_cloned.wav"
95
  tts.tts_to_file(
96
  text=translated_text,
@@ -98,19 +107,35 @@ def safe_clone_and_synthesize(audio_path, source_language, target_language):
98
  speaker_wav=audio_path,
99
  language=mapped_language
100
  )
 
101
  except Exception as e:
102
  logger.warning(f"Помилка клонування голосу: {e}. Використання gTTS.")
103
  output_path = gtts_synthesize(translated_text, mapped_language)
 
104
 
105
  return output_path, original_text, translated_text
106
 
107
  except Exception as e:
108
  logger.error(f"Загальна помилка: {e}")
109
- return None, original_text, translated_text
 
 
 
 
 
 
 
 
 
 
 
 
 
110
 
111
  # Створення Gradio інтерфейсу
112
- with gr.Blocks(title="Голосовий Клон + Перекладач") as demo:
113
- gr.Markdown("# 🎙️ Голосовий Клон + Перекладач")
 
114
 
115
  with gr.Row():
116
  input_audio = gr.Audio(label="Вхідне Аудіо", type="filepath")
 
2
  import traceback
3
  import logging
4
  import warnings
 
 
 
5
  import os
6
+ import gradio as gr
 
 
 
7
 
8
  # Придушення попереджень
9
  warnings.filterwarnings('ignore')
 
19
  )
20
  logger = logging.getLogger(__name__)
21
 
22
+ # Безпечний імпорт модулів
23
+ try:
24
+ import torch
25
+ import torchaudio
26
+ import g4f
27
+ from transformers import pipeline
28
+ from TTS.api import TTS
29
+ from gtts import gTTS
30
+ logger.info("All modules imported successfully")
31
+ except Exception as e:
32
+ logger.error(f"Error importing modules: {e}")
33
+ logger.error(traceback.format_exc())
34
+
35
  # Функція для перекладу через g4f
36
  def neural_translate(text, target_language, source_language):
37
  try:
38
  prompt = f"Translate the following text from {source_language} to {target_language} keeping the original meaning and emotional tone: '{text}'"
39
 
40
  response = g4f.ChatCompletion.create(
41
+ model="gpt-3.5-turbo", # Using 3.5-turbo instead of gpt-4 for better compatibility
42
  messages=[{"role": "user", "content": prompt}],
43
  stream=False
44
  )
 
63
  # Безпечна транскрипція
64
  def safe_transcribe_audio(audio_path):
65
  try:
66
+ asr = pipeline("automatic-speech-recognition", model="openai/whisper-tiny") # Using tiny model for faster loading
67
  result = asr(audio_path)
68
  return result['text']
69
  except Exception as e:
 
96
  mapped_language = LANGUAGE_MAP.get(target_language, target_language)
97
 
98
  # Спроба використати клонування голосу для підтримуваних мов
99
+ output_path = None
100
  try:
101
+ logger.info("Attempting to use TTS for voice cloning")
102
+ tts = TTS(model_name="tts_models/multilingual/multi-dataset/your_tts")
103
  output_path = "output_cloned.wav"
104
  tts.tts_to_file(
105
  text=translated_text,
 
107
  speaker_wav=audio_path,
108
  language=mapped_language
109
  )
110
+ logger.info("Voice cloning successful")
111
  except Exception as e:
112
  logger.warning(f"Помилка клонування голосу: {e}. Використання gTTS.")
113
  output_path = gtts_synthesize(translated_text, mapped_language)
114
+ logger.info("gTTS synthesis successful")
115
 
116
  return output_path, original_text, translated_text
117
 
118
  except Exception as e:
119
  logger.error(f"Загальна помилка: {e}")
120
+ logger.error(traceback.format_exc())
121
+ return None, f"Помилка: {str(e)}", ""
122
+
123
+ # Інформація про можливі помилки
124
+ def show_error_info():
125
+ return """
126
+ # Важлива інформація!
127
+
128
+ Якщо ви отримали помилку, це може бути через:
129
+ 1. Обмеження пам'яті в Hugging Face Spaces
130
+ 2. Проблеми з моделлю TTS
131
+
132
+ Спробуйте використати менші аудіофайли або змінити налаштування.
133
+ """
134
 
135
  # Створення Gradio інтерфейсу
136
+ with gr.Blocks(title="VoiceClone Translator Pro") as demo:
137
+ gr.Markdown("# 🎙️ VoiceClone Translator Pro")
138
+ gr.Markdown(show_error_info())
139
 
140
  with gr.Row():
141
  input_audio = gr.Audio(label="Вхідне Аудіо", type="filepath")