paint-brush
使用 pyttsx3 库的基本 Python 文本到语音教程经过@mshehzen
38,045 讀數
38,045 讀數

使用 pyttsx3 库的基本 Python 文本到语音教程

经过 M Shehzen Sidiq5m2023/01/03
Read on Terminal Reader

太長; 讀書

在这篇文章中,我们将讨论一个库,我亲自使用过它并取得了不错的效果。它是一个 Python 库,允许我们将文本转换为语音。我们将提供它,我们的文本,它将将该文本转换为音频。它是几个文本到语音引擎的包装器。
featured image - 使用 pyttsx3 库的基本 Python 文本到语音教程
M Shehzen Sidiq HackerNoon profile picture

首先让我解释一下我们将在本文中使用的一些缩写和一些基本术语。

对于那些不知道 TTS 是什么意思的人,它的意思是文本到语音。


我们想要做的是给我们的程序一些文本,它会将文本转换成语音并读给我们听。


换句话说,就是让计算机读给我们听。


现在有很多方法可以做这个TTS,但是这里我们将讨论一个库,我个人使用过并且取得了很好的效果。


我们将使用pyttsx3

什么是pyttsx3

pyttsx3 是一个 Python 库,它允许我们将文本转换为语音。所以我们将向它提供我们的文本,它会将文本转换为音频。


它是几个文本到语音引擎的包装器,包括 Microsoft 的文本到语音 (TTS) 引擎。

有趣的东西

现在让我们看看如何将这个库用于 TTS。


我们需要做的第一件也是最重要的事情是安装这个库,我们可以使用pip来安装,它与 python 安装捆绑在一起。


此安装的语法类似于所有pip installs


pip install pyttsx3


如果万一此安装为您提供错误cmd not found ,请尝试使用pip3而不是pip ,例如:

pip3 install pyttsx3


安装完成后,让我们通过运行以下命令检查它是否安装成功:

pip3 freeze


它将返回我们环境中安装的所有包的列表。如果你在这个列表中找到pyttsx3 ,那么我们就成功安装了pyttsx3 ,我们就可以在我们的项目中使用它了。


安装完成后,我们需要将这个库导入到我们的项目中,然后我们要初始化文本转语音引擎。这个引擎是最重要的部分,就是这个引擎要为我们做TTS。


Importing pyttsx3 and initializing the text-to-speech engine:


import pyttsx3

engine = pyttsx3.init()


.init()是需要调用以初始化引擎的方法。


现在,当我们的引擎被初始化时,我们可以通过调用say(text)方法将它用于我们的 TTS。


engine.say(text)

engine.runAndWait()


此语音文本的速度和音量将是默认值,我们可以通过以下方式更改它们。


我们所需要的只是为我们的引擎设置一些值。这就像告诉引擎使用什么。

因此,我们必须按以下方式执行此操作:


  • 首先,我们将使用getProperty(name)获取该属性
  • 然后我们将使用setProperty(name, value)设置该属性


我们将设置速率和引擎的音量。


设置语音的速率和音量:


rate = engine.getProperty('rate')

engine.setProperty('rate', rate-100)


默认情况下,rate是200,所以我们将它降低到100。rate就是说话的rate ,200对我们来说已经很高了。所以我们降低了它。


速率很简单,就是说话者说出文本的速度。


设置速率后,我们将通过首先获取音量属性然后设置它来更改或设置音量。


volume = engine.getProperty('volume')

engine.setProperty('volume', volume+0.50)


默认音量为 1,即 100%,我们将通过将 .50 添加到从读取音量属性接收到的值来将其增加到 150%。


现在我们完成了这两个属性的设置,我们将调用say()并且语音现在将具有我们的参数,即1x速度和1.50音量。


engine.say("Hello, This is the test for the pyttsx3")

engine.runAndWait()


现在这个runAndWait对我们很重要。我们要运行这个引擎,一直运行到它完成传递文本的 TTS。


此外,改变音量,我们也可以改变说话的声音。现在这里有2个声音。一种用于女声,一种用于男声。


我们将使用与之前相同的语法来设置我们的属性。


记住:

  • voices[0]是男声。
  • voices[1]是女声。


让我们改变声音:


voices = engine.getProperty('voices')

engine.setProperty('voice', voices[1].id)


我们需要调用所选语音的id属性,然后一切就绪。

我们可以复制上面的代码,这次声音将是女性,而不是默认的男性。


完成参数设置和 TTS 测试后,我们现在可以保存生成的 TTS 的音频文件。


这次我们将调用.save_to_file而不是调用.say()并传递文本和输出文件的名称,我们希望将 TTS 音频保存到该文件中。


这一次,它不会大声朗读文本,而是将其保存到我们传递的名称的文件中。


engine.save_to_file("Hello, this is test for pyttsx3.", "test.mp3")

engine.runAndWait()


运行后,我们将有一个名为test.mp3的文件,其中包含生成的 TTS。


此外,pyttsx3 还有其他几种方法和属性,可用于自定义文本到语音输出,例如设置音高、语言等。您可以在pyttsx3文档中找到有关这些的更多信息。

最后的话

看,从文本甚至包含文本的文件生成 TTS 有多容易?

我们可以将这些生成的 TTS 用于各种目的,这是给你的。


我知道,现在您将能够轻松地执行此 TTS,并且您将使用它制作很棒的项目。


现在,做一件事,如果您喜欢我的内容并想保持联系,请在Twitter 上关注我。

感谢您阅读,享受内容。