Python 将英语单词列表,转换为听写使用的MP3格式(每个单词朗读两遍)
點此跳轉至?本文代碼下載
1. 首先要安裝一個包 pydub,使用最流行的方式 pip 即可。
在此之后引用其中的 AudioSegment 模塊,此外為了生成的文件名是當前的時間戳,因此導入了 datetime 包。
AudioSegment 模塊封裝了各種操作,可以較為便捷的操作MP3或者其他類型音頻(pydub支持很多常見的音頻格式)。
2. 其中一些基本操作如下:
讀入MP3:mp3_1 = AudioSegment.from_mp3("C:\\my_mp3\\mp3_1.mp3")? # 將括號內修改為你要讀入的MP3文件路徑?
讀入MP3:mp3_2 = AudioSegment.from_mp3("C:\\my_mp3\\mp3_2.mp3")? # 將括號內修改為你要讀入的MP3文件路徑?
拼接兩段MP3:mp3 = mp3_1 + mp3_2? # 直接使用加號就可以拼接
輸出為MP3格式:output_music.export("C:\\my_mp3\\output.mp3", format="mp3")? # 將雙引號內修改為要輸出的文件路徑
3. 我們把上述操作封裝為一個拼接函數如下所示:?
import osfrom pydub import AudioSegment # 先導入這個模塊 import datetimedef pinjie(mp3_path_list, out_div):out_name = datetime.datetime.now().strftime('[%Y-%m-%d]%H-%M-%S.mp3')output_music = Nonefirst = Truefor mp3_path in mp3_path_list:if first:first = Falseinput_music_1 = AudioSegment.from_mp3(mp3_path) output_music = input_music_1else:input_music_1 = AudioSegment.from_mp3(mp3_path)output_music += input_music_1 # 打開音頻后,直接使用+運算符就可以將兩段拼接在一起output_music.export(out_div + "\\" + out_name, format="mp3") # 輸出合并之后的音頻print(len(output_music), output_music.channels) # 打印一下合并后音頻的信息4. 緊接著需要創建一個有道詞典類,專門下載有道詞典的讀音文件(MP3格式)
這個類太長了,我放在另外一篇博客中寫吧,主要功能就是下載音頻,分為下載美音和英音兩種。
這是我的有道詞典類。
這個類是在另外一篇博客的基礎上只做了微小的改動,點擊此處鏈接到最初的博客,在此感謝這個博主。
5. 將 download 單獨封裝為一個包(文件)
from youdao import youdao as ydtrans = {"英音": 1, "美音": 0, "英美": 3}def download(pronunciation, word_list):sp = yd()if trans[pronunciation] == 0 or trans[pronunciation] == 3: # 獲取美音print("獲取列表單詞的美音音頻: ", word_list)sp.setAccent(0)for one_word in word_list:sp.down(one_word)if trans[pronunciation] == 1 or trans[pronunciation] == 3: # 獲取英音print("獲取列表單詞的英音音頻: ", word_list)sp.setAccent(1)for one_word in word_list:sp.down(one_word)6. 找一些空白音頻來作為時間間隔(這個會在我上傳的代碼中帶有)
__5.mp3 為0.5秒的空白音頻
_1.mp3 為1秒的空白音頻
_2.mp3 為2秒的空白音頻
_3.mp3 為3秒的空白音頻
7. 準備工作到此結束,然后寫下主要代碼:
import datetimefrom download import download as dl import os from pinjieMP3 import pinjie from random import shufflef = open('C:/mine/my_word_list.txt') # 此處是單詞列表,使用換行作為單詞與單詞之間的間隔 word_list = f.readlines() word_list = [word.replace("\n", "") for word in word_list]f.close()dl("英音", word_list) # 在此處修改英音還是美音 type = 1 # 0為美音,1為英音 # 在此處也要修改英音還是美音d_word_list = []# 將單詞列表隨機打亂,注釋掉這一行就是按照輸入順序進行生成的 shuffle(word_list)d_word_list.append("_2") d_word_list.append("_2")for word in word_list:d_word_list.append(word)d_word_list.append("_2")d_word_list.append(word)d_word_list.append("_2")d_word_list.append("_2")mp3_file_path_list = [] dirRoot = os.path.dirname(os.path.abspath(__file__))out_put_div = os.path.join(dirRoot, "output")# 輸出打亂后的列表 out_name = datetime.datetime.now().strftime('[%Y-%m-%d]%H-%M-%S.txt') f = open(out_put_div + '\\' + out_name, "w") f.writelines([word+"\n" for word in word_list]) f.close()for word in d_word_list:word = word.lower() # 小寫fileName = word + '.mp3'if 0 == type:dirSpeech = os.path.join(dirRoot, 'Speech_US') # 美音庫else:dirSpeech = os.path.join(dirRoot, 'Speech_EN') # 英音庫filePath = os.path.join(dirSpeech, fileName)# 判斷是否存在這個MP3文件if os.path.exists(filePath):mp3_file_path_list.append(filePath)else:print("【ERROR】音頻文件不存在造成錯誤: ", filePath)pinjie(mp3_file_path_list, out_put_div)print("----程序結束----")點此跳轉至?本文代碼下載
總結
以上是生活随笔為你收集整理的Python 将英语单词列表,转换为听写使用的MP3格式(每个单词朗读两遍)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis 中的发布/订阅功能
- 下一篇: 电气柜的接线事项