Python實現(xiàn)朗讀在線音頻和本地音頻
在日常的Python軟件開發(fā)中,我們經常會遇到一個非常重要的功能需求——讓程序能夠讀取并顯示文本內容。那么,如何實現(xiàn)這一功能呢?本文將提供幾種方法供大家參考,其中第二種方法是最推薦的。
一、pyttsx3法
采用這個第三方模塊,可以實現(xiàn)python軟件朗讀文本。
首先,需要在cmd下安裝這個模塊:
pip install pyttsx3
然后,就可以通過初始化發(fā)聲引擎,然后定義引擎的聲音大小、語速。
engine = pyttsx3.init() #設置語速 rate = engine.getProperty('rate') engine.setProperty('rate', rate - 50) # 設置發(fā)音大小,范圍為0.0-1.0 volume = engine.getProperty('volume') engine.setProperty('volume', 1.2) # 設置默認的聲音:voices[0].id代表男生,voices[1].id代表女生 voices = engine.getProperty('voices') engine.setProperty('voice', voices[1].id)
設置完成之后,們可以定義一個函數(shù),當需要調用這個模型進行發(fā)聲時,就可以調用這個函數(shù)。
def show_sound(text): engine.say(text)#朗讀當前內容 engine.runAndWait() #朗讀直到結束 engine.stop() #停止引擎
上面的示例中,你需要把text換成你要讀取的內容就可以了。
這種方法調用的引擎聲音大小可以調,但是音質一般,有點兒僵化,需要我們采用更為好的音頻才可以。
二、轉化為語音流的方法
之前,我的思路是,把單詞的音頻下載到本地,然后再調用。這種方法的優(yōu)點時音質好,缺點是需要一定的下載時間,有時我們需要即時的調用,就顯得不太方便,因此我就想先通過requests獲取這個音頻,然后轉化為語音流,再用pygame讀出來,經過與chatgpt對話,發(fā)現(xiàn)我這種方法果然有效。
使用這種方法需要安裝requests和pygame兩個第三方模型。
pip install requests, pygame
其中pygame的個頭較大,如果可以的話用鏡像下載速度會更快一些。比如:
pip install pygame -i https://mirrors.aliyun.com/pypi/simple/
安裝完后,我們導入模型,初始化pygame, 定義函數(shù)。
import requests import pygame from io import BytesIO pygame.init() #初始化pygame def show_sound(text): audio_path = f"https://dict.youdao.com/dictvoice?audio={text}&type=1" #獲取音頻地址 resp = requests.get(audio_path) #獲取二進制數(shù)據(jù) audio_data = BytesIO(resp.content) #轉化為音頻流 pygame.mixer.music.load(audio_data) #加載音頻流 pygame.mixer.music.play() #播放音頻 while pygame.mixer.music.get_busy(): #確保完全讀完,不間斷 continue
上面的示例中,你需要把text換成你要讀取的內容就可以了。
三、讀取本地mp3法
讀取本地mp3這種方法比較穩(wěn)妥,適用于沒有網絡情況下也能朗讀的情況,但是本地得用對應的語音庫才可以。我們可以使用pygame和pydub這兩個模型分別來實現(xiàn)。
1. pygame法
這種方法和第二種方法差不多,只不過不用獲取網絡的音頻了,直接讀取本地音頻就可以了。
import pygame def play_mp3(file_path): pygame.mixer.init() pygame.mixer.music.load(file_path) pygame.mixer.music.play() if __name__ == "__main__": mp3_file = "your_file_path.mp3" # 替換為你的MP3文件路徑 play_mp3(mp3_file)
在上面示例中,你需要將your_file_path.mp3替換為你本地MP3文件的路徑。然后運行該腳本,它將會播放指定的MP3文件。
2. pydub法
pydub可能會比pygame個頭小一點兒,打包時更省力,以下給出一個樣例代碼,供大家參考。
首先還是需要安裝pygdub這個第三方模塊:
pip install pydub
然后,利用下面的代碼:
from pydub import AudioSegment from pydub.playback import play def play_mp3(file_path): sound = AudioSegment.from_mp3(file_path) play(sound) if __name__ == "__main__": mp3_file = "your_file_path.mp3" # 替換為你的MP3文件路徑 play_mp3(mp3_file)
在上面的示例中,你需要將your_file_path.mp3替換為你本地MP3文件的路徑。然后運行該腳本,它將會播放指定的MP3文件。
四、學后反思
學習Python要掌握使用chatgpt等人工智能技術,有好的想法就多向它請教,爭取能夠找到更優(yōu)的方案。
優(yōu)質的音頻可以通過在線字典獲取,只要知道它的下載地址就可以通過requests來獲取。
到此這篇關于Python實現(xiàn)朗讀在線音頻和本地音頻的文章就介紹到這了,更多相關Python朗讀音頻內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python循環(huán)控制之break和continue流程控制語句
這篇文章主要介紹了python循環(huán)控制之break流程控制語句,Python中提供了兩個關鍵字用來控制循環(huán)語句,分別是break和continue,本文都有介紹,需要的朋友可以參考一下2022-03-03pandas中fillna()函數(shù)填充NaN和None的實現(xiàn)
本文主要介紹了pandas中fillna()函數(shù)填充NaN和None的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01