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