簡體   English   中英

在虛擬環境中使用 pyttsx3 和 python 的聲音問題

[英]Sound issue using pyttsx3 and python in virtual enviroment

所以基本上我在虛擬環境中構建一個 python 虛擬助手軟件,我想使用 pyttsx3 將文本轉換為語音。 第一個問題是,如果我運行 pyttsx3.init() 我得到一個錯誤

o = self.data[key]()
KeyError: None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File ".\__init__.py", line 3, in <module>
    init_speech()
  File "C:\Users\DJETHA\eclipse-workspace\PythonFull\PythonProjects\Betax\index.py", line 31, in init_speech
    engine = pyttsx3.init()
  File "C:\Users\DJETHA\eclipse-workspace\PythonFull\PythonProjects\Betax\venv\lib\site-packages\pyttsx3\__init__.py", line 46, in init
    eng = Engine(driverName, debug)
  File "C:\Users\DJETHA\eclipse-workspace\PythonFull\PythonProjects\Betax\venv\lib\site-packages\pyttsx3\engine.py", line 52, in __init__
    self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
  File "C:\Users\DJETHA\eclipse-workspace\PythonFull\PythonProjects\Betax\venv\lib\site-packages\pyttsx3\driver.py", line 75, in __init__
    self._module = importlib.import_module(name)
  File "C:\Users\DJETHA\eclipse-workspace\PythonFull\PythonProjects\Betax\venv\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 994, in _gcd_import
  File "<frozen importlib._bootstrap>", line 971, in _find_and_load
  File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 678, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "C:\Users\DJETHA\eclipse-workspace\PythonFull\PythonProjects\Betax\venv\lib\site-packages\pyttsx3\drivers\sapi5.py", line 3, in <module>
    import win32com.client
  File "C:\Users\DJETHA\eclipse-workspace\PythonFull\PythonProjects\Betax\venv\lib\site-packages\win32com\__init__.py", line 5, in <module>
    import win32api, sys, os

經過研究,我發現使用 pyttsx3.init("dummy") 不會產生任何錯誤。 下一個問題是當我跑步時

engine =pyttsx3.init("dummy")
engine.say("hey")
engine.runAndWait()

我沒有聽到任何聲音或看到任何錯誤

我應該注意,如果我在虛擬環境之外的 pyttsx3.init 中使用沒有虛擬對象的上述代碼,則一切正常。

嘗試這個:

import pyttsx3
from pyttsx3.drivers import sapi5

engine = pyttsx3.init('sapi5')
engine.say('hey')
engine.runAndWait()

1 個月前我遇到了同樣的錯誤。 我犯的錯誤是我最初安裝了 python X36 版本。 這就是原因。 檢查 python 架構使用下面的代碼

src\4-4-project>python
>>import platform
>>platform.architecture()

如果 output 顯示 32 位而不是 64 位,則卸載 python X36 位並重新安裝 python X64。 不過不用擔心預裝的軟件包。 您只需通過以下代碼保存所有包

pip freeze > packages.txt
#or
python -m pip freeze> packages.txt

您可以通過以下代碼安裝 python x64bit 版本后重新安裝所有軟件包

python -m pip install -r packages.txt

在設置 python x64bit 版本並設置路徑后,以下代碼就足夠了。 不要忘記再次安裝軟件包。

import pyttsx3
engine = pyttsx3.init()
engine.say("hello world")
engine.runAndWait()

希望它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM