【问题标题】:How to solve "No package espeak available." error when trying to install speak on AWS ec2 linux?如何解决“没有可用的包 espeak”。尝试在 AWS ec2 linux 上安装 speak 时出错?
【发布时间】:2021-01-23 19:00:27
【问题描述】:

相同的代码在我的本地机器 (Windows) 上运行,但在安装 Pyttsx3 后在 AWS Linux 上运行相同的代码时,它无法运行。

    import pyttsx3
    engine = pyttsx3.init() 
    engine.say("I will speak this text")
    engine.runAndWait()

这是示例代码。 我是 AWS 和 LINUX 的新手。

这是错误:

Traceback (most recent call last):
  File "/home/ec2-user/st_env/env/lib64/python3.6/site-packages/pyttsx3/__init__.py", line 20, in init
    eng = _activeEngines[driverName]
  File "/usr/lib64/python3.6/weakref.py", line 137, in __getitem__
    o = self.data[key]()
KeyError: None

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ec2-user/st_env/env/lib64/python3.6/site-packages/pyttsx3/__init__.py", line 22, in init
    eng = Engine(driverName, debug)
  File "/home/ec2-user/st_env/env/lib64/python3.6/site-packages/pyttsx3/engine.py", line 30, in __init__
    self.proxy = driver.DriverProxy(weakref.proxy(self), driverName, debug)
  File "/home/ec2-user/st_env/env/lib64/python3.6/site-packages/pyttsx3/driver.py", line 50, in __init__
    self._module = importlib.import_module(name)
  File "/usr/lib64/python3.6/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 "/home/ec2-user/st_env/env/lib64/python3.6/site-packages/pyttsx3/drivers/espeak.py", line 9, in <module>
    from . import _espeak, toUtf8, fromUtf8
  File "/home/ec2-user/st_env/env/lib64/python3.6/site-packages/pyttsx3/drivers/_espeak.py", line 18, in <module>
    dll = cdll.LoadLibrary('libespeak.so.1')
  File "/usr/lib64/python3.6/ctypes/__init__.py", line 421, in LoadLibrary
    return self._dlltype(name)
  File "/usr/lib64/python3.6/ctypes/__init__.py", line 343, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: libespeak.so.1: cannot open shared object file: No such file or directory
    

编辑:这个 OSError: libespeak.so.1: 错误是因为机器上没有安装 espeak 引擎(正如其他 Stackoverflow 帖子所建议的那样), 有没有比 sudo yum install espeak 安装 espeak 的方法?

【问题讨论】:

标签: python linux amazon-web-services text-to-speech


【解决方案1】:

我已经在主机操作系统Amazon Linux 2 的亚马逊ec2 实例上测试了以下命令,并测试了您成功运行的示例python 代码。

如果您的主机系统是Amazon Linux 2,那么您可以使用以下命令安装espeak

   __|  __|_  )
   _|  (     /   Amazon Linux 2 AMI
  ___|\___|___|

[ec2-user@aws ~]$ rpm -E %{rhel}
7                                            --> as you can see here its based on RHEL 7

[ec2-user@aws ~]$ yum list espeak
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Available Packages
espeak.i686                                                            1.47.11-4.amzn2.0.2                                                          amzn2-core
espeak.x86_64                                                          1.47.11-4.amzn2.0.2                                                          amzn2-core

在这里,您可以看到 Amazon Linux 上提供了 espeak 包。 所以你需要使用下面的命令来安装它:

ec2-user@aws ~]$ sudo yum -y install espeak
Loaded plugins: extras_suggestions, langpacks, priorities, update-motd
Resolving Dependencies
--> Running transaction check
---> Package espeak.x86_64 0:1.47.11-4.amzn2.0.2 will be installed
--> Processing Dependency: libpulse.so.0(PULSE_0)(64bit) for package: espeak-1.47.11-4.amzn2.0.2.x86_64
--> Processing Dependency: libpulse.so.0()(64bit) for package: espeak-1.47.11-4.amzn2.0.2.x86_64
--> Running transaction check
---> Package pulseaudio-libs.x86_64 0:10.0-3.amzn2.0.3 will be installed
--> Processing Dependency: libsndfile.so.1(libsndfile.so.1.0)(64bit) for package: pulseaudio-libs-10.0-3.amzn2.0.3.x86_64
--> Processing Dependency: libxcb.so.1()(64bit) for package: pulseaudio-libs-10.0-3.amzn2.0.3.x86_64
--> Processing Dependency: libsndfile.so.1()(64bit) for package: pulseaudio-libs-10.0-3.amzn2.0.3.x86_64
--> Processing Dependency: libasyncns.so.0()(64bit) for package: pulseaudio-libs-10.0-3.amzn2.0.3.x86_64
--> Processing Dependency: libXtst.so.6()(64bit) for package: pulseaudio-libs-10.0-3.amzn2.0.3.x86_64
--> Processing Dependency: libX11.so.6()(64bit) for package: pulseaudio-libs-10.0-3.amzn2.0.3.x86_64
--> Processing Dependency: libX11-xcb.so.1()(64bit) for package: pulseaudio-libs-10.0-3.amzn2.0.3.x86_64
...

yum localinstall http://mirror.centos.org/centos/7/os/x86_64/Packages/espeak-1.47.11-4.el7.x86_64.rpm

它会安装包espeak

【讨论】:

  • 不,当我运行“sudo yum install espeak”时。它说没有可用的包espeak。
  • 可以从here下载espeak的rpm包,直接使用yum install FILE.rpm安装即可
  • 伙计,有 2 个包:Binary 和 Source,我应该选择哪一个?
  • 使用二进制包。您还可以运行 yum search espeakyum list *espeak* 来查看它在 Amazon Linux 上是否有一些不同的名称。
  • 如果你下载了源码包,那么如果你熟悉configure-make-make install方法,那么你首先需要编译它,然后安装它。
猜你喜欢
  • 2019-10-06
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 2020-01-12
  • 2019-12-05
  • 2020-10-11
  • 2023-03-13
  • 2016-11-10
相关资源
最近更新 更多