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

有时候,我们更喜欢听内容而不是阅读。我们可以在听关键文件数据的同时进行多任务处理。Python提供了许多API来将文本转换为语音。Google文本转语音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 javatiku") 

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

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

它将保存在一个目录中,我们可以在运行时听取这个文件:

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

输出:

122-1.png

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

现在,我们将定义完整的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")  

输出:

122-2.png

解释:

在上面的代码中,我们导入了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库:

示例 -

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)  

输出:

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

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

标签: Tkinter教程, Tkinter安装, Tkinter库, Tkinter入门, Tkinter学习, Tkinter入门教程, Tkinter, Tkinter进阶, Tkinter指南, Tkinter学习指南, Tkinter进阶教程, Tkinter编程