0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python簡單可視化音樂:提取音樂頻譜

對面小姐姐 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-21 11:39 ? 次閱讀

你有沒有經(jīng)常好奇一些音樂軟件的頻譜特效是怎么做的,為什么做的這么好看?有沒有想試試自己提取音樂頻譜并可視化展現(xiàn)出來?今天,咱就結(jié)合上次的音樂剪輯操作:

1.準備

開始之前,你要確保Pythonpip已經(jīng)成功安裝在電腦上噢,如果沒有,請訪問這篇文章:超詳細Python安裝指南 進行安裝。

Windows環(huán)境下打開Cmd(開始—運行—CMD),蘋果系統(tǒng)環(huán)境下請打開Terminal(command+空格輸入Terminal),準備開始輸入命令安裝依賴。

當然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來,在編輯器下方的終端裝依賴模塊,多舒服的一件事啊:Python 編程的最好搭檔—VSCode 詳細指南。

在終端輸入以下命令安裝我們所需要的依賴模塊:

pip install pydub
pip install librosa

看到 Successfully installed xxx 則說明安裝成功。

2.頻譜展示

使用librosa和matplot,我們可以用10行代碼完整地展示整個頻譜:

圖片

import matplotlib.pyplot as plt
import librosa.display
# 音樂文件載入
audio_path = 'Fenn.mp3'
music, sr = librosa.load(audio_path)
# 寬高比為14:5的圖
plt.figure(figsize=(14,5))
librosa.display.waveplot(music, sr=sr)
# 顯示圖
plt.show()

不過,這樣的頻譜是整段音樂的,看起來非常難看,接下來我們使用 pydub 切割頻譜,以獲得更佳的效果。我們細分到0到1秒的區(qū)段來查看頻譜:

圖片

import matplotlib.pyplot as plt
import librosa.display
import numpy as np
from pydub import AudioSegment
# 1秒=1000亳秒
SECOND = 1000
#音樂文件
AUDIO_PATH = 'Fenn.mp3'

def split_music(begin, end, filepath):
    # 導(dǎo)兒音樂
    song = AudioSegment.from_mp3(filepath)
    # 取begin秒至ijend秒間的片段
    song = song[begin*SECOND: end*SECOND]
    # 存儲為臨時文件做備份
    temp_path = 'backup/'+filepath
    song.export(temp_path)
    return temp_path
music, sr = librosa.load(split_music(0, 1, AUDIO_PATH))
#寬高比為14:5的圖
plt.figure(figsize=(14, 5))
librosa.display.waveplot(music, sr=sr)
plt.show()

這下細是細了,但是還是太復(fù)雜了,其實我們做頻譜的展示,或許只需要正值即可:

圖片

然后我們還可以進一步放大,比如說0.9秒到1秒之間的頻譜:

圖片

# 公眾號:Python 實用寶典
n0 = 9000
n1 = 10000
music = np.array([mic for mic in music if mic > 0])
plt.figure(figsize=(14, 5))
pit.plot(music[n0:n1])
plt.grid()
#顯示圖
plt.show()

這樣好看許多,不過如果要達成QQ音樂那種效果,還是需要進行大量改造。

比如用精美的圖像元素來填充替代、然后零值如何處理?如何讓頻譜更加平穩(wěn)?此外,我們是靜態(tài)的圖像,還需要根據(jù)事件動態(tài)地延續(xù)波段。

用于生產(chǎn)的代碼肯定比我們這簡易的代碼更加復(fù)雜,而且也不應(yīng)該是暴力去除負值繪制圖像。這些有興趣的讀者可以自行研究啦。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 頻譜
    +關(guān)注

    關(guān)注

    7

    文章

    885

    瀏覽量

    45709
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    806

    瀏覽量

    31237
  • 可視化
    +關(guān)注

    關(guān)注

    1

    文章

    1198

    瀏覽量

    20997
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4804

    瀏覽量

    84910
收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)據(jù)可視化Python-matplotlib概述

    數(shù)據(jù)可視化(二):Python-matplotlib
    發(fā)表于 07-22 14:58

    python數(shù)據(jù)可視化的方法和代碼

    Python數(shù)據(jù)可視化匯總
    發(fā)表于 10-14 14:59

    Python數(shù)據(jù)可視化專家的七個秘密

    分享 Python數(shù)據(jù)可視化專家的七個秘密
    發(fā)表于 05-15 06:43

    python數(shù)據(jù)可視化之畫折線圖

    python數(shù)據(jù)可視化之畫折線圖,散點圖
    發(fā)表于 05-27 08:09

    Python數(shù)據(jù)可視化

    Python數(shù)據(jù)可視化:網(wǎng)易云音樂歌單
    發(fā)表于 07-19 08:30

    基于Arduino做個音樂可視化LED燈帶

    基于Arduino做個音樂可視化LED燈帶,快來探索用了什么原理和材料!結(jié)合提供的簡單代碼,軟硬件結(jié)合,你也可以在音樂中成為最靚的仔!
    發(fā)表于 09-27 08:08

    音樂樂譜提取軟件和音樂常識

    音樂樂譜提取軟件和音樂常識:由于人耳聽覺系統(tǒng)非常復(fù)雜,迄今為止人類對它的生理結(jié)構(gòu)和聽覺特性還不能從生理解剖角度完全解釋清楚。所以,對人耳聽覺特性的研究目前僅
    發(fā)表于 05-25 23:47 ?10次下載

    音樂頻譜-PCB及代碼

    基于stc12c5a單片機的音樂頻譜顯示屏幕的制作,可以根據(jù)音樂顯示出不同的頻譜,且燈的顏色可改變。
    發(fā)表于 02-29 15:08 ?66次下載

    音樂頻譜顯示器程序電路

    簡單音樂頻譜的電路與程序,喜歡的快下載吧!
    發(fā)表于 05-20 14:28 ?10次下載

    12864音樂頻譜

    12864音樂頻譜
    發(fā)表于 12-16 08:56 ?49次下載

    音樂頻譜程序

    音樂頻譜程序
    發(fā)表于 10-09 17:21 ?23次下載

    Python拉勾網(wǎng)數(shù)據(jù)采集與可視化

    本文是先采集拉勾網(wǎng)上面的數(shù)據(jù),采集的是Python崗位的數(shù)據(jù),然后用Python進行可視化。主要涉及的是爬蟲&數(shù)據(jù)可視化的知識。
    的頭像 發(fā)表于 03-13 14:18 ?3285次閱讀
    <b class='flag-5'>Python</b>拉勾網(wǎng)數(shù)據(jù)采集與<b class='flag-5'>可視化</b>

    Python數(shù)據(jù)可視化編程實戰(zhàn)

    Python數(shù)據(jù)可視化編程實戰(zhàn)資料免費下載。
    發(fā)表于 06-01 14:37 ?29次下載

    如何做一個音樂可視化系列小項目LED節(jié)奏燈

    ,逐步積累些有用的音樂頻譜可視化的資料,也會爭取成型一些實用好玩的音樂可視器項目。 初步設(shè)想: 1、模擬量拾音模塊,主要是采用MAX9814
    的頭像 發(fā)表于 11-09 17:20 ?4715次閱讀
    如何做一個<b class='flag-5'>音樂</b><b class='flag-5'>可視化</b>系列小項目LED節(jié)奏燈

    簡單音樂頻譜可視化

    電子發(fā)燒友網(wǎng)站提供《超簡單音樂頻譜可視化器.zip》資料免費下載
    發(fā)表于 11-17 14:36 ?1次下載
    超<b class='flag-5'>簡單</b>的<b class='flag-5'>音樂</b><b class='flag-5'>頻譜</b><b class='flag-5'>可視化</b>器