python使用gTTS实现文本转语音功能

 更新时间:2024年03月24日 08:44:42   作者:代码刺客  
gTTS(Google Text-to-Speech), 这个库是Google的Text-to-Speech API的一个接口,提供了一种简单的方式来生成听起来自然的语言,下面我们就来看看如何使用gTTS实现文本转语音功能吧

首先,安装python第三方库: pip install gTTS

gTTS(Google Text-to-Speech), 这个库是Google的Text-to-Speech API的一个接口,提供了一种简单的方式来生成听起来自然的语言,gTTS支持多种语言和方言,使得它能够广泛用于多语言应用程序中。

# 导入gTTS库, 用于文本到语音的转换
from gtts import gTTS
import os


# 定义文本到语音转换的函数
def text_to_speech(text, lang='zh-cn'): # 默认设置为中文语言
    # 使用gTTS创建语音对象,需要传入文本和语言代码
    tts = gTTS(text=text, lang=lang)
    # 定义保存语音文件的文件名,这里保存在当前目录下
    filename = 'speech.mp3'
    # 保存语音文件
    tts.save(filename)
    # 返回保存的文件名,以便后续使用
    return filename


# 示例文本,这里是一段中文文本
text = "大家好,我是一个程序员"
# 调用text_to_speech函数,将文本转换为语音,并指定使用中文
filename = text_to_speech(text, 'zh-cn')
# 打印出保存的文件路径,确认文件已经生成
print(f"Generated speech saved to {filename}")
os.system("start speech.mp3")

将所需要转换的所有文本写入text.txt文件中,并放在当前文件目录下,使用gTTS转换成语音:

# 导入gTTS库
from gtts import gTTS
import os

# 要转换的文本

with open("text.txt", "r") as f:
    text = f.read()
# 创建gTTS对象,指定文本和语言
tts = gTTS(text, lang='zh')

# 保存为音频文件
tts.save("output.mp3")

# 播放音频文件
os.system("start output.mp3")

遇到的一些问题:

gtts.tts.gTTSError: Failed to connect. Probable cause: Unknown

报错解释:

gtts.tts.gTTSError: Failed to connect. Probable cause: Unknown 这个错误来自 gTTS 库,这通常表示在尝试连接到一个服务(例如文本转语音服务)时失败了。具体原因未知,可能是网络问题、服务不可用、错误的服务地址或其他未知原因。

解决方法:

  • 检查网络连接:确保你的设备可以正常访问互联网。
  • 服务状态:检查相关的在线文本转语音服务是否正常运行,比如 Google 的文本转语音服务。
  • 更新库:确保你的 gTTS 库是最新版本,可以通过pip进行更新。
  • 代理设置:如果你在使用代理,确保代理设置正确。
  • 服务地址:检查 gTTS 库是否使用了正确的服务地址。

分析一下最有可能是网络问题导致的,可以多试几次。

方法补充

除了上文的方法,小编还为大家整理了其他Python实现文本转语音功能的模块与方法,希望对大家有所帮助

1.pyttsx3模块

参考文档:https://pyttsx3.readthedocs.io/en/latest/

优势:

1、完全脱机文本到语音转换,可以在系统中安装的不同语音中进行选择;

2、控制语音的速度/速率,调整音量;

3、将语音音频另存为文件;

4、简单、强大、直观的API。

使用前需要先安装:pip3 install pyttsx3

基本使用

import pyttsx3
engine = pyttsx3.init()
engine.say("I will speak this text")
engine.runAndWait()

直接朗读

import pyttsx3
pyttsx3.speak("I will speak this text")

更改语音、速率和音量

import pyttsx3
engine = pyttsx3.init() # object creation

""" RATE"""
rate = engine.getProperty('rate')   # getting details of current speaking rate
print (rate)                        #printing current voice rate
engine.setProperty('rate', 125)     # setting up new voice rate


"""VOLUME"""
volume = engine.getProperty('volume')   #getting to know current volume level (min=0 and max=1)
print (volume)                          #printing current volume level
engine.setProperty('volume',1.0)    # setting up volume level  between 0 and 1

"""VOICE"""
voices = engine.getProperty('voices')       #getting details of current voice
#engine.setProperty('voice', voices[0].id)  #changing index, changes voices. o for male
engine.setProperty('voice', voices[1].id)   #changing index, changes voices. 1 for female

engine.say("Hello World!")
engine.say('My current speaking rate is ' + str(rate))
engine.runAndWait()
engine.stop()


"""Saving Voice to a file"""
# On linux make sure that 'espeak' and 'ffmpeg' are installed
engine.save_to_file('Hello World', 'test.mp3')
engine.runAndWait()

2.baidu-aip

通过在百度开放开发者平台申请语音合成账号来生成音频文件。样例如下:

# 下载baidu-aip模块并导入
from aip import AipSpeech
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) #配置百度语音客户端res=client.synthesis(text,lang,1,options={
spd:语速,取值0-9,默认为5中语速,
pit:音调,取值0-9,默认为5中语调,
vol:音量,取值0-15,默认为5中音量,
per:发音人选择, 0为女声,1为男声, 3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女})  
#配置个性化语音
with open('XX.mp3','wb') as f:  #打开文件流
    f.write(res)    #写入文件

3. pywin32

操作window dll的库,它可以实现很多功能,十分强大。不过经测试,对中文支持不太友好。

需要先安装:pip install pywin32

# -*- encoding: utf-8 -*-
from win32com import client

# 配置客户端接口
speaker = client.Dispatch("SAPI.SpVoice")

speaker.Speak("hello")

4. speech

也是一款强大的语音模块,依赖于pywin32,而且它最适合做语音启动程序了。

下载并导入:pip install speech

import speech
# 生成音频:
speech.say('hello')

到此这篇关于python使用gTTS实现文本转语音功能的文章就介绍到这了,更多相关python gTTS文本转语音内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用Tensorflow将自己的数据分割成batch训练实例

    使用Tensorflow将自己的数据分割成batch训练实例

    今天小编就为大家分享一篇使用Tensorflow将自己的数据分割成batch训练实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • selenium+python环境配置教程详解

    selenium+python环境配置教程详解

    这篇文章主要介绍了selenium+python环境配置教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Python数据库入门从零掌握SQL核心操作

    Python数据库入门从零掌握SQL核心操作

    这篇文章详细介绍了数据库的基本概念、分类、核心组件以及SQL语言的基础知识,包括DDL、DML、DQL和DCL等操作,同时,还提供了MySQL的具体操作示例和数据类型、约束等详细信息,感兴趣的朋友跟随小编一起看看吧
    2025-12-12
  • python实现简易自习室座位预约系统

    python实现简易自习室座位预约系统

    本文将结合实例代码,介绍python实现简易自习室座位预约系统,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-06-06
  • Python中摘要算法MD5,SHA1简介及应用实例代码

    Python中摘要算法MD5,SHA1简介及应用实例代码

    这篇文章主要介绍了Python中摘要算法MD5,SHA1简介及应用实例代码,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • 基于Python实现网络流量监控的方法详解

    基于Python实现网络流量监控的方法详解

    本文主要介绍了一种使用Python和psutil库在KaliLinux环境下监控网络流量的方法,包括接收速率、发送速率、吞吐量和丢包率的计算,旨在提升网络性能和稳定性,通过实时监控并根据结果进行调整,确保网络高效运行,希望对大家有所帮助
    2026-04-04
  • 对变量赋值的理解--Pyton中让两个值互换的实现方法

    对变量赋值的理解--Pyton中让两个值互换的实现方法

    下面小编就为大家分享一篇Pyton中让两个值互换的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-11-11
  • pytorch DataLoader的num_workers参数与设置大小详解

    pytorch DataLoader的num_workers参数与设置大小详解

    这篇文章主要介绍了pytorch DataLoader的num_workers参数与设置大小详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • python中的断言(assert语句)

    python中的断言(assert语句)

    这篇文章主要介绍了python中的断言(assert语句),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • python  asyncio常规操作记录

    python  asyncio常规操作记录

    本文介绍了Python asyncio的核心并发机制和API,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2026-03-03

最新评论