📌  相关文章
📜  pyttsx3 NameError: name 'voices' is not defined - Python (1)

📅  最后修改于: 2023-12-03 14:46:48.756000             🧑  作者: Mango

使用 pyttsx3 报错 NameError: name 'voices' is not defined

当使用 pyttsx3 库时出现 NameError: name 'voices' is not defined 错误,这通常是由于在代码中未正确定义 'voices' 变量造成的。此错误可能是以下两种情况之一:

  1. 未正确初始化 pyttsx3 引擎。
  2. 未正确获取系统中的语音列表。

下面是解决该问题的几种方法:

方法1:初始化 pyttsx3 引擎并获取语音列表
import pyttsx3

# 初始化 pyttsx3 引擎
engine = pyttsx3.init()

# 获取系统中的语音列表
voices = engine.getProperty('voices')

# 打印语音列表
for voice in voices:
    print(voice.id)

确保在获取语音列表之前正确初始化了 pyttsx3 引擎,然后使用 engine.getProperty('voices') 获取语音列表。

方法2:使用指定语音
import pyttsx3

# 初始化 pyttsx3 引擎
engine = pyttsx3.init()

# 获取系统中的语音列表
voices = engine.getProperty('voices')

# 设置使用的语音
engine.setProperty('voice', voices[0].id)

# 语音输出测试
engine.say("Hello, World!")
engine.runAndWait()

同样,确保在获取语音列表并设置使用的语音之前正确初始化了引擎。

方法3:指定语音路径
import pyttsx3

# 初始化 pyttsx3 引擎
engine = pyttsx3.init()

# 指定语音路径
voice_path = 'path/to/voice'

# 设置使用的语音
engine.setProperty('voice', voice_path)

# 语音输出测试
engine.say("Hello, World!")
engine.runAndWait()

在某些情况下,可能需要手动指定语音的路径。使用 engine.setProperty('voice', voice_path) 来指定使用的语音。