日韩性视频-久久久蜜桃-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)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文字幕人妻一区二 | 91av片| 欧美伦理片| 久久久久成人精品 | 亚洲AV蜜桃永久无码精品性色 | 91丨porny丨国产入口 | 亚洲小视频网站 | 嫩模啪啪| 天堂网一区 | 女女h百合无遮涩涩漫画软件 | 日韩成人一区二区三区 | 国产乱码精品一区二区三区中文 | 熟女人妇 成熟妇女系列视频 | 天天干天天谢 | 69精品无码成人久久久久久 | 国产成人小视频在线观看 | 嫩草视频在线观看视频 | 欧美一二三 | 国产视频在线观看一区二区 | 婷婷色中文| 日本三级日本三级日本三级极 | 一区二区高清 | 欧美精品在欧美一区二区 | 成人h片在线观看 | a√国产 | jizzjizz免费| 日韩三级中文字幕 | 国产区在线 | 天天天干干干 | 东方成人av在线 | 很黄的性视频 | 久久久久五月 | 高清一区二区三区四区 | 亚洲av不卡一区二区 | 亚洲综合第一 | 日韩在线91 | 97精品人妻一区二区三区 | 成人午夜免费福利 | 99ri在线| 亚洲av无码一区二区乱子伦as | 男人天堂999 | 亚洲精品在线观看视频 | 国产麻豆a毛片 | 久久久久久久久久久免费 | 欧美一级二级在线观看 | 欧美性理论片在线观看片免费 | 99视频观看 | 精品人妻一区二区三区日产乱码 | 国产偷自拍| 亚洲成人激情在线 | 谁有免费的黄色网址 | 亚洲九九爱| 男女黄床上色视频 | 国产白浆在线观看 | 国产三级午夜理伦三级 | 欧美第一精品 | 国产又好看的毛片 | 2024国产精品| 婷婷国产一区 | 亚洲欧美综合精品久久成人 | 国产精品porn | 欧美精品久久99 | 丰满熟妇人妻av无码区 | 狠狠干夜夜操 | 91精品人妻一区二区三区果冻 | 开心激情站 | 免费美女毛片 | 香蕉视频最新网址 | 免费啪| 被黑人啪到哭的番号922在线 | 国产视频第三页 | 成熟的女同志hd | 性高湖久久久久久久久aaaaa | 日日操视频 | 久久精品久久久久久 | 日韩精品一区二区电影 | 精品一区二区三区蜜臀 | 五月天激情小说 | 国产日韩精品一区二区三区 | 爱吃波客今天最新视频 | av网址免费在线观看 | 一本大道av伊人久久综合 | 精品视频91 | 伦乱天堂 | 国产欧美久久久精品免费 | 精品视频91| 欧美三级韩国三级日本三斤在线观看 | 伊人久久久久久久久 | 91成人短视频在线观看 | 一级黄色在线 | 亚洲一区二区三区黄色 | 人与拘一级a毛片 | 免费在线观看一区二区三区 | 老色批影院 | 欧美r级在线观看 | 91一区二区在线观看 | 亚洲欧美成人综合 | 国产夫妻性生活视频 | 成人黄色在线观看视频 |