ernestmindres commited on
Commit
0932438
·
verified ·
1 Parent(s): bf7b73a

Update tts_engine.py

Browse files
Files changed (1) hide show
  1. tts_engine.py +19 -14
tts_engine.py CHANGED
@@ -1,41 +1,46 @@
1
  # tts_engine.py
 
2
  import pyttsx3
3
  import os
4
- import io
5
 
6
  _engine = None
7
 
8
  def get_tts_engine():
9
  """Initialise et retourne le moteur pyttsx3."""
10
  global _engine
11
- # Si le moteur est déjà initialisé, on le retourne directement
12
  if _engine is not None:
13
  return _engine
14
 
15
- # Sinon, on tente l'initialisation
16
  try:
17
- print("-> [TTS Engine] Tentative d'initialisation de pyttsx3...")
18
- # L'ID de l'initialisation est important dans les environnements forkés
 
 
19
  _engine = pyttsx3.init()
20
- _engine.setProperty('rate', 150) # Vitesse de lecture
21
- print("-> [TTS Engine] Initialisation réussie.")
 
 
 
 
 
 
22
  except Exception as e:
23
- # L'erreur fatale est cruciale ici
24
- print(f"!!! FATAL ERROR: pyttsx3 initialization failed. Error: {e}")
25
  _engine = None
26
-
27
  return _engine
28
 
29
  def reset_tts_engine():
30
  """Force la réinitialisation du moteur TTS. À utiliser après un fork."""
31
  global _engine
32
  if _engine is not None:
33
- print("-> [TTS Engine] Arrêt de l'ancien moteur.")
34
- # Arrêter l'ancien moteur (libérer les ressources)
35
  _engine.stop()
36
  _engine = None
37
- # L'appel à get_tts_engine() sera fait par le worker après le fork
38
- # Nous pourrions l'appeler ici, mais le hook Gunicorn est plus sûr.
39
 
40
  def get_available_languages():
41
  """Récupère la liste des langues/voix disponibles."""
 
1
  # tts_engine.py
2
+
3
  import pyttsx3
4
  import os
5
+ import sys
6
 
7
  _engine = None
8
 
9
  def get_tts_engine():
10
  """Initialise et retourne le moteur pyttsx3."""
11
  global _engine
12
+
13
  if _engine is not None:
14
  return _engine
15
 
 
16
  try:
17
+ # On force l'écriture immédiate du log
18
+ print("-> [TTS Engine] Tentative d'initialisation de pyttsx3...", file=sys.stderr, flush=True)
19
+
20
+ # Initialisation du moteur (peut échouer silencieusement)
21
  _engine = pyttsx3.init()
22
+ _engine.setProperty('rate', 150)
23
+
24
+ # Test pour vérifier que le moteur a bien trouvé des voix (signe de succès)
25
+ if not _engine.getProperty('voices'):
26
+ raise Exception("Aucune voix eSpeak trouvée. L'initialisation est probablement incomplète.")
27
+
28
+ print("-> [TTS Engine] ✅ Initialisation réussie.", file=sys.stderr, flush=True)
29
+
30
  except Exception as e:
31
+ # Affichage clair de l'erreur d'initialisation
32
+ print(f"!!! FATAL ERROR: pyttsx3 initialization failed. Erreur: {e}", file=sys.stderr, flush=True)
33
  _engine = None
34
+
35
  return _engine
36
 
37
  def reset_tts_engine():
38
  """Force la réinitialisation du moteur TTS. À utiliser après un fork."""
39
  global _engine
40
  if _engine is not None:
41
+ print("-> [TTS Engine] Arrêt de l'ancien moteur.", file=sys.stderr, flush=True)
 
42
  _engine.stop()
43
  _engine = None
 
 
44
 
45
  def get_available_languages():
46
  """Récupère la liste des langues/voix disponibles."""