python使用gTTS實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音功能
首先,安裝python第三方庫(kù): pip install gTTS
gTTS(Google Text-to-Speech), 這個(gè)庫(kù)是Google的Text-to-Speech API的一個(gè)接口,提供了一種簡(jiǎn)單的方式來(lái)生成聽(tīng)起來(lái)自然的語(yǔ)言,gTTS支持多種語(yǔ)言和方言,使得它能夠廣泛用于多語(yǔ)言應(yīng)用程序中。
# 導(dǎo)入gTTS庫(kù), 用于文本到語(yǔ)音的轉(zhuǎn)換 from gtts import gTTS import os # 定義文本到語(yǔ)音轉(zhuǎn)換的函數(shù) def text_to_speech(text, lang='zh-cn'): # 默認(rèn)設(shè)置為中文語(yǔ)言 # 使用gTTS創(chuàng)建語(yǔ)音對(duì)象,需要傳入文本和語(yǔ)言代碼 tts = gTTS(text=text, lang=lang) # 定義保存語(yǔ)音文件的文件名,這里保存在當(dāng)前目錄下 filename = 'speech.mp3' # 保存語(yǔ)音文件 tts.save(filename) # 返回保存的文件名,以便后續(xù)使用 return filename # 示例文本,這里是一段中文文本 text = "大家好,我是一個(gè)程序員" # 調(diào)用text_to_speech函數(shù),將文本轉(zhuǎn)換為語(yǔ)音,并指定使用中文 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)換的所有文本寫(xiě)入text.txt文件中,并放在當(dāng)前文件目錄下,使用gTTS轉(zhuǎn)換成語(yǔ)音:
# 導(dǎo)入gTTS庫(kù) from gtts import gTTS import os # 要轉(zhuǎn)換的文本 with open("text.txt", "r") as f: text = f.read() # 創(chuàng)建gTTS對(duì)象,指定文本和語(yǔ)言 tts = gTTS(text, lang='zh') # 保存為音頻文件 tts.save("output.mp3") # 播放音頻文件 os.system("start output.mp3")
遇到的一些問(wèn)題:
gtts.tts.gTTSError: Failed to connect. Probable cause: Unknown
報(bào)錯(cuò)解釋:
gtts.tts.gTTSError: Failed to connect. Probable cause: Unknown
這個(gè)錯(cuò)誤來(lái)自 gTTS
庫(kù),這通常表示在嘗試連接到一個(gè)服務(wù)(例如文本轉(zhuǎn)語(yǔ)音服務(wù))時(shí)失敗了。具體原因未知,可能是網(wǎng)絡(luò)問(wèn)題、服務(wù)不可用、錯(cuò)誤的服務(wù)地址或其他未知原因。
解決方法:
- 檢查網(wǎng)絡(luò)連接:確保你的設(shè)備可以正常訪問(wèn)互聯(lián)網(wǎng)。
- 服務(wù)狀態(tài):檢查相關(guān)的在線文本轉(zhuǎn)語(yǔ)音服務(wù)是否正常運(yùn)行,比如 Google 的文本轉(zhuǎn)語(yǔ)音服務(wù)。
- 更新庫(kù):確保你的
gTTS
庫(kù)是最新版本,可以通過(guò)pip進(jìn)行更新。 - 代理設(shè)置:如果你在使用代理,確保代理設(shè)置正確。
- 服務(wù)地址:檢查
gTTS
庫(kù)是否使用了正確的服務(wù)地址。
分析一下最有可能是網(wǎng)絡(luò)問(wèn)題導(dǎo)致的,可以多試幾次。
方法補(bǔ)充
除了上文的方法,小編還為大家整理了其他Python實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音功能的模塊與方法,希望對(duì)大家有所幫助
1.pyttsx3模塊
參考文檔:https://pyttsx3.readthedocs.io/en/latest/
優(yōu)勢(shì):
1、完全脫機(jī)文本到語(yǔ)音轉(zhuǎn)換,可以在系統(tǒng)中安裝的不同語(yǔ)音中進(jìn)行選擇;
2、控制語(yǔ)音的速度/速率,調(diào)整音量;
3、將語(yǔ)音音頻另存為文件;
4、簡(jiǎn)單、強(qiáng)大、直觀的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")
更改語(yǔ)音、速率和音量
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
通過(guò)在百度開(kāi)放開(kāi)發(fā)者平臺(tái)申請(qǐng)語(yǔ)音合成賬號(hào)來(lái)生成音頻文件。樣例如下:
# 下載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) #配置百度語(yǔ)音客戶端res=client.synthesis(text,lang,1,options={ spd:語(yǔ)速,取值0-9,默認(rèn)為5中語(yǔ)速, pit:音調(diào),取值0-9,默認(rèn)為5中語(yǔ)調(diào), vol:音量,取值0-15,默認(rèn)為5中音量, per:發(fā)音人選擇, 0為女聲,1為男聲, 3為情感合成-度逍遙,4為情感合成-度丫丫,默認(rèn)為普通女}) #配置個(gè)性化語(yǔ)音 with open('XX.mp3','wb') as f: #打開(kāi)文件流 f.write(res) #寫(xiě)入文件
3. pywin32
操作window dll的庫(kù),它可以實(shí)現(xiàn)很多功能,十分強(qiáng)大。不過(guò)經(jīng)測(cè)試,對(duì)中文支持不太友好。
需要先安裝:pip install pywin32
# -*- encoding: utf-8 -*- from win32com import client # 配置客戶端接口 speaker = client.Dispatch("SAPI.SpVoice") speaker.Speak("hello")
4. speech
也是一款強(qiáng)大的語(yǔ)音模塊,依賴于pywin32,而且它最適合做語(yǔ)音啟動(dòng)程序了。
下載并導(dǎo)入:pip install speech
import speech # 生成音頻: speech.say('hello')
到此這篇關(guān)于python使用gTTS實(shí)現(xiàn)文本轉(zhuǎn)語(yǔ)音功能的文章就介紹到這了,更多相關(guān)python gTTS文本轉(zhuǎn)語(yǔ)音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python實(shí)現(xiàn)簡(jiǎn)單圖像縮放與旋轉(zhuǎn)
大家好,本篇文章主要講的是Python實(shí)現(xiàn)簡(jiǎn)單圖像縮放與旋轉(zhuǎn),感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01使用Anaconda創(chuàng)建Python指定版本的虛擬環(huán)境的教程詳解
由于工作的需要和學(xué)習(xí)的需要,需要?jiǎng)?chuàng)建不同Python版本的虛擬環(huán)境,所以這篇文章主要為大家詳細(xì)介紹了如何使用Anaconda創(chuàng)建Python指定版本的虛擬環(huán)境,需要的可以參考下2024-03-03解決import tensorflow導(dǎo)致jupyter內(nèi)核死亡的問(wèn)題
這篇文章主要介紹了解決import tensorflow導(dǎo)致jupyter內(nèi)核死亡的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-02-02python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù)(流程分析)
這篇文章主要介紹了python基于OpenCV模塊實(shí)現(xiàn)視頻流數(shù)據(jù)切割為圖像幀數(shù)據(jù),這里今天主要是實(shí)踐一下視頻流數(shù)據(jù)的預(yù)處理工作,需要的朋友可以參考下2022-05-05Python運(yùn)算符的應(yīng)用超全面詳細(xì)教程
Python運(yùn)算符是為了實(shí)現(xiàn)數(shù)值或字符運(yùn)算的特殊符號(hào)。Python運(yùn)算符可以分為算術(shù)運(yùn)算符、邏輯運(yùn)算符、賦值運(yùn)算符、成員運(yùn)算符、身份運(yùn)算符、比較運(yùn)算符、三目運(yùn)算符等。接下來(lái),我們就開(kāi)始來(lái)學(xué)習(xí)這一堆符號(hào)吧2022-07-07