lisp 批量文字求差值_Python 超简单 提取音乐高潮(附批量提取)
生活随笔
收集整理的這篇文章主要介紹了
lisp 批量文字求差值_Python 超简单 提取音乐高潮(附批量提取)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
希望點擊上方??編程學習者社區,選擇?創建星標
可以看到,這部分代碼就是做了我們算法的第二步,進行了片段與片段之間的相似度計算。檢測時用到的相似函數是這樣的:這主要是因為歌曲由12個基本音符的幀的集合而組成,v1和v2是任意兩段音樂的音符矢量,如果說兩段音樂非常相似,那么右邊的式子將接近于0.?如果說 1-右邊的式子 得分非常高,則說明兩段音樂非常相似。下面我們看看怎么使用這個項目求音樂高潮部分,其實非常簡單。
這樣操作后就提取了我心目中想要的部分。大家也可以根據我們今天的教程,試著提取一下自己喜歡的音樂的高潮部分哦!
作者 | CKend來源 | Python實用寶典
回復關鍵字?資源??獲取編程資源
很多時候我們想提取某首歌的副歌部分(俗稱 高潮部分),只能手動直接卡點剪切,但是對于大批量的獲取就很頭疼,如何解決?怎么樣,是不是迫不及待想往下讀了?不要急,讓我們從原理開始慢慢講起。一、原理簡介
不知道大家有沒有這樣的體會,大部分時候,歌曲的高潮部分通常是重復次數最多的部分。因此我們可以根據這一個特征,提出我們的算法:1.遍歷整首歌曲。2.將選定長度的部分與其他部分比較并計算相似度,以查看是否重復。3.尋找重復次數較大、且間隔長的片段。二、代碼編寫
為了避免造輪子,我們找到了別人已經做過的類似的項目:https://github.com/vivjay30/pychorus我們只需要分析這個源代碼中最核心的部分,即求相似區段的源代碼,就能知道它是不是符合我們的項目需求了:可以看到,這部分代碼就是做了我們算法的第二步,進行了片段與片段之間的相似度計算。檢測時用到的相似函數是這樣的:這主要是因為歌曲由12個基本音符的幀的集合而組成,v1和v2是任意兩段音樂的音符矢量,如果說兩段音樂非常相似,那么右邊的式子將接近于0.?如果說 1-右邊的式子 得分非常高,則說明兩段音樂非常相似。下面我們看看怎么使用這個項目求音樂高潮部分,其實非常簡單。
2.1 安裝所需要的項目
你可以通過pip安裝該項目,PIP安裝指令如下:pip install pychorus2.2 編寫代碼
實際上,這個包用起來可是相當簡單,如果我們只是想單純提取歌曲高潮部分:from?pychorus?import?find_and_output_choruschorus_start_sec?=?find_and_output_chorus("你的音樂文件",?"輸出高潮部分文件",?要多少秒的高潮部分)沒錯,兩行代碼就解決了。如果你想知道一些詳細的細節,比如說輸出相似矩陣或者結果可視化,建議閱讀github中該項目的操作指令。下面讓我們檢驗一下效果。三、效果檢驗
以《孤芳自賞》 為例,讓我們試試這個提取器的功力。編寫代碼:#?提取音樂高潮部分from?pychorus?import?find_and_output_choruschorus_start_sec?=?find_and_output_chorus("孤芳自賞.mp3",?"孤芳自賞_high.wav",?40)這樣操作后就提取了我心目中想要的部分。大家也可以根據我們今天的教程,試著提取一下自己喜歡的音樂的高潮部分哦!
四、批量提取
剛剛,只是完成了單首歌曲的高潮提取,如果你想提取整個文件夾下的音樂的高潮部分,可以這樣做:圖片版代碼文字版代碼:# 提取音樂高潮部分# 2020/06/11import osimport sysfrom pychorus import find_and_output_chorusdef extract_all_file(files_path):""" 批量提取音樂高潮 Args: files_path (str): 文件夾路徑 """# 文件夾路徑 modpath = os.path.dirname(os.path.abspath(sys.argv[0]))for filepath in os.listdir(files_path):# 路徑處理 datapath = os.path.join(modpath, files_path + filepath)# output文件夾是否存在 targets = f"{modpath}\\output\\"if not os.path.exists(targets): os.makedirs(targets)# 提取音樂高潮至當前output文件夾下 find_and_output_chorus( datapath, f"{targets}{filepath.split('.')[0]}_high.wav", 40 )extract_all_file("F:\\push\\20200611\\music\\")Python的優勢就在于有眾多的庫,所以大家不必擔心很難,多看幾遍,然后挑自己感興趣的案例動手實踐,相信你會慢慢愛上Python!作者 | CKend來源 | Python實用寶典
往期精選
在知乎上學Python-入門篇在知乎上學爬蟲大家都用什么背英語單詞Python庫分享總結
以上是生活随笔為你收集整理的lisp 批量文字求差值_Python 超简单 提取音乐高潮(附批量提取)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 房价下跌扰乱楼市了吗?
- 下一篇: echarts代码格式化_echarts