Python中的文本到语音模型

文本到语音模型是将给定文本转换为语音的小型应用程序或漫游器。

我们用于文本到语音转换的模块:pyttsx3

pyttsx3是Python中的文本到语音转换库。这是非常容易使用的工具,可以将输入的文本转换为语音。

下载模块:

pip install pyttsx3 (In your terminal or command prompt)

如果您使用的是Pycharm用户:转到项目解释器并安装模块。

我们将在此模型中使用的各种功能是:

  • engine=pyttsx3.init():init函数是主要功能,我们必须每次都使用此功能。该函数初始化连接并创建引擎,我们可以在上创建的引擎上执行所有操作。init() 功能

  • engine.say(text):此功能会将文本转换为语音(文本是用户的输入)

  • engine.runAndWait():此功能将使语音在系统中可听见,如果您不编写此命令,则语音将对您听不见。

  • engine.setProperty():此方法设置模型的不同属性。
    engine.getProperty():此方法用于通过此功能获取详细信息。

  • 语音:如果我们需要模型的语音和上升,我们可以借助语音方法获得。

语法:

voice=engine.getProperty("voices")
print("voice")

输出:

[<pyttsx3.voice.Voice object at 0x7f1656128b70>, 
<pyttsx3.voice.Voice object at 0x7f165609c978>, 
<pyttsx3.voice.Voice object at 0x7f165609ca20>, 
<pyttsx3.voice.Voice object at 0x7f1655bf9f60>, 
<pyttsx3.voice.Voice object at 0x7f16559c6ac8>, 
<pyttsx3.voice.Voice object at 0x7f16559d7b70>, 
<pyttsx3.voice.Voice object at 0x7f16559d7c18>, 
<pyttsx3.voice.Voice object at 0x7f16559d7cc0>, 
<pyttsx3.voice.Voice object at 0x7f16559d7d68>, 
<pyttsx3.voice.Voice object at 0x7f16559d7e10>, 
<pyttsx3.voice.Voice object at 0x7f16559d7eb8>, 
<pyttsx3.voice.Voice object at 0x7f16559d7f60>, 
<pyttsx3.voice.Voice object at 0x7f16559d7f98>, 
<pyttsx3.voice.Voice object at 0x7f16559d7fd0>, 
<pyttsx3.voice.Voice object at 0x7f1650761048>, 
<pyttsx3.voice.Voice object at 0x7f1650761080>, 
<pyttsx3.voice.Voice object at 0x7f16507610b8>, 
<pyttsx3.voice.Voice object at 0x7f16507610f0>, 
<pyttsx3.voice.Voice object at 0x7f1650761128>, 
<pyttsx3.voice.Voice object at 0x7f16507611d0>, 
<pyttsx3.voice.Voice object at 0x7f1650761208>, 
<pyttsx3.voice.Voice object at 0x7f1650761240>, 
<pyttsx3.voice.Voice object at 0x7f16507612e8>, 
<pyttsx3.voice.Voice object at 0x7f1650761320>, 
<pyttsx3.voice.Voice object at 0x7f16507613c8>, 
<pyttsx3.voice.Voice object at 0x7f1650761400>, 
<pyttsx3.voice.Voice object at 0x7f16507614a8>, 
<pyttsx3.voice.Voice object at 0x7f16507614e0>, 
<pyttsx3.voice.Voice object at 0x7f1650761518>, 
<pyttsx3.voice.Voice object at 0x7f16507615c0>, 
<pyttsx3.voice.Voice object at 0x7f16507615f8>, 
<pyttsx3.voice.Voice object at 0x7f1650761630>, 
<pyttsx3.voice.Voice object at 0x7f1650761668>, 
<pyttsx3.voice.Voice object at 0x7f16507616a0>, 
<pyttsx3.voice.Voice object at 0x7f16507616d8>, 
<pyttsx3.voice.Voice object at 0x7f1650761710>, 
<pyttsx3.voice.Voice object at 0x7f16507617b8>, 
<pyttsx3.voice.Voice object at 0x7f1650761860>, 
<pyttsx3.voice.Voice object at 0x7f1650761898>, 
<pyttsx3.voice.Voice object at 0x7f1650761940>, 
<pyttsx3.voice.Voice object at 0x7f16507619e8>, 
<pyttsx3.voice.Voice object at 0x7f1650761a90>, 
<pyttsx3.voice.Voice object at 0x7f1650761ac8>, 
<pyttsx3.voice.Voice object at 0x7f1650761b00>, 
<pyttsx3.voice.Voice object at 0x7f1650761ba8>, 
<pyttsx3.voice.Voice object at 0x7f1650761be0>, 
<pyttsx3.voice.Voice object at 0x7f1650761c18>, 
<pyttsx3.voice.Voice object at 0x7f1650761cc0>, 
<pyttsx3.voice.Voice object at 0x7f1650761d68>, 
<pyttsx3.voice.Voice object at 0x7f1650761e10>, 
<pyttsx3.voice.Voice object at 0x7f1650761e48>, 
<pyttsx3.voice.Voice object at 0x7f1650761ef0>, 
<pyttsx3.voice.Voice object at 0x7f1650761f98>, 
<pyttsx3.voice.Voice object at 0x7f1650765080>, 
<pyttsx3.voice.Voice object at 0x7f16507650b8>, 
<pyttsx3.voice.Voice object at 0x7f16507650f0>, 
<pyttsx3.voice.Voice object at 0x7f1650765198>, 
<pyttsx3.voice.Voice object at 0x7f1650765240>, 
<pyttsx3.voice.Voice object at 0x7f1650765278>, 
<pyttsx3.voice.Voice object at 0x7f1650765320>, 
<pyttsx3.voice.Voice object at 0x7f16507653c8>, 
<pyttsx3.voice.Voice object at 0x7f1650765400>, 
<pyttsx3.voice.Voice object at 0x7f16507654a8>, 
<pyttsx3.voice.Voice object at 0x7f1650765550>, 
<pyttsx3.voice.Voice object at 0x7f16507655f8>, 
<pyttsx3.voice.Voice object at 0x7f1650765630>, 
<pyttsx3.voice.Voice object at 0x7f1650765668>, 
<pyttsx3.voice.Voice object at 0x7f16507656a0>, 
<pyttsx3.voice.Voice object at 0x7f16507656d8>]

这是各种声音的列表,现在,如果您想知道该列表中有哪种口音,那么我们可以在以下代码的帮助下进行访问:

for i in voice:
  print(i.id)

因此,各种上升是:

['afrikaans', 'aragonese', 'bulgarian', 'bosnian', 'catalan', 
'czech', 'welsh', 'danish', 'german', 'greek', 'default', 
'english', 'en-scottish', 'english-north', 'english_rp', 
'english_wmids', 'english-us', 'en-westindies', 'esperanto', 
'spanish', 'spanish-latin-am', 'estonian', 'persian', 
'persian-pinglish', 'finnish', 'french-Belgium', 'french', 
'irish-gaeilge', 'greek-ancient', 'hindi', 'croatian', 
'hungarian', 'armenian', 'armenian-west', 'indonesian', 
'icelandic', 'italian', 'lojban', 'georgian', 'kannada', 
'kurdish', 'latin', 'lingua_franca_nova', 'lithuanian', 
'latvian', 'macedonian', 'malayalam', 'malay', 'nepali', 
'dutch', 'norwegian', 'punjabi', 'polish', 'brazil', 'portugal', 
'romanian', 'russian', 'slovak', 'albanian', 'serbian', 'swedish', 
'swahili-test', 'tamil', 'turkish', 'vietnam', 'vietnam_hue', 
'vietnam_sgn', 'Mandarin', 'cantonese']

现在,如果我要设置上升,那么我会这样做:

engine.setProperty("voice",voice[15].id)

这意味着第15上升。

现在,如果我们要设置讲话的速度:

engine.setProperty("rate",<The speed you want>)

程序:

# 导入包
import pyttsx3

engine=pyttsx3.init()
text=input("输入要转换为语音的文本")

s=engine.getProperty("voices")
engine.setProperty("voice",s[0].id)
engine.setProperty("rate",150)
engine.say(text)engine.runAndWait()

注意:在.say()和.runAndWait()之前执行所有setProperty和getProperty操作,否则它将不会显示您想要的结果。

错误:

你们中的许多人可能会出错,或者有时语音听不到。

  • 对于Linux用户:https://github.com/nateshmbhat/pyttsx3/issues/41,https://stackoverflow.com/questions/54243316/how-to-fix-pyttsx3-when-it-isnt-working

  • 对于Windows用户:https://github.com/nateshmbhat/pyttsx3/issues/29