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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

声学、音乐计算常用工具总结(soundfile、librosa、pydub、madmom、spleeter)

發布時間:2025/3/8 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 声学、音乐计算常用工具总结(soundfile、librosa、pydub、madmom、spleeter) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、soundfile
  • 二、librosa
  • 三、pydub
  • 四、madmom
  • 五、spleeter

?? 學習必須要經常總結,通過總結梳理才能記得牢,也方便以后用到的時候回頭查閱,這也是我寫CSDN的主要目的。剛參加了音樂節拍檢測的比賽,由于是初次接觸計算音樂學這個領域,我學習了一些常用的工具,怕以后不用忘了,趕緊趁熱總結一下。

一、soundfile

soundfile常用于音頻文件讀寫:

import soundfile as sfdata, samplerate = sf.read('existing_file.wav') sf.write('new_file.flac', data, samplerate) #sf.write('new_file.wav', data, samplerate)

flac是一種無損壓縮音樂格式

二、librosa

??librosa是常用的音頻處理庫,注意librosa安裝時要先裝ffmpeg。在docker ubuntu中安裝:

apt-get update && apt-get install -y ffmpeg pip install librosa

我這次主要用librosa來進行加載音頻和重采樣:

wav,sr = librosa.load(file,sr=44100) drums = librosa.resample(drums, orig_sr=44100, target_sr=22050, fix=True, scale=False)

此外,librosa還常用來提取音頻特征,例如梅爾頻譜和梅爾倒譜:
librosa.feature.melspectrogram()
librosa.feature.mfcc()

三、pydub

??pydub是一個非常強大的音頻處理和編輯工具。我這次主要用來增加減少音強,和合成多個音軌:

#合成音軌 bass = AudioSegment.from_file('bass.wav').set_frame_rate(22050).set_channels(1) other = AudioSegment.from_file('other.wav').set_frame_rate(22050).set_channels(1) vocals = AudioSegment.from_file('vocals.wav').set_frame_rate(22050).set_channels(1) NoDrum_audio = bass.overlay(other).overlay(vocals) nodrum_wav = np.frombuffer(NoDrum_audio.raw_data,np.short)/32768 #增加5個分貝 NoDrum_audio_5 = NoDrum_audio + 5

??使用時必須要先加載成AudioSegment類的數據,然后再用overlay,合成后可以用上面np.frombuffer的方式再轉換為和librosa加載后相同的numpy數組。

四、madmom

??madmom是一個強大的音樂分析工具,專用來分析音樂。我這次主要用它來提取特征和使用它的HMM包來提取beat和downbeat(即音樂節拍和強拍)并計算多種評價指標得分。

#提取特征,這里用madmom的多線程器提取頻譜特征以及頻譜的一階差分, #分成三組參數[1024, 2048, 4096][3, 6, 12]提取后再合并。 from madmom.audio.signal import SignalProcessor, FramedSignalProcessor from madmom.audio.stft import ShortTimeFourierTransformProcessor from madmom.audio.spectrogram import (FilteredSpectrogramProcessor, LogarithmicSpectrogramProcessor,SpectrogramDifferenceProcessor) from madmom.processors import ParallelProcessor, Processor, SequentialProcessor def madmom_feature(wav):sig = SignalProcessor(num_channels=1, sample_rate=44100 )multi = ParallelProcessor([])frame_sizes = [1024, 2048, 4096]num_bands = [3, 6, 12]for frame_size, num_bands in zip(frame_sizes, num_bands):frames = FramedSignalProcessor(frame_size=frame_size, fps=100)stft = ShortTimeFourierTransformProcessor() # caching FFT windowfilt = FilteredSpectrogramProcessor(num_bands=num_bands, fmin=30, fmax=17000, norm_filters=True)spec = LogarithmicSpectrogramProcessor(mul=1, add=1)diff = SpectrogramDifferenceProcessor(diff_ratio=0.5, positive_diffs=True, stack_diffs=np.hstack)# process each frame size with spec and diff sequentiallymulti.append(SequentialProcessor((frames, stft, filt, spec, diff)))# stack the features and processes everything sequentiallypre_processor = SequentialProcessor((sig, multi, np.hstack))feature = pre_processor.process( wav)return feature

下面用madmom自帶的HMM模塊處理beat和downbeat聯合檢測算法生成的激活值

from madmom.features.downbeats import DBNDownBeatTrackingProcessor as DownBproc hmm_proc = DownBproc(beats_per_bar = [3,4], num_tempi = 80, transition_lambda = 180, observation_lambda = 21, threshold = 0.5, fps = 100) #act是用神經網絡等音頻節拍檢測算法處理得到的激活值 beat_fuser_est = hmm_proc(act) beat_pred = beat_fuser_est[:,0] downbeat_pred = beat_pred[beat_fuser_est[:,1]==1]

下面對節拍檢測結果和節拍標注值計算多種評估指標:

from madmom.evaluation.beats import BeatEvaluation scr = BeatEvaluation(beat_pred,beat_true) print(scr.fmeasure,scr.pscore,scr.cemgil,scr.cmlc,scr.cmlt,scr.amlc,scr.amlt)

五、spleeter

??spleeter是一款效果非常不錯的音樂音軌分離工具。可以分成兩音軌,四音軌或五音軌,它本身是用tensorflow寫的,必須要先下載預訓練權重,第一次使用會自動下載。我安裝時發現它和madmom版本沖突,多次嘗試后發現用一個較早的版本1.4.9版才可以。安裝時用pip install spleeter==1.4.9即可。
??網上給出的用法都是在命令行中調用,我琢磨了一個在python代碼中調用的方法:

import librosa from spleeter.separator import Separator separator = Separator('spleeter:4stems') wav,sr = librosa.load(file,sr=44100) wav = wav.reshape(-1,1) prediction = separator.separate(wav) drums = prediction['drums'][:,0] bass = prediction['bass'][:,0] other = prediction['other'][:,0] vocals = prediction['vocals'][:,0]

注意,由于spleeter的預訓練權重是在44100采樣頻率下訓練的,所以使用時也必須44100Hz加載音樂。

總結

以上是生活随笔為你收集整理的声学、音乐计算常用工具总结(soundfile、librosa、pydub、madmom、spleeter)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 撸大师av | 我要看18毛片 | 一区在线播放 | 成人手机在线播放 | 色综合天天网 | 欧美精品91 | 日本泡妞视频 | 日韩精品视频观看 | 性视频欧美 | 性欧美hd调教 | 天堂在线资源8 | 国产成人久久精品流白浆 | 欧美另类xxx | 欧美成人tv | 欧美俄罗斯乱妇 | 爱av在线 | 免费黄色三级网站 | 亚洲国产精品国自产拍久久 | 日韩第一色 | 任我爽在线 | 在线观看国产精品一区 | 噼里啪啦免费高清看 | 麻豆人妻少妇精品无码专区 | 国产一区二区视频免费 | 69xx国产 | 亚洲精品一区二区三区新线路 | 精品无人区无码乱码毛片国产 | 国产精品自拍区 | 一区二区三区精品在线观看 | 青草视频在线观看视频 | 国产欧美一区二区精品性色 | 国产正在播放 | 男女男精品视频站 | 日韩毛片一区二区三区 | 精品视频久久久久 | 色哟哟网站在线观看 | 欧美色哟哟 | 男女交性视频 | 日韩一区二区在线观看 | 成人黄色在线视频 | 99干99| av高清免费| 亚洲第一视频在线观看 | 免费观看一区二区 | 欧美有码在线观看 | 精品久久久久久久久久久国产字幕 | 奇米色在线 | 9i免费看片黄 | 欧美色999| 青青草社区视频 | 欧美色乱 | 亚洲天堂一区 | 亚洲熟女乱综合一区二区 | 最好看的2019年中文视频 | 污av| 婷婷激情五月网 | 韩日av网站 | 91精品日韩 | 欧美黑人性xxx | 精品久久影院 | 色婷婷基地| 1024你懂的日韩 | av巨作| 欧美日韩国产二区 | 黑人玩弄人妻一区二区三区 | 2019国产精品 | 欧美r级在线 | 先锋资源网av | 国产精品一区二区人妻喷水 | 99热国产精品 | 国产精品久久久久久久久久 | 日韩午夜精品视频 | 人人爽爽人人 | 四虎免费看黄 | 性欧美18| 亚洲操操| 91大神小宝寻花在线观看 | av地址在线 | 日本精品在线观看 | 成人毛片在线精品国产 | 成人在线观看网 | 日日摸夜夜爽 | 精品国产a线一区二区三区东京热 | 欧美在线色视频 | 免费a级片视频 | 日韩怡春院 | 久久久久激情 | 拔擦8x成人一区二区三区 | 18成人免费观看网站 | 亚洲射吧| 欧美男女动态图 | 精品国产自 | 中文在线一区二区三区 | 欧美三级一区二区 | 91av在线免费视频 | 极品尤物魔鬼身材啪啪仙踪林 | 精品二区在线观看 | 美女丝袜合集 | 国内自拍2020 |