使用 pyttsx3 探索 Python 中的文本转语音 您所在的位置:网站首页 pyttsx3库语音保存为音频文件 使用 pyttsx3 探索 Python 中的文本转语音

使用 pyttsx3 探索 Python 中的文本转语音

2024-06-12 23:32| 来源: 网络整理| 查看: 265

1. 什么是文字转语音?

        文本转语音 (TTS) 是一项使计算机能够将书面文本转换为口语单词的技术。它有许多应用,从提高视障人士的可访问性到创建基于语音的交互式系统。TTS 技术分析文本输入并生成相应的音频输出,使用户可以听到内容而不是阅读内容。

2. 介绍pyttsx3

        Pyttsx3 是一个功能强大的 Python 库,它提供了各种语音合成器的接口。它允许开发人员轻松将文本转换为语音,并提供语音属性(例如语速、音量等)的自定义选项。通过利用 pyttsx3,您可以向 Python 应用程序添加语音合成功能,并创建引人入胜的交互式体验。

3. 安装

        在开始之前,让我们确保系统上安装了 pyttsx3。打开终端或命令提示符并运行以下命令:

pip install pyttsx3 4 基本用法(安装后测试)

下面给出了如何使用这个库的说明和解释。

import pyttsx3 #导入库 def textToVoice(): eng = pyttsx3.init() #初始化一个实例 eng.say("这是一个演示如何使用 python 中的 pyttsx3 库将文本转换为语音。") # say 用于传递要说的文本的方法 eng.runAndWait() # 运行并处理语音命令 if __name__ == "__main__": textToVoice()

        在此示例中,我们导入 pyttsx3 库并使用该init()方法初始化引擎。接下来,我们提供要使用该say()方法转换为语音的文本,最后,我们使用以下命令运行文本到语音的转换runAndWait()

三、使用方法 3.1. 自定义语音属性

Pyttsx3 允许我们自定义各种语音属性,例如语速和音量。这是一个例子:

import pyttsx3 engine = pyttsx3.init() # Customizing speech properties engine.setProperty('rate', 150) # Speed of speech (words per minute) engine.setProperty('volume', 0.8) # Volume (0.0 to 1.0) text = "Hello, how are you?" engine.say(text) engine.runAndWait()

        在此示例中,我们将语速设置为每分钟 150 个单词,并将音量设置为 0.8(最大音量的 80%)。

3.2 将语音保存为音频文件

        Pyttsx3 允许我们将合成语音保存为音频文件。这是一个例子:

import pyttsx3 engine = pyttsx3.init() text = "Hello, how are you?" engine.save_to_file(text, 'output.wav') engine.runAndWait()

        在本例中,我们使用该save_to_file()方法将语音保存为音频文件。第一个参数是我们要转换的文本,第二个参数是文件名和文件格式(例如“output.wav”)。

3.3 处理事件和回调

        Pyttsx3 提供了事件驱动的架构,用于在语音合成过程中处理事件。start下面是处理、end和事件的示例word:

import pyttsx3 def onStart(name): print("Speech started") def onEnd(name, completed): if completed: print("Speech completed") else: print("Speech interrupted") def onWord(name, location, length): print(f"Current word: {name}, Location: {location}, Length: {length}") engine = pyttsx3.init() engine.connect('started-utterance', onStart) engine.connect('finished-utterance', onEnd) engine.connect('word', onWord) text = "Hello, how are you?" engine.say(text) engine.runAndWait()

        在此示例中,我们定义了三个回调函数:onStart()、onEnd()和onWord()。然后我们使用该方法将这些函数连接到相应的事件connect()。当语音合成开始时,该onStart()函数被调用,同样,onEnd()当语音合成结束时,该函数被调用。onWord()每个说出的单词都会调用该函数。

3.4 错误处理和异常处理

        在文本到语音转换过程中,可能会出现异常。处理和管理这些异常对于确保顺利执行至关重要。这是一个例子:

import pyttsx3 engine = pyttsx3.init() try: text = "Hello, how are you?" engine.say(text) engine.runAndWait() except Exception as e: print("Error occurred:", str(e))

        在此示例中,我们将文本到语音转换代码包装在一个try-except块中。except如果转换过程中发生异常,则执行块内的代码,并打印异常消息。

3.5 高级特性和功能

        Pyttsx3 是一个多功能的文本转语音 (TTS) 库,除了基础功能之外,还提供了多种高级特性和功能。让我们探索一下 pyttsx3 的一些高级功能:

✅改变声音和语音合成器:

Pyttsx3支持多种语音合成器,例如eSpeak、Microsoft Speech Platform以及macOS内置的语音合成器。您可以根据您的要求选择特定的合成器。它还允许您在特定合成器内的不同声音之间切换,使您能够自定义合成语音的特征和口音。

✅控制语音参数:

Pyttsx3 提供对语音参数的细粒度控制,允许您调整音调、速率和音量以创建更自然且更具表现力的语音。您可以使用 方法更改音高engine.setProperty('pitch', value),value范围从 0.0 到 2.0,默认为 1.0。可以使用 修改语速(语速)engine.setProperty('rate', value),其中value表示语速,以每分钟字数为单位(默认为 200)。可以使用 调整语音音量engine.setProperty('volume', value),value范围从 0.0 到 1.0,其中 1.0 为最大音量。

✅将语音保存为不同的音频格式

除了播放语音输出之外,pyttsx3 还允许您将合成的语音保存为各种格式的音频文件,例如 WAV、MP3 和 OGG。您可以使用该engine.save_to_file(text, filename)方法将语音保存为音频文件。指定所需的文件名和适当的文件扩展名以指示格式。

✅多线程支持

Pyttsx3 支持多线程,允许您在主程序继续执行的同时在单独的线程上运行文本到语音转换。此功能使您能够创建响应式和交互式应用程序,这些应用程序可以处理用户输入或同时执行其他任务。

✅语言和语音选择

Pyttsx3 支持多种语言,使您能够通过选择适当的语音和语言设置来合成不同语言的语音。您可以使用 指定所需的语言engine.setProperty('language', language_id),其中language_id代表语言代码(例如,“en”表示英语,“es”表示西班牙语)。该库提供了每种语言的可用语音列表,允许您选择最适合您的要求的语音。 四、关于语音的说明

        在运行 python 文件时,会触发 textToVoice() 函数。我们需要先导入 pyttsx3 库。在函数内部,一个实例在变量“eng”中初始化。然后,eng 将其从文本转换为语音,编译器在调用 runAndWait() 方法时告诉它。

4.1 了解 TTS 引擎

        Pyttsx3 是 python 中一个非常易于使用的模块,可将文本转换为语音。该模块支持两种声音:女声和男声。

它包括三个 TTS(文本到语音)引擎:

sapi5 – 在 Windows 中提供男性和女性的声音 nsss – 在 MAC-OS 中提供男性和女性的声音 espeak – 在所有其他环境中提供男性和女性的声音

在 pyttsx3 中将声音从男性变为女性 说明如何将一种形式的语音转换为另一种形式的语音说明

import pyttsx3 #import the library def voiceChange(): eng = pyttsx3.init() #initialize an instance voice = eng.getProperty('voices') #get the available voices # eng.setProperty('voice', voice[0].id) #set the voice to index 0 for male voice eng.setProperty('voice', voice[1].id) #changing voice to index 1 for female voice eng.say("This is a demonstration of how to convert index of voice using pyttsx3 library in python.") #say method for passing text to be spoken eng.runAndWait() #run and process the voice command if __name__ == "__main__": voiceChange() 4.2 解释

        在运行 python 文件时,会调用 voiceChange() 函数。在函数内部,模块的一个实例被初始化。在语音库中,我们获取可用的语音,然后使用 setProperty() 方法,我们相应地更改语音 id 以带来男声或女声。 say 方法包含要说的文本。 runAndWait() 方法运行并处理语音命令。

五、结论

        在这篇博文中,我们使用 Python 3 和 pyttsx3 库探索了文本到语音合成的世界。我们学习了如何将文本转换为语音、自定义语音属性、将语音保存为音频文件、处理事件和回调以及管理异常。借助 pyttsx3,您可以通过引人入胜的交互式语音体验来增强您的应用程序。

        Pyttsx3 提供了一个简单且多功能的文本到语音转换界面,使您能够创建各种应用程序,从辅助工具到语音助手等。现在您已经对 pyttsx3 有了深入的了解,是时候释放您的创造力并探索 Python 中语音合成的可能性了!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有