python實(shí)現(xiàn)文字轉(zhuǎn)聲音的詳細(xì)圖文教程
一、準(zhǔn)備工資
1.1、python版本
本次實(shí)驗(yàn)使用的是python3.10版本
1.2、第三方工具包
使用的三方工具包:pyttsx3、pydub,pyttsx3包將文字轉(zhuǎn)變?yōu)槁曇簦琾ydub包實(shí)現(xiàn)變聲
安裝命令:pip install pyttsx3 pydub
1.3、其它工具
需要安裝的工具:ffmpeg,據(jù)說pydub包需要用到。下載地址:FFmpeg,步驟如下:



此處是個(gè)解壓版本的,下載完成后,只需要將壓縮包解壓到指定目錄下,然后配置環(huán)境變量就行了。我解壓到了D盤,環(huán)境變量配置如下:

二、代碼實(shí)現(xiàn)
2.1、文字轉(zhuǎn)聲音
import pyttsx3
from pydub import AudioSegment
from pydub.effects import speedup
import os
def text_to_speech_save_as_mp3(text, mp3_filename):
# 初始化 pyttsx3 引擎
engine = pyttsx3.init()
# 創(chuàng)建一個(gè)臨時(shí) WAV 文件
wav_filename = "temp.wav"
engine.save_to_file(text, wav_filename)
engine.runAndWait()
# 將 WAV 文件轉(zhuǎn)換為 MP3
audio = AudioSegment.from_wav(wav_filename)
audio.export(mp3_filename, format="mp3")
# 刪除臨時(shí) WAV 文件
import os
os.remove(wav_filename)
# 示例用法
# text = "媽 媽,媽 媽,你去哪里了?"
text = "救命啊,救命啊,老虎來了。"
mp3_filename = "output.mp3"
text_to_speech_save_as_mp3(text, mp3_filename)2.2、變聲
def pitch_shift(audio, semitones):
# 計(jì)算新的采樣率
new_sample_rate = int(audio.frame_rate * (2.0 ** (semitones / 12.0)))
# 生成新的音頻對象,調(diào)整采樣率以改變音調(diào)
return audio._spawn(audio.raw_data, overrides={'frame_rate': new_sample_rate}).set_frame_rate(audio.frame_rate)
def change_pitch(input_file, output_file, pitch_factor=1.6):
# 加載音頻文件
audio = AudioSegment.from_file(input_file)
# 調(diào)整音頻,通過修改semitones改變聲音音頻
audio_higher = pitch_shift(audio,semitones=6)
# 調(diào)整音調(diào),通過改變音頻的播放速度來模擬音調(diào)變化
new_audio = speedup(audio_higher, playback_speed=pitch_factor)
# 保存修改后的音頻文件
new_audio.export(output_file, format="mp3")2.3、調(diào)用main函數(shù)
if __name__ == "__main__":
input_file = "output.mp3" # 替換為你的輸入音頻文件路徑
output_file = "output_audio.mp3" # 輸出音頻文件路徑
if os.path.exists(input_file):
change_pitch(input_file, output_file)
print(f"音頻處理完成,輸出文件: {output_file}")
else:
print(f"輸入文件 {input_file} 不存在,請檢查路徑。")總結(jié)
到此這篇關(guān)于python實(shí)現(xiàn)文字轉(zhuǎn)聲音的文章就介紹到這了,更多相關(guān)python文字轉(zhuǎn)聲音內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3整數(shù)反轉(zhuǎn)的實(shí)現(xiàn)方法
這篇文章主要介紹了python3整數(shù)反轉(zhuǎn)的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
Python基于opencv調(diào)用攝像頭獲取個(gè)人圖片的實(shí)現(xiàn)方法
今天小編就為大家分享一篇關(guān)于Python基于opencv調(diào)用攝像頭獲取個(gè)人圖片的實(shí)現(xiàn)方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02
Python實(shí)現(xiàn)文件信息進(jìn)行合并實(shí)例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)文件信息進(jìn)行合并實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Python編寫一個(gè)圖片自動(dòng)播放工具(過程詳解)
使用Python和Pygame庫,可以編寫一個(gè)圖片自動(dòng)播放工具,實(shí)現(xiàn)圖片的加載、自動(dòng)循環(huán)播放及用戶交互功能,工具支持暫停、繼續(xù)、手動(dòng)切換圖片和調(diào)整播放速度,適合在電腦上方便地瀏覽和展示圖片,感興趣的朋友跟隨小編一起看看吧2024-09-09
python pygame實(shí)現(xiàn)滾動(dòng)橫版射擊游戲城市之戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了python pygame實(shí)現(xiàn)滾動(dòng)橫版射擊游戲城市之戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11

