python使用gTTS實現(xiàn)文本轉(zhuǎn)語音功能
首先,安裝python第三方庫: pip install gTTS
gTTS(Google Text-to-Speech), 這個庫是Google的Text-to-Speech API的一個接口,提供了一種簡單的方式來生成聽起來自然的語言,gTTS支持多種語言和方言,使得它能夠廣泛用于多語言應(yīng)用程序中。
# 導(dǎo)入gTTS庫, 用于文本到語音的轉(zhuǎn)換
from gtts import gTTS
import os
# 定義文本到語音轉(zhuǎn)換的函數(shù)
def text_to_speech(text, lang='zh-cn'): # 默認(rèn)設(shè)置為中文語言
# 使用gTTS創(chuàng)建語音對象,需要傳入文本和語言代碼
tts = gTTS(text=text, lang=lang)
# 定義保存語音文件的文件名,這里保存在當(dāng)前目錄下
filename = 'speech.mp3'
# 保存語音文件
tts.save(filename)
# 返回保存的文件名,以便后續(xù)使用
return filename
# 示例文本,這里是一段中文文本
text = "大家好,我是一個程序員"
# 調(diào)用text_to_speech函數(shù),將文本轉(zhuǎn)換為語音,并指定使用中文
filename = text_to_speech(text, 'zh-cn')
# 打印出保存的文件路徑,確認(rèn)文件已經(jīng)生成
print(f"Generated speech saved to {filename}")
os.system("start speech.mp3")
將所需要轉(zhuǎn)換的所有文本寫入text.txt文件中,并放在當(dāng)前文件目錄下,使用gTTS轉(zhuǎn)換成語音:
# 導(dǎo)入gTTS庫
from gtts import gTTS
import os
# 要轉(zhuǎn)換的文本
with open("text.txt", "r") as f:
text = f.read()
# 創(chuàng)建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 庫,這通常表示在嘗試連接到一個服務(wù)(例如文本轉(zhuǎn)語音服務(wù))時失敗了。具體原因未知,可能是網(wǎng)絡(luò)問題、服務(wù)不可用、錯誤的服務(wù)地址或其他未知原因。
解決方法:
- 檢查網(wǎng)絡(luò)連接:確保你的設(shè)備可以正常訪問互聯(lián)網(wǎng)。
- 服務(wù)狀態(tài):檢查相關(guān)的在線文本轉(zhuǎn)語音服務(wù)是否正常運行,比如 Google 的文本轉(zhuǎn)語音服務(wù)。
- 更新庫:確保你的
gTTS庫是最新版本,可以通過pip進(jìn)行更新。 - 代理設(shè)置:如果你在使用代理,確保代理設(shè)置正確。
- 服務(wù)地址:檢查
gTTS庫是否使用了正確的服務(wù)地址。
分析一下最有可能是網(wǎng)絡(luò)問題導(dǎo)致的,可以多試幾次。
方法補充
除了上文的方法,小編還為大家整理了其他Python實現(xiàn)文本轉(zhuǎn)語音功能的模塊與方法,希望對大家有所幫助
1.pyttsx3模塊
參考文檔:https://pyttsx3.readthedocs.io/en/latest/
優(yōu)勢:
1、完全脫機文本到語音轉(zhuǎn)換,可以在系統(tǒng)中安裝的不同語音中進(jìn)行選擇;
2、控制語音的速度/速率,調(diào)整音量;
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
通過在百度開放開發(fā)者平臺申請語音合成賬號來生成音頻文件。樣例如下:
# 下載baidu-aip模塊并導(dǎo)入
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,默認(rèn)為5中語速,
pit:音調(diào),取值0-9,默認(rèn)為5中語調(diào),
vol:音量,取值0-15,默認(rèn)為5中音量,
per:發(fā)音人選擇, 0為女聲,1為男聲, 3為情感合成-度逍遙,4為情感合成-度丫丫,默認(rèn)為普通女})
#配置個性化語音
with open('XX.mp3','wb') as f: #打開文件流
f.write(res) #寫入文件
3. pywin32
操作window dll的庫,它可以實現(xiàn)很多功能,十分強大。不過經(jīng)測試,對中文支持不太友好。
需要先安裝:pip install pywin32
# -*- encoding: utf-8 -*-
from win32com import client
# 配置客戶端接口
speaker = client.Dispatch("SAPI.SpVoice")
speaker.Speak("hello")
4. speech
也是一款強大的語音模塊,依賴于pywin32,而且它最適合做語音啟動程序了。
下載并導(dǎo)入:pip install speech
import speech
# 生成音頻:
speech.say('hello')到此這篇關(guān)于python使用gTTS實現(xiàn)文本轉(zhuǎn)語音功能的文章就介紹到這了,更多相關(guān)python gTTS文本轉(zhuǎn)語音內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用Tensorflow將自己的數(shù)據(jù)分割成batch訓(xùn)練實例
今天小編就為大家分享一篇使用Tensorflow將自己的數(shù)據(jù)分割成batch訓(xùn)練實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python數(shù)據(jù)庫入門從零掌握SQL核心操作
這篇文章詳細(xì)介紹了數(shù)據(jù)庫的基本概念、分類、核心組件以及SQL語言的基礎(chǔ)知識,包括DDL、DML、DQL和DCL等操作,同時,還提供了MySQL的具體操作示例和數(shù)據(jù)類型、約束等詳細(xì)信息,感興趣的朋友跟隨小編一起看看吧2025-12-12
python實現(xiàn)簡易自習(xí)室座位預(yù)約系統(tǒng)
本文將結(jié)合實例代碼,介紹python實現(xiàn)簡易自習(xí)室座位預(yù)約系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
Python中摘要算法MD5,SHA1簡介及應(yīng)用實例代碼
這篇文章主要介紹了Python中摘要算法MD5,SHA1簡介及應(yīng)用實例代碼,具有一定借鑒價值,需要的朋友可以參考下2018-01-01
基于Python實現(xiàn)網(wǎng)絡(luò)流量監(jiān)控的方法詳解
本文主要介紹了一種使用Python和psutil庫在KaliLinux環(huán)境下監(jiān)控網(wǎng)絡(luò)流量的方法,包括接收速率、發(fā)送速率、吞吐量和丟包率的計算,旨在提升網(wǎng)絡(luò)性能和穩(wěn)定性,通過實時監(jiān)控并根據(jù)結(jié)果進(jìn)行調(diào)整,確保網(wǎng)絡(luò)高效運行,希望對大家有所幫助2026-04-04
對變量賦值的理解--Pyton中讓兩個值互換的實現(xiàn)方法
下面小編就為大家分享一篇Pyton中讓兩個值互換的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11
pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解
這篇文章主要介紹了pytorch DataLoader的num_workers參數(shù)與設(shè)置大小詳解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05

