日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python 将英语单词列表,转换为听写使用的MP3格式(每个单词朗读两遍)

發布時間:2024/5/8 python 70 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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格式(每个单词朗读两遍)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。