如何在 Python 中将文本转换为语音

2025年4月16日 | 阅读 4 分钟

在本教程中,我们将学习如何将人类语言文本转换为类似人类的语音。

有时我们更喜欢听内容而不是阅读。在听重要文件数据时,我们可以同时处理多项任务。 Python 提供了许多将文本转换为语音的 API。Google Text to Speech API 很受欢迎,通常称为 gTTS API

使用此工具非常简单,它提供了许多内置函数,可以将文本文件保存为 mp3 文件。

我们不需要使用神经网络来训练模型将文件转换为语音,因为这也很难实现。相反,我们将使用这些 API 来完成任务。

gTTS API 提供了将文本文件转换为不同语言的功能,例如英语、印地语、德语、泰米尔语、法语等等。我们还可以以快或慢的速度播放音频语音。

但是,根据其最新更新,我们无法更改语音文件;它将由系统生成,无法更改。

要将文本文件转换为语音,我们将使用另一个名为 pyttsx3 的离线库。

gTTS API 的安装

在终端中键入以下命令来安装 gTTS API。

然后,安装其他模块以与 gTTS 一起使用。

然后安装 pyttsx3。

让我们来理解 gTTS API 的工作原理

正如我们所见,它非常易于使用;我们需要导入它并传递 gTTS 对象,该对象是 Google Translator API 的接口。

在上面的行中,我们发送了文本数据并收到了实际的音频语音。现在,将此保存为音频文件 welcome.mp3

它将保存在一个目录中,我们可以按如下方式收听此文件

输出

How to Convert Text to Speech in Python

请打开系统音量,收听我们之前保存的文本。

现在,我们将定义完整的文本转语音 Python 程序。

Python 程序

输出

How to Convert Text to Speech in Python

说明

在上面的代码中,我们导入了 API 并使用了 gTTS 函数。 gTTS() 函数接受三个参数 -

  • 第一个参数是我们想要转换为语音的文本值。
  • 第二个参数是指定的语言。它支持多种语言。我们可以将文本转换为音频文件。
  • 第三个参数代表语音的速度。我们将 slow 值设置为 false;这意味着语音将以正常速度播放。

我们将此文件保存为 exam.py,可以随时访问,然后我们使用 playsound() 函数在运行时收听音频文件。

可用语言列表

要获取可用语言,请使用以下函数 -

输出

{'af': 'Afrikaans', 'sq': 'Albanian', 'ar': 'Arabic', 'hy': 'Armenian', 'bn': 'Bengali', 'bs': 'Bosnian', 'ca': 'Catalan', 'hr': 'Croatian', 'cs': 'Czech', 'da': 'Danish', 'nl': 'Dutch', 'en': 'English', 'et': 'Estonian', 'tl': 'Filipino', 'fi': 'Finnish', 'fr': 'French', 'de': 'German', 'el': 'Greek', 'en-us': 'English (US)','gu': 'Gujarati', 'hi': 'Hindi', 'hu': 'Hungarian', 'is': 'Icelandic', 'id': 'Indonesian', 'it': 'Italian', 'ja': 'Japanese', 'en-ca': 'English (Canada)', 'jw': 'Javanese', 'kn': 'Kannada', 'km': 'Khmer', 'ko': 'Korean', 'la': 'Latin', 'lv': 'Latvian', 'mk': 'Macedonian', 'ml': 'Malayalam', 'mr', 'en-in': 'English (India)'}

我们列出了 一些重要 的语言及其代码。您可以在此库中找到几乎所有语言。

离线 API

我们使用了 Google API,但如果我们想使用离线方式将文本转换为语音呢?Python 提供了 pyttsx3 库,它会查找我们平台上预先安装的 TTS 引擎。

让我们来理解如何使用 pyttsx3 库

示例 -

在上面的代码中,我们使用了 say() 方法并将文本作为参数传递。它用于将要说的单词添加到队列中,而 runAndWait() 方法会运行实际的事件循环,直到所有排队的命令都完成。

它还提供了一些附加属性,我们可以根据需要使用。让我们获取语速的详细信息

输出

200

如果我们将其设置为 100,则速度会变慢。

现在,我们可以在各种语音中听到文本文件。

输出

[<pyttsx3.voice.Voice object at 0x000002D617F00A20>, <pyttsx3.voice.Voice object at 0x000002D617D7F898>, <pyttsx3.voice.Voice object at 0x000002D6182F8D30>]

在本教程中,我们讨论了使用第三方库将文本文件转换为语音。我们还讨论了离线库。通过使用这些,我们可以构建自己的虚拟助手。