<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          輕松擁有整點(diǎn)報(bào)時(shí)功能

          共 1520字,需瀏覽 4分鐘

           ·

          2022-03-06 15:30

          最近蘇州疫情比較緊,人宅在家里就比較容易無(wú)聊。媳婦打發(fā)無(wú)聊的方法就是逛淘寶,逛小紅書(shū),逛阿里巴巴。不知道是被哪位博主種草了天貓精靈,打算拔草一個(gè)。

          我是不太喜歡語(yǔ)音控制這類(lèi)東西的。一是我更喜歡文字,不喜歡發(fā)語(yǔ)音,還有就是語(yǔ)音識(shí)別的準(zhǔn)確性不太高,有很多誤識(shí)別,需要重復(fù)說(shuō)兩三遍的時(shí)候就會(huì)覺(jué)得自己很蠢。身邊監(jiān)控我們?nèi)粘5碾娮赢a(chǎn)品已經(jīng)很多了,不想再多一個(gè)產(chǎn)品監(jiān)聽(tīng)我的日常。所以我果斷拒絕了這一想法。

          媳婦又打起了感情牌,說(shuō)是可以給娃播放早教音樂(lè),放在柜子上看時(shí)間也比較方便?!坝惺謾C(jī)還要天貓精靈看時(shí)間么”,我當(dāng)時(shí)就小聲嘀咕了。至于放歌這一需求,手機(jī)電腦都好放的,家里也有藍(lán)牙音箱。于是我決定自己動(dòng)手做一下山寨低配簡(jiǎn)化的天貓精靈

          97bace5ec4141dadbe7567d3d3862235.webp

          掏出幾年前也是閑得無(wú)聊的時(shí)候買(mǎi)的藍(lán)牙音箱。長(zhǎng)這樣,熄屏的時(shí)候,表面是一面鏡子,可以照出我胡子拉碴的盛世美顏。

          功能需求分為2塊,整點(diǎn)報(bào)時(shí)和播放兒歌。播放功能基本不用做,藍(lán)牙自帶控制功能,主要解決整點(diǎn)報(bào)時(shí)。整點(diǎn)對(duì)于python來(lái)說(shuō)太簡(jiǎn)單了,time模塊和datetime模塊都可以解決。1s獲取一次最新的時(shí)間,約等于有個(gè)時(shí)鐘。每次判斷一下時(shí)鐘和分鐘的值是不是都是0就行了。
          接下來(lái)要解決報(bào)時(shí),得有處理好的音頻,還有用python播放語(yǔ)音。之前沒(méi)有處理過(guò)音頻文件,于是上網(wǎng)搜,小手一抖,找到個(gè)現(xiàn)成的??梢杂胮yaudio庫(kù)來(lái)實(shí)現(xiàn)。于是整點(diǎn)報(bào)時(shí)的代碼就變成了:
          import time  # 獲取時(shí)間import wave  # 波形處理import pyaudio  # 播放器

          def play_sound(filename): f = wave.open(filename, 'rb') # 加載音頻文件(wav) pms = f.getparams() # 獲取音頻的屬性參數(shù) nchannels, sampwidth, framerate, nframes = pms[:4] # 單獨(dú)提取出各參數(shù)的值,并加以定義 p = pyaudio.PyAudio() # 創(chuàng)建一個(gè)播放器 s = p.open(format=p.get_format_from_width(sampwidth), channels=nchannels, rate=framerate, output=True) # 將音頻轉(zhuǎn)換為音頻流 while True: data = f.readframes(1024) # 按照1024大小的塊,讀取音頻數(shù)據(jù),得到一系列二進(jìn)制編碼 if data == b'': break s.write(data) # 開(kāi)始按照音頻的參數(shù),播放音頻 s.close() p.terminate()

          if __name__ == '__main__': while True: t = time.strftime("%H:%M:%S", time.localtime()) print(t) time_list = t.split(':') # time_list[0] 小時(shí) # time_list[1] 分鐘 # time_list[2] 秒 if time_list[1] == '00' and time_list[2] == '00': hour = int(time_list[0]) if 6 <= hour < 23: filename = "baoshi/{}.wav".format(hour) # 找到對(duì)應(yīng)的wav文件路徑 play_sound(filename) # 播放聲音 time.sleep(1)
          ?如果你要使用的話,只要?jiǎng)?chuàng)建個(gè)文件夾,里面放制作好的音頻,同時(shí)修改第32行,filename即可。眼瞅著需求實(shí)現(xiàn)大差不差了,只見(jiàn)甲方爸爸刷著劇,絲毫沒(méi)有要提供音頻文件的意思。我說(shuō)你見(jiàn)過(guò)哪個(gè)甲方不給錢(qián)提需求,連素材都不提供的么。媳婦淡淡來(lái)了一句,甲方不都是這么干的么。深諳需求管理,都怪我之前給她講PM的故事講太多了。沒(méi)有困難的工作,只有勇敢的卷順。python嘛,網(wǎng)上找找?guī)煜取9徽业揭粋€(gè),3行代碼解決了音頻剪輯的問(wèn)題,其中還有一行是導(dǎo)入包。行啊。簡(jiǎn)潔優(yōu)雅美麗大方。
          from pydub import AudioSegmentsong = AudioSegment.from_mp3("end_of_time.mp3")song[33*1000:70*1000].export('end_of_time_slice.mp3')?
          實(shí)際試了一下,有點(diǎn)小問(wèn)題,需要先安裝一下FFmpeg工具。下載地址放這里https://ffmpeg.org/download.html#build-windows。下載到本地后,把bin文件所在目錄添加到環(huán)境變量里,在命令行輸入ffmpeg,沒(méi)有報(bào)錯(cuò)則添加成功。f4d1f64cca278270b06a34ab5c6b524c.webp

          再次運(yùn)行上面的3行代碼就沒(méi)有問(wèn)題。其中33*1000:70*1000就是提取33s到70s這一段音頻。于是網(wǎng)上找了個(gè)報(bào)時(shí)的音頻,開(kāi)始?xì)g快的截起歌來(lái)。

          按照以往的合作模式,甲方爸爸一直是要源碼研究的,雖然我說(shuō)過(guò)要源碼得加錢(qián),但是并沒(méi)有用。出于碼農(nóng)的職業(yè)道德,我還是把這段代碼封裝一下,再加上中文注釋,方便甲方爸爸閱讀。

          from pydub import AudioSegment
          def edit_music_signle(name, new_name, start, end=0): # 打開(kāi)文件名是name的文件 song = AudioSegment.from_mp3(name) # 如果沒(méi)有輸入結(jié)束時(shí)長(zhǎng) if end == 0: # 就使用歌曲的默認(rèn)長(zhǎng)度 end = len(song) # 歌曲從start到end這部分導(dǎo)出為new_name的文件,格式是wav????song[start:end].export(new_name,?format="wav")????edit_music_signle('報(bào)時(shí).mp3', '23.wav', 207000, 217500)

          把整點(diǎn)報(bào)時(shí)的分鐘和秒鐘改成現(xiàn)在時(shí)間再多幾十秒,簡(jiǎn)單測(cè)試了一下,整點(diǎn)報(bào)時(shí)功能可以正常運(yùn)行。

          接下來(lái)是播放兒歌的問(wèn)題了。云村一搜兒歌,出來(lái)XX巴士,點(diǎn)開(kāi)聽(tīng),每個(gè)歌開(kāi)頭都有個(gè)軟廣。接下來(lái)就是批量剪輯掉開(kāi)頭的這個(gè)廣告了,python處理批量操作很方便。

          先是云村一鍵下載歌單里的歌,然后批量重命名,因?yàn)槊种虚g有空格,文件讀取的時(shí)候會(huì)出錯(cuò)。然后就是剪掉前2s的聲音,再轉(zhuǎn)換成wav格式。pyaudio可以播放wav,能不能播放MP3還沒(méi)研究,先轉(zhuǎn)換成wav使用起來(lái),后面再找MP3的庫(kù)。

          from pydub import AudioSegmentimport os
          def edit_music(filepath): filenames = os.listdir(filepath) for file in filenames: if file.endswith('mp3'): if ' ' in file: new_name = file.split(' ')[2] else: new_name = file os.rename(filepath+file, filepath+new_name) song = AudioSegment.from_mp3(filepath+new_name) new_name = new_name.split('.')[0] song[2*1000:len(song)].export('music_cut/{}.wav'.format(new_name), format="wav")????????????edit_music('music/')

          一頓操作,兒歌就搞定了,歡快的播放起來(lái)。fb6adae25218401a981fc7cdded73161.webp

          再然后呢?因?yàn)槭褂玫氖亲詭У乃{(lán)牙功能,所以功能很有限,如果想實(shí)現(xiàn)更多的功能,那得解析藍(lán)牙數(shù)據(jù)。比如長(zhǎng)按,組合按鍵。當(dāng)然也是有這樣的庫(kù)的,不過(guò)是基于v3.5的python實(shí)現(xiàn)的,我的是3.9版本,需要安裝虛擬環(huán)境去解決。暫時(shí)就先這樣對(duì)付甲方爸爸吧,畢竟咱也沒(méi)打算做成產(chǎn)品級(jí),而且甲方爸爸的新鮮勁兒也不會(huì)超過(guò)一星期。

          想看更多python相關(guān)的騷操作,請(qǐng)持續(xù)關(guān)注,也歡迎提需求哦。


          參考網(wǎng)站:
          1. https://blog.csdn.net/u010751000/article/details/106963850??Python 超方便超快速剪輯音樂(lè)
          2. https://www.yisu.com/zixun/155666.html??Python 實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)的方法

          相關(guān)文章:
          瀏覽 301
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日日干视频 | 人人草人人草 | 国产激情在线内射 | 老色鬼久久综合 | 99爱免费视频 |