導航:首頁 > 編程語言 > 用python實現音頻前拉後拉

用python實現音頻前拉後拉

發布時間:2023-02-17 21:16:58

A. 【小項目-1】用python進行人聲伴奏分離和音樂特徵提取

比如采樣率為22050,音頻文件有36s,那麼x為長度為22050*36=793800的float。

用到了python庫 Spleeter
抽象地了解下原理吧
參考文章是這篇:Spleeter: a fast and efficient music source separation tool with pre-trained models
原理文章是這篇 SINGING VOICE SEPARATION: A STUDY ON TRAINING DATA
粗略掃了一眼,原理主要是用U-Net進行分割,然後這個Python工具主要是利用了一個pre-trained的model。

參考鏈接:機器之心的一篇文章

縱軸表示頻率(從0到10kHz),橫軸表示剪輯的時間。由於我們看到所有動作都發生在頻譜的底部,我們可以將頻率軸轉換為對數軸。

可以對頻率取對數。

感覺這個參數蠻有意思的

整個頻譜被投影到12個區間,代表音樂八度音的12個不同的半音(或色度), librosa.feature.chroma_stft 用於計算。

先對音頻進行短時傅里葉變換

其中每行存儲一個窗口的STFT,大小為1025*1551

這里要注意理解怎麼基於stft的結果來畫頻譜圖

沒太了解,感覺就大概知道有這么個量可以用到就行。

librosa.feature.spectral_centroid 計算信號中每幀的光譜質心:

1. 先理解連續傅里葉變換

2. 再理解離散傅里葉變換
對連續函數進行離散采樣

3. 最後進入短時傅里葉變換
是先把一個函數和窗函數進行相乘,然後再進行一維的傅里葉變換。並通過窗函數的滑動得到一系列的傅里葉變換結果,將這些結果豎著排開得到一個二維的表象。

B. 怎樣用python編寫簡單音樂播放器

要看你在什麼操作系統、要播什麼格式的音樂了。
audio: snd.decode( s )
import time
while snd.org/tut/aplayer.read( 8192 )
r= dec.'YOUR FILENAME'://pymedia.Output( r:
import pymedia.lower() )
f= open( sName.channels.read( 512 )
r= dec.play( r.split( sName.sleep( , r.org/tut/aplayer:
if r.acodec as acodec
sName=', sound; )[ -1 ];0.html" target="_blank">http;rb'
dec= acodec.AFMT_S16_LE )
while len( s )>.sample_rate.decode( s )
import pymedia;.sound as sound
snd= sound, '.audio: time, '://pymedia.Decoder( str.html
用pymedia可以很容易的實現bing了一下,有一個叫mplay的模塊,可以試一下,看上去有點簡單

C. python視頻分離音頻,同時簡單分軌

首先,安裝相應的音視頻處理庫:

然後,導入庫,並讀取相應的視頻文件,將音頻導出:(路徑修改為自己的路徑)

主要思路:用字元串保存時:分:秒,然後對應不同的音軌(下面以列表的方式)進行裁剪,注意:AudioSegment的單位是毫秒,所以在取切片時乘以1000。

這樣就完成了。

D. 如何使用python實現wave音頻文件回放

修改采樣點數和起始位置進行不同位置和長度的音頻波形分析
N=44100
start=0 #開始采樣位置
df = framerate/(N-1) # 解析度
freq = [df*n for n in range(0,N)] #N個元素
wave_data2=wave_data[0][start:start+N]
c=numpy.fft.fft(wave_data2)*2/N
#常規顯示采樣頻率一半的頻譜
d=int(len(c)/2)
#僅顯示頻率在4000以下的頻譜
while freq[d]>4000:
d-=10
pylab.plot(freq[:d-1],abs(c[:d-1]),'r')
pylab.show()

E. Python pyb音頻處理

Pyb可以讓你用簡單的方式處理音頻。

Pyb提供了簡潔的高層介面,極大的擴展了python處理音頻文件的能力。

GitHub鏈接: pyb-github

GitHub:

pyb的使用必須安裝對應的依賴軟體 ffmpeg 或 avconv

驗證是否安裝成功:

Open a WAV file

Open a mp3 file

Open a other file

切割音頻

分貝操作
分貝(decibel)是量度兩個相同單位之數量比例的計量單位,主要用於度量聲音強度,常用dB表示。

音頻鏈接
將一個文件添加到另一個文件的末尾

音頻長度

淡入淡出

重復音頻

再次淡入淡出

直接保存
所有ffmpeg支持的都支持

用標簽保存結果(元數據)

實例:

將mp3文件轉換成wav文件:

Python音頻處理庫 pyb

F. python播放音頻

anaconda建立環境 python=3.7.9
切換到虛擬環境里
安裝pyaudio
這個庫好像只能播放.wav文件
而且wav文件內部有不同的格式 我們需要sox轉換格式
sox在python里安裝 pip install sox
注意 這是sox和python的介面 真正的sox文件得自己裝一下
裝完了還得配置環境變數
sox資源安排:
https://pan..com/s/1ar8wQc1Xdml9BJpuJ-ubrg
安裝完後,就可以轉換wav的內部格式了
在音樂文件路徑下打開cmd或者powershell執行
sox voice.wav -b 16 -e signed-integer 00.wav
可以看到由voice.wav生成了新的文件 00.wav

G. 如何用python實現倒放一段音頻

用python實現倒放音頻的話,可以使用 pyb

frompybimportAudioSegment
frompyb.playbackimportplay
song=AudioSegment.from_mp3("a.mp3")
backwards=song.reverse()
play(backwards)

希望能幫到你!

H. Python 簡單的擴音,音頻去噪,靜音剪切

數字信號是通過對連續的模擬信號采樣得到的離散的函數。它可以簡單看作一個以時間為下標的數組。比如,x[n],n為整數。比如下圖是一個正弦信號(n=0,1, ..., 9):

對於任何的音頻文件,實際上都是用這種存儲方式,比如,下面是對應英文單詞「skip」的一段信號(只不過由於點太多,筆者把點用直線連接了起來):

衡量數字信號的 能量(強度) ,只要簡單的求振幅平方和即可:

我們知道,聲音可以看作是不同頻率的正弦信號疊加。那麼給定一個聲音信號(如上圖),怎麼能夠知道這個信號在不同頻率區段上的強度呢?答案是使用離散傅里葉變換。對信號x[n], n=0, ..., N-1,通常記它的離散傅里葉變換為X[n],它是一個復值函數。

比如,對上述英文單詞「skip」對應的信號做離散傅里葉變換,得到它在頻域中的圖像是:

可以看到能量主要集中在中低音部分(約16000Hz以下)。

在頻域上,也可以計算信號的強度,因為根據Plancherel定理,有:

對於一般的語音信號,長度都至少在1秒以上,有時候我們需要把其中比如25毫秒的一小部分單獨拿出來研究。將一個信號依次取小段的操作,就稱作分幀。技術上,音頻分幀是通過給信號加一系列的 窗 函數 實現的。

我們把一種特殊的函數w[n],稱作窗函數,如果對所有的n,有0<=w[n]<=1,且只有有限個n使得w[n]>0。比如去噪要用到的漢寧窗,三角窗。

漢寧窗

三角窗

我們將平移的窗函數與原始信號相乘,便得到信號的「一幀」:

w[n+d]*x[n]

比如用長22.6毫秒的漢寧窗加到「skip」信號大約中間部位上,得到一幀的信號:

可見除一有限區間之外,加窗後的信號其他部分都是0。

對一幀信號可以施加離散傅里葉變換(也叫短時離散傅里葉變換),來獲取信號在這一幀內(通常是很短時間內),有關頻率-能量的分布信息。

如果我們把信號按照上述方法分成一幀一幀,又將每一幀用離散傅里葉變換轉換到頻域中去,最後將各幀在頻域的圖像拼接起來,用橫坐標代表時間,縱坐標代表頻率,顏色代表能量強度(比如紅色代表高能,藍色代表低能),那麼我們就構造出所謂 頻譜圖 。比如上述「skip」發音對應的信號的頻譜圖是:

(使用5.8毫秒的漢寧窗)

從若干幀信號中,我們又可以恢復出原始信號。只要我們適當選取窗口大小,以及窗口之間的平移距離L,得到 ..., w[n+2L], w[n+L], w[n], w[n-L], w[n-2L], ...,使得對k求和有:

從而簡單的疊加各幀信號便可以恢復出原始信號:

最後,注意窗函數也可以在頻域作用到信號上,從而可以起到取出信號的某一頻段的作用。

下面簡單介紹一下3種音效。

1. 擴音

要擴大信號的強度,只要簡單的增大信號的「振幅」。比如給定一個信號x[n],用a>1去乘,便得到聲音更大的增強信號:

同理,用系數0<a<1去乘,便得到聲音變小的減弱信號。

2. 去噪(降噪)

對於白噪音,我們可以簡單的用「移動平均濾波器」來去除,雖然這也會一定程度降低聲音的強度,但效果的確不錯。但是,對於成分較為復雜,特別是頻段能量分布不均勻的雜訊,則需要使用下面的 雜訊門 技術,它可以看作是一種「多帶通濾波器」。

這個特效的基本思路是:對一段雜訊樣本建模,然後降低待降噪信號中雜訊的分貝。

更加細節的說,是在信號的若干頻段f[1], ..., f[M]上,分別設置雜訊門g[1], ..., g[M],每個門都有一個對應的閾值,分別是t[1], ..., t[M]。這些閾值時根據雜訊樣本確定的。比如當通過門g[m]的信號強度超過閾值t[m]時,門就會關閉,反之,則會重新打開。最後通過的信號便會只保留下來比雜訊強度更大的聲音,通常也就是我們想要的聲音。

為了避免雜訊門的開合造成信號的劇烈變動,筆者使用了sigmoid函數做平滑處理,即雜訊門在開-關2個狀態之間是連續變化的,信號通過的比率也是在1.0-0.0之間均勻變化的。

實現中,我們用漢寧窗對信號進行分幀。然後對每一幀,又用三角窗將信號分成若干頻段。對雜訊樣本做這樣的處理後,可以求出信號每一頻段對應的閾值。然後,又對原始信號做這樣的處理(分幀+分頻),根據每一幀每一頻段的信號強度和對應閾值的差(diff = energy-threshold),來計算對應雜訊門的開合程度,即通過信號的強度。最後,簡單的將各頻段,各幀的通過信號疊加起來,便得到了降噪信號。

比如原先的「skip」語音信號頻譜圖如下:

可以看到有較多雜音(在高頻,低頻段,藍色部分)。採集0.25秒之前的聲音作為雜訊樣本,對信號作降噪處理,得到降噪後信號的頻譜圖如下:

可以明顯的看到大部分噪音都被清除了,而語音部分仍完好無損,強度也沒有減弱,這是「移動平均濾波器」所做不到的。

3. 靜音剪切

在對音頻進行上述降噪處理後,我們還可以進一步把多餘的靜音去除掉。

剪切的原理十分簡單。首先用漢寧窗對信號做分幀。如果該幀信號強度過小,則捨去該幀。最後將保留的幀疊加起來,便得到了剪切掉靜音部分的信號。

比如,對降噪處理後的「skip」語音信號做靜音剪切,得到的新信號的頻譜圖為:

I. 利用python和麥克風進行語音數據採集的流程

使用 Python 和麥克風進行語音數據採集的流程可能包括以下步驟:

J. python音樂循環播放怎麼實現

import pygame ---導庫

pygame.mixer.init()---初始化

pygame.mixer.music.load(歌曲名稱)---載入歌曲

pygame.mixer.music.play(-1)---播放歌曲


閱讀全文

與用python實現音頻前拉後拉相關的資料

熱點內容
msf埠遷移命令 瀏覽:880
工商app積分怎麼查詢 瀏覽:143
鐵路app怎麼買火車票 瀏覽:309
移魅族除的app怎麼添加 瀏覽:240
兔籠子大號加密 瀏覽:171
單片機程序燒錄操作成功 瀏覽:878
指標高拋低吸點位源碼 瀏覽:205
25匹壓縮機銅管 瀏覽:570
單片機單燈左移05 瀏覽:150
買伺服器練手什麼配置 瀏覽:783
伺服器被毀該怎麼辦 瀏覽:939
python私有庫 瀏覽:514
Python有中文嗎 瀏覽:736
麥塊的伺服器為什麼都進不去 瀏覽:474
新買的伺服器如何打開 瀏覽:35
安卓軟體游戲怎麼開發 瀏覽:319
用撲克擺愛心解壓神器怎麼擺 瀏覽:70
松下製冷壓縮機 瀏覽:275
pdf里怎麼修改文字 瀏覽:686
已保存文檔加密如何設置 瀏覽:413