脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - Python - python使用gTTS实现文本转语音功能

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

2024-03-27 10:23代码刺客 Python

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文本转语音内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7349094068843397129

延伸 · 阅读

精彩推荐
  • Pythonpython实现简单日期工具类

    python实现简单日期工具类

    这篇文章主要为大家详细介绍了python实现简单日期工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    褚金辉7042021-06-19
  • PythonPython+opencv 实现图片文字的分割的方法示例

    Python+opencv 实现图片文字的分割的方法示例

    这篇文章主要介绍了Python+opencv 实现图片文字的分割的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需...

    坏小孩909812021-08-01
  • PythonPython实现随机选择元素功能

    Python实现随机选择元素功能

    这篇文章主要为大家详细介绍了Python实现随机选择元素功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Lockeyi5132020-12-08
  • Python十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)

    十个Python练手的实战项目,学会这些Python就基本没问题了(推荐

    这篇文章主要介绍了Python实战项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一...

    燕大侠v6062021-06-20
  • PythonPython2与Python3的区别实例总结

    Python2与Python3的区别实例总结

    这篇文章主要介绍了Python2与Python3的区别,结合实例形式总结分析了Python2与Python3打印输出、编码、数值运算、异常处理等使用区别,需要的朋友可以参考下...

    Zhihua_W9242021-06-18
  • PythonPython实现的简单模板引擎功能示例

    Python实现的简单模板引擎功能示例

    这篇文章主要介绍了Python实现的简单模板引擎功能,结合具体实例形式分析了Python模版引擎的定义与使用方法,需要的朋友可以参考下...

    m1904811643792020-12-05
  • Pythonpython扫描proxy并获取可用代理ip的实例

    python扫描proxy并获取可用代理ip的实例

    下面小编就为大家带来一篇python扫描proxy并获取可用代理ip的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Python教程网5812020-11-30
  • Pythonpython3.7通过thrift操作hbase的示例代码

    python3.7通过thrift操作hbase的示例代码

    HBase是一个分布式的、面向列的开源数据库,其是Apache的Hadoop项目的子项目。这篇文章主要介绍了python3.7通过thrift操作hbase的示例代码,需要的朋友可以参考...

    CPP.LA6362020-04-25