使用 pyttsx3 模块向语句添加语音时出现“VoiceAge”错误

2024-04-12

我基本上是在聊天机器人的帮助下开发一个聊天机器人。现在为了向机器人给出的响应添加语音,我使用了 pyttsx3 模块,但最终结果是这样的。 我什至尝试将这个模块实现为其他声音,因为它显示有 3 个声音可用。

engine = pp.init()
voices=engine.getProperty('voices')
print(voices)
engine.setProperty('voice',voices[0].id)#


def speak(word):
  engine.say(word)
  engine.runAndWait()
    

对于这段代码我得到了这个错误

KeyError                                  Traceback (most recent call last)
Input In [2], in <cell line: 2>()
      1 engine = pp.init()
----> 2 voices=engine.getProperty('voices')
      3 print(voices)
      4 engine.setProperty('voice',voices[0].id)#

File /opt/anaconda3/lib/python3.9/site-packages/pyttsx3/engine.py:146, in Engine.getProperty(self, name)
    128 def getProperty(self, name):
    129     """
    130     Gets the current value of a property. Valid names and values include:
    131 
   (...)
    144     @raise KeyError: When the property name is unknown
    145     """
--> 146     return self.proxy.getProperty(name)

File /opt/anaconda3/lib/python3.9/site-packages/pyttsx3/driver.py:173, in DriverProxy.getProperty(self, name)
    164 def getProperty(self, name):
    165     '''
    166     Called by the engine to get a driver property value.
    167 
   (...)
    171     @rtype: object
    172     '''
--> 173     return self._driver.getProperty(name)

File /opt/anaconda3/lib/python3.9/site-packages/pyttsx3/drivers/nsss.py:69, in NSSpeechDriver.getProperty(self, name)
     66 @objc.python_method
     67 def getProperty(self, name):
     68     if name == 'voices':
---> 69         return [self._toVoice(NSSpeechSynthesizer.attributesForVoice_(v))
     70                 for v in list(NSSpeechSynthesizer.availableVoices())]
     71     elif name == 'voice':
     72         return self._tts.voice()

File /opt/anaconda3/lib/python3.9/site-packages/pyttsx3/drivers/nsss.py:69, in <listcomp>(.0)
     66 @objc.python_method
     67 def getProperty(self, name):
     68     if name == 'voices':
---> 69         return [self._toVoice(NSSpeechSynthesizer.attributesForVoice_(v))
     70                 for v in list(NSSpeechSynthesizer.availableVoices())]
     71     elif name == 'voice':
     72         return self._tts.voice()

File /opt/anaconda3/lib/python3.9/site-packages/pyttsx3/drivers/nsss.py:64, in NSSpeechDriver._toVoice(self, attr)
     60 except KeyError:
     61     lang = attr['VoiceLanguage']
     62 return Voice(attr['VoiceIdentifier'], attr['VoiceName'],
     63              [lang], attr['VoiceGender'],
---> 64              attr['VoiceAge'])

File /opt/anaconda3/lib/python3.9/site-packages/objc/_convenience_mapping.py:18, in __getitem__objectForKey_(self, key)
     16 def __getitem__objectForKey_(self, key):
     17     res = self.objectForKey_(container_wrap(key))
---> 18     return container_unwrap(res, KeyError, key)

File /opt/anaconda3/lib/python3.9/site-packages/objc/_convenience.py:134, in container_unwrap(v, exc_type, *exc_args)
    132 def container_unwrap(v, exc_type, *exc_args):
    133     if v is None:
--> 134         raise exc_type(*exc_args)
    135     elif v is _NULL:
    136         return None

KeyError: 'VoiceAge'

接下来我能做什么...


我今天遇到了同样的问题。 更好的方法是在 nsss.py 中处理 VoiceAge。 但我的解决方案比较粗暴,只是编辑pyttsx3的nsss.py文件,删除,attr['语音时代'] part.

根据您的情况,您可以编辑/opt/anaconda3/lib/python3.9/site-packages/pyttsx3/drivers/nsss.py在64行。

然后它就会起作用。 更多详细信息可以参见https://github.com/nateshmbhat/pyttsx3/issues/248 https://github.com/nateshmbhat/pyttsx3/issues/248 .

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 pyttsx3 模块向语句添加语音时出现“VoiceAge”错误 的相关文章

  • 如何恢复tensorflow inceptions检查点文件(ckpt)?

    I have inception resnet v2 2016 08 30 ckpt文件是预先训练的初始模型 我想使用恢复这个模型 saver restore sess ckpt filename 但为此 我将需要编写训练该模型时使用的变量
  • 如何计算 pandas datetime 对象的均值和方差?

    如何计算 YYYY MM DD 形式的 python 日期时间对象的汇总统计数据 均值和标准差 我想对具有不同 ID 的不同日期时间对象组执行此操作 数据如下 import datetime as dt df pd DataFrame Da
  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • Python - 比较同一字典中的值

    我有一本字典 d Trump MAGA FollowTheMoney Clinton dems Clinton Stein FollowTheMoney Atlanta 我想删除字符串列表中的重复字符串 该字符串是键的值 对于这个例子 期望
  • 为什么 dataclasses.astuple 返回类属性的深层副本?

    在下面的代码中astuple函数正在执行数据类的类属性的深层复制 为什么它不能产生与函数相同的结果my tuple import copy import dataclasses dataclasses dataclass class Dem
  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • python multiprocessing 设置生成进程等待

    是否可以生成一些进程并将生成进程设置为等待生成的进程完成 下面是我用过的一个例子 import multiprocessing import time import sys def daemon p multiprocessing curr
  • 在 Django Admin 中调整字段大小

    在管理上添加或编辑条目时 Django 倾向于填充水平空间 但在某些情况下 当编辑 8 个字符宽的日期字段或 6 或 8 个字符的 CharField 时 这确实是一种空间浪费 字符宽 然后编辑框最多可容纳 15 或 20 个字符 我如何告
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • PyQt 使用 ctrl+Enter 触发按钮

    我正在尝试在我的应用程序中触发 确定 按钮 我当前尝试的代码是这样的 self okPushButton setShortcut ctrl Enter 然而 它不起作用 这是有道理的 我尝试查找一些按键序列here http ftp ics
  • 如何将特定范围内的标量添加到 numpy 数组?

    有没有一种更简单 更节省内存的方法可以单独在 numpy 中执行以下操作 import numpy as np ar np array a l r ar c a a 0 l ar tolist a r 它可能看起来很原始 但它涉及获取给定数
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht
  • 如何在 Flask 中的视图函数/会话之间传递复杂对象

    我正在编写一个 Web 应用程序 当 且仅当 用户登录时 该应用程序从第三方服务器接收大量数据 这些数据被解析为自定义对象并存储在list 现在 用户在应用程序中使用这些数据 调用不同的视图 例如发送不同的请求 我不确定什么是最好的模式在视
  • 将索引与值交换的最快方法

    考虑pd Series s s pd Series list abcdefghij list ABCDEFGHIJ s A a B b C c D d E e F f G g H h I i J j dtype object 交换索引和值并

随机推荐