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ù)說(shuō)pydub包需要用到。下載地址:FFmpeg,步驟如下:
此處是個(gè)解壓版本的,下載完成后,只需要將壓縮包解壓到指定目錄下,然后配置環(huán)境變量就行了。我解壓到了D盤(pán),環(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 = "媽 媽?zhuān)瑡?媽?zhuān)闳ツ睦锪耍? text = "救命啊,救命啊,老虎來(lái)了。" 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))) # 生成新的音頻對(duì)象,調(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)整音頻,通過(guò)修改semitones改變聲音音頻 audio_higher = pitch_shift(audio,semitones=6) # 調(diào)整音調(diào),通過(guò)改變音頻的播放速度來(lái)模擬音調(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} 不存在,請(qǐng)檢查路徑。")
總結(jié)
到此這篇關(guān)于python實(shí)現(xiàn)文字轉(zhuǎn)聲音的文章就介紹到這了,更多相關(guān)python文字轉(zhuǎn)聲音內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 類(lèi)屬性與實(shí)例屬性,類(lèi)對(duì)象與實(shí)例對(duì)象用法分析
這篇文章主要介紹了Python 類(lèi)屬性與實(shí)例屬性,類(lèi)對(duì)象與實(shí)例對(duì)象用法,結(jié)合實(shí)例形式分析了java類(lèi)相關(guān)的屬性、實(shí)例化、對(duì)象等相關(guān)概念與操作技巧,需要的朋友可以參考下2019-09-09Pyqt5打開(kāi)電腦攝像頭進(jìn)行拍照的實(shí)現(xiàn)示例
本文介紹了如何使用Pyqt5來(lái)控制攝像頭拍照,通過(guò)構(gòu)建一個(gè)簡(jiǎn)單的用戶界面,我們可以實(shí)現(xiàn)從攝像頭實(shí)時(shí)獲取圖像,保存圖片,感興趣的可以了解一下2023-08-0810個(gè)Python面試常問(wèn)的問(wèn)題(小結(jié))
這篇文章主要介紹了10個(gè)Python面試常問(wèn)的問(wèn)題(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Python range、enumerate和zip函數(shù)用法詳解
這篇文章主要介紹了Python range、enumerate和zip函數(shù)用法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Python3實(shí)現(xiàn)的簡(jiǎn)單驗(yàn)證碼識(shí)別功能示例
這篇文章主要介紹了Python3實(shí)現(xiàn)的簡(jiǎn)單驗(yàn)證碼識(shí)別功能,涉及Python針對(duì)驗(yàn)證碼圖片識(shí)別處理相關(guān)操作技巧,需要的朋友可以參考下2018-05-051 行 Python 代碼快速實(shí)現(xiàn) FTP 服務(wù)器
FTP 服務(wù)器,在此之前我都是使用Linux的vsftpd軟件包來(lái)搭建FTP服務(wù)器的,現(xiàn)在發(fā)現(xiàn)了利用pyftpdlib可以更加簡(jiǎn)單的方法即可實(shí)現(xiàn)FTP服務(wù)器的功能。下面小編給大家?guī)?lái)了1 行 Python 代碼快速實(shí)現(xiàn) FTP 服務(wù)器,需要的朋友參考下2018-01-01vscode寫(xiě)python時(shí)的代碼錯(cuò)誤提醒和自動(dòng)格式化的方法
這篇文章主要介紹了vscode寫(xiě)python時(shí)的代碼錯(cuò)誤提醒和自動(dòng)格式化的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05使用python采集Excel表中某一格數(shù)據(jù)
這篇文章主要介紹了使用python采集Excel表中某一格數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05