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

📅  最后修改于: 2020-10-29 01:06:30             🧑  作者: Mango

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

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

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

该工具非常易于使用,并提供了许多内置功能,这些功能用于将文本文件另存为mp3文件。

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

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

但是,作为其最新更新,我们无法更改语音文件。它将由系统生成并且不可更改。

要将文本文件转换为文本文件,我们将使用另一个名为pyttsx3的脱机库。

安装gTTS API

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

pip install gTTS

然后,安装附加模块以使用gTTS。

pip install playsound

然后安装pyttsx3。

pip install pyttsx3

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

import gtts
from playsound import playsound

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

# make a request to google to get synthesis
t1 = gtts.gTTS("Welcome to javaTpoint")

在上一行中,我们以文本形式发送了数据并接收了实际的语音语音。现在,将此音频另存为welcome.mp3。

# save the audio file
t1.save("welcome.mp3") 

它将保存到目录中,我们可以按以下方式监听此文件:

# play the audio file
playsound("welcome.mp3")

输出:

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

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

Python程序

# Import the gTTS module for text
# to speech conversion
from gtts import gTTS

# This module is imported so that we can
# play the converted audio

from playsound import playsound

# It is a text value that we want to convert to audio
text_val = 'All the best for your exam.'

# Here are converting in English Language
language = 'en'

# Passing the text and language to the engine,
# here we have assign slow=False. Which denotes
# the module that the transformed audio should
# have a high speed
obj = gTTS(text=text_val, lang=language, slow=False)

#Here we are saving the transformed audio in a mp3 file named
# exam.mp3
obj.save("exam.mp3")

# Play the exam.mp3 file
playsound("exam.mp3")

输出:

说明:

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

  • 第一个参数是我们要转换为语音的文本值。
  • 第二个参数是指定的语言。它支持多种语言。我们可以将文本转换为音频文件。
  • 第三个参数表示讲话的速度。我们将值传递为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库:

范例-

import pyttsx3
# initialize Text-to-speech engine
engine = pyttsx3.init()
# convert this text to speech
text = "Python is a great programming language"
engine.say(text)
# play the speech
engine.runAndWait()

在上面的代码中,我们使用了say()方法并将文本作为参数传递。它用于添加一个单词来对队列讲话,而runAndWait()方法将运行真实事件循环,直到所有命令排队为止。

它还提供了一些其他属性,我们可以根据需要使用这些属性。让我们获取语音速率的详细信息:

# get details of speaking rate
rate = engine.getProperty("rate")
print(rate)

输出:

200
We can change rate of speed as we want:
# setting new voice rate (faster)
engine.setProperty("rate", 300)
engine.say(text)
engine.runAndWait()

如果我们通过100,那么它将变慢。

engine.setProperty("rate", 100)
engine.say(text)
engine.runAndWait()

现在,我们可以听到声音中的文本文件了。

# get details of all voices available
voices = engine.getProperty("voices")
print(voices)

输出:

[, , ]

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