ernestmindres commited on
Commit
67c29f4
·
verified ·
1 Parent(s): 978d539

Update tts_engine.py

Browse files
Files changed (1) hide show
  1. tts_engine.py +27 -12
tts_engine.py CHANGED
@@ -3,25 +3,40 @@ import pyttsx3
3
  import os
4
  import io
5
 
6
- # Initialisation du moteur pyttsx3
7
- # Attention: L'initialisation du moteur est lente. Il est préférable de le faire une seule fois.
8
  _engine = None
9
 
10
  def get_tts_engine():
11
  """Initialise et retourne le moteur pyttsx3."""
12
  global _engine
13
- if _engine is None:
14
- try:
15
- # S'assurer que le moteur est initialisé avec l'environnement 'espeak'
16
- _engine = pyttsx3.init()
17
- # Optimisation: Réglage des propriétés du moteur (optionnel)
18
- _engine.setProperty('rate', 150) # Vitesse de lecture
19
- except Exception as e:
20
- # AFFICHAGE CLAIR DE L'ERREUR D'INITIALISATION
21
- print(f"!!! FATAL ERROR: pyttsx3 initialization failed. Is eSpeak installed and runnable? Error: {e}")
22
- _engine = None # S'assure qu'on ne garde pas une référence cassée
 
 
 
 
 
 
23
  return _engine
24
 
 
 
 
 
 
 
 
 
 
 
 
25
  def get_available_languages():
26
  """Récupère la liste des langues/voix disponibles."""
27
  engine = get_tts_engine()
 
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."""
42
  engine = get_tts_engine()