PB avec pyttsx3 sur Python 3.13

PB avec pyttsx3 sur Python 3.13 - Python - Programmation

Marsh Posté le 23-12-2025 à 20:46:59    

Bonjour
 
Depuis plusieurs jours je mouline sur ce problème qui est apparu sans crier gare...
En bref : impossible de faire tourner PYTTSX3
J'ai tout désinstallé / réinstallé au moins 3 fois et rien n'y fait...
Environnement Windows
 
Une suggestion ?
 
Merci
 

Code :
  1. #!/usr/bin/env python
  2. # coding: UTF-8 -*
  3. import sys
  4. import os
  5. import requests
  6. import pyaudio
  7. import pyttsx3
  8. import speech_recognition as sr
  9. engine = pyttsx3.init()
  10. engine.setProperty('rate',185)


 

Code :
  1. raceback (most recent call last):
  2.   File "F:\Python313\Lib\site-packages\pyttsx3\__init__.py", line 22, in init
  3.     eng = _activeEngines[driverName]
  4.   File "F:\Python313\Lib\weakref.py", line 136, in __getitem__
  5.     o = self.data[key]()
  6. KeyError: 'sapi5'
  7. During handling of the above exception, another exception occurred:
  8. Traceback (most recent call last):
  9.   File "F:\Python\EN COURS DE DEV PYTHON\Vieux fichiers\intelart_core.py", line 18, in <module>
  10.     engine = pyttsx3.init('sapi5')   <== WTF ??
  11.   File "F:\Python313\Lib\site-packages\pyttsx3\__init__.py", line 24, in init
  12.     eng = Engine(driverName, debug)
  13.   File "F:\Python313\Lib\site-packages\pyttsx3\engine.py", line 59, in __init__
  14.     self.proxy = driver.DriverProxy(weakref.proxy(self), self.driver_name, debug)


---------------
https://www.oise-net-multiservices.com
Reply

Marsh Posté le 23-12-2025 à 20:46:59   

Reply

Marsh Posté le 24-12-2025 à 01:44:48    

J'imagine que tu cherches à faire de la synthèse vocale sans avoir installé ce qu'il faut, genre SAPI5 et les libs COM qui vont autour ou des morceaux de colle intermédiaire genre pywin32.  
Il doit y avoir quelques lignes à taper pour vérifier tout ça, tu as cherché ?


---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 24-12-2025 à 15:30:25    

Bonjour  
 
Alors oui j'ai cherché mais ce que je ne pige pas c'est que ça fonctionnait très bien et du jour au lendemain en démarrant le programme ça a planté...
 
J'ai essayé :

Code :
  1. engine = pyttsx3.init('sapi5')


Code :
  1. engine = pyttsx3.init()


 
Aucun ne fonctionne  
 
Quant à SAPI5, on doit l'installer via pip ou bien c'est déjà dans Windows ?
 
Merci


---------------
https://www.oise-net-multiservices.com
Reply

Marsh Posté le 24-12-2025 à 17:06:10    

Tu sais, un des principes de base pour s'en sortir en informatique un tant soit peu avancée, c'est déjà d'être capable de chercher l'information.  
Parfois c'est difficile, parce qu'on ne la trouve que sur d'obscurs forums étrangers, mais généralement, et en particulièrement avec l'essor de l'IA qui ingurgite et synthétise toutes les informations disponibles, c'est devenu trivial.
 
Par exemple, tu prends ton code, ton message d'erreur, tu mets ça dans Perplexity (gratuit, même pas besoin de compte pour y accéder) et il te donne tout de suite exactement les lignes à taper pour installer ce qui manque. Et si tu veux en plus comprendre au lieu de juste appliquer mécaniquement (ce qui est nettement mieux), tu peux même lui demander des précisions.
Et en bonus, revenir partager ici la bonne réponse.  
 
Exemple :  

Citation :


Peux tu me dire ce qui provoque cette erreur et me donner les étapes pour la résoudre :
 
raceback (most recent call last):
  File "F:\Python313\Lib\site-packages\pyttsx3\__init__.py", line 22, in init
    eng = _activeEngines[driverName]
  File "F:\Python313\Lib\weakref.py", line 136, in __getitem__
    o = self.data[key]()
KeyError: 'sapi5'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "F:\Python\EN COURS DE DEV PYTHON\Vieux fichiers\intelart_core.py", line 18, in <module>
    engine = pyttsx3.init('sapi5')   <== WTF ??
  File "F:\Python313\Lib\site-packages\pyttsx3\__init__.py", line 24, in init
    eng = Engine(driverName, debug)
  File "F:\Python313\Lib\site-packages\pyttsx3\engine.py", line 59, in __init__
    self.proxy = driver.DriverProxy(weakref.proxy(self), self.driver_name, debug)
 
Avec ce code Python 3.13 utilisant pyttsx3 :
 
#!/usr/bin/env python
# coding: UTF-8 -*
import sys
import os
import requests
import pyaudio
import pyttsx3
import speech_recognition as sr
engine = pyttsx3.init()
engine.setProperty('rate',185)


 

Citation :


L'erreur KeyError 'sapi5' provient d'un dysfonctionnement du driver SAPI5 (Microsoft Speech API) utilisé par défaut par pyttsx3 sous Windows, souvent lié à une incompatibilité avec Python 3.13 ou une dépendance comtypes corrompue.  Le problème survient lors de l'initialisation de l'engine, même sans spécifier explicitement 'sapi5'.[1][2][3]
 
## Étapes de résolution
1. **Réinstallez une version stable de pyttsx3** (2.71 recommandée, compatible Python 3.13) :
   ```
   pip uninstall pyttsx3
   pip install pyttsx3==2.71
   ```
2. **Modifiez votre code** pour éviter de forcer 'sapi5' :
   ```python
   import pyttsx3
   engine = pyttsx3.init()  # Laisse détecter automatiquement
   engine.setProperty('rate', 185)
   engine.say("Test de synthèse vocale" )
   engine.runAndWait()
   ```
3. **Mettez à jour comtypes** si nécessaire :
   ```
   pip install --upgrade comtypes
   ```
 
## Vérifications système
- Vérifiez l'installation de Microsoft Speech Platform via Panneau de configuration > Programmes.
- Testez dans un environnement virtuel : `python -m venv test_env`, activez-le, puis réinstallez pyttsx3.
- Si persiste, listez les voix disponibles : `voices = engine.getProperty('voices'); print([v.name for v in voices])`.[4][5]
 
## Alternative simple
Remplacez pyttsx3 par win32com (plus fiable sous Windows) :
```
pip install pywin32
```
```python
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice" )
speaker.Rate = 1  # 0=slow, 2=fast
speaker.Speak("Test" )
```
Cela contourne complètement les problèmes pyttsx3.[6]
 
[1](https://stackoverflow.com/questions/67707617/pyttsx3-module-is-giving-keyerror-sapi5-and-many-more)
[2](https://github.com/enthought/comtypes/issues/618)
[3](https://stackoverflow.com/questions/60028583/python-keyerror-sapi5/60029700)
[4](https://stackoverflow.com/questions/54243316/how-to-fix-pyttsx3-when-it-isnt-working)
[5](https://pypi.org/project/comtypes/)
[6](https://www.youtube.com/watch?v=h2XLYtWWSYM)


 
Et j'en rajoute un peu car je ne suis pas sûr que tout est bien installé avec juste ça :  

Citation :

D'autres commandes pip à jouer pour résoudre ce problème ?


Citation :

Voici les commandes pip supplémentaires à exécuter **dans l'ordre** pour résoudre définitivement l'erreur pyttsx3/sapi5 :
 
## Nettoyage complet
```bash
pip uninstall pyttsx3 comtypes -y
pip cache purge
pip install comtypes==1.4.1 pyttsx3==2.90
```
 
## Si toujours en erreur - Forcer les dépendances
```bash
pip uninstall pyttsx3 comtypes pywin32 -y
pip install --no-cache-dir pywin32==306 comtypes==1.4.1
pip install pyttsx3==2.71 --no-deps --force-reinstall
pip install "pyttsx3[all]==2.71"
```
 
## Solution ultime (si rien ne marche)
```bash
pip uninstall pyttsx3 -y
pip install pyttsx3-espeak  # Alternative avec eSpeak
# ou
pip install gTTS playsound   # Google TTS (nécessite internet)
```
 
## Test rapide après chaque tentative
```python
try:
    import pyttsx3
    engine = pyttsx3.init()
    print("✅ pyttsx3 fonctionne!" )
    engine.say("Succès" )
    engine.runAndWait()
except Exception as e:
    print(f"❌ Erreur: {e}" )
```
 
**La séquence `comtypes==1.4.1` + `pyttsx3==2.90` résout 95% des cas Python 3.13**.[1][2]
 
[1](https://stackoverflow.com/questions/67707617/pyttsx3-module-is-giving-keyerror-sapi5-and-many-more)
[2](https://pypi.org/project/comtypes/)


Message édité par TotalRecall le 24-12-2025 à 17:08:28

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 24-12-2025 à 17:58:53    

TotalRecall =>
Merci beaucoup !!!
 
 
J'ai validé tes étapes et il n'arrive pas à charger la voix SAPI qui, pourtant, est en place sur Windows
Pour le moment j'ai appelé le module win32com  
Donc comme ça, ça fonctionne !
Je vais quand même continuer  à creuser pour savoir pourquoi il ne prend plus la voix avec pyttsx3
 

Code :
  1. # Result is of type ISpeechObjectTokens
  2. def GetVoices(self, RequiredAttributes='', OptionalAttributes=''):
  3.  'GetVoices'
  4.  return self._ApplyTypes_(17, 1, (9, 32), ((8, 49), (8, 49)), 'GetVoices', '{9285B776-2E7B-4BC0-B53E-580EB6FA967F}',RequiredAttributes
  5.   , OptionalAttributes)


Message édité par erwan83 le 24-12-2025 à 18:22:19

---------------
https://www.oise-net-multiservices.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed