最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python音頻處理庫(kù)pydub的使用教程詳解

 更新時(shí)間:2023年03月22日 08:46:57   作者:黃昏中起飛的貓頭鷹  
Pydub是Python音頻處理庫(kù),可以對(duì)音頻進(jìn)行切割、合并、轉(zhuǎn)換、調(diào)整音量等操作。本文將對(duì)pydub各個(gè)知識(shí)點(diǎn)和案例進(jìn)行介紹,需要的可以參考一下

1. 安裝

使用pip安裝即可(還需安裝ffmpeg依賴,建議使用conda命令安裝,則不需要配置環(huán)境):

pip install pydub

2. 導(dǎo)入和讀取音頻文件

from pydub import AudioSegment
audio = AudioSegment.from_file("path/to/file")

3. 播放音頻

from pydub.playback import play
play(audio)

4. 音頻時(shí)長(zhǎng)

duration = audio.duration_seconds # 單位為秒

5. 音頻切割

# 前10秒
audio = audio[:10000]

# 后10秒
audio = audio[-10000:]

# 從第10秒開始到第20秒結(jié)束
audio = audio[10000:20000]

# 從第10秒開始到結(jié)尾
audio = audio[10000:]

# 從開始到第10秒audio = audio[:10000]

6. 音頻合并

audio1 = AudioSegment.from_file("path/to/file1")
audio2 = AudioSegment.from_file("path/to/file2")
audio_combined = audio1 + audio2

7. 音頻轉(zhuǎn)換

audio.export("path/to/new/file", format="mp3")

8. 調(diào)整音量

# 增加10分貝
louder_audio = audio + 10

# 減小10分貝
quieter_audio = audio - 10

9. 等分分割音頻

# 等分分割,按大概每三分鐘進(jìn)行分割
for i in range(1, 1000):
    if 3.3 >= (audio.duration_seconds / (60 * i)) >= 2.8:
        number = i
        break
chunks = audio[::int(audio.duration_seconds / number * 1000 + 1)]  # 切割

# 保存分割后的音頻
for i, chunk in enumerate(chunks):
    chunk.export("path/to/new/file{}.wav".format(title,i), format="wav")

10. 完整代碼

下面是一段完整的代碼,用于對(duì)音頻進(jìn)行前后切割,并將音頻分割成合適長(zhǎng)度的小段進(jìn)行保存。

from pydub import AudioSegment

# 讀取音頻文件
audio = AudioSegment.from_file("path/to/file")

# 輸出視頻時(shí)長(zhǎng)
print('視頻時(shí)長(zhǎng):', audio.duration_seconds / 60)

# 前后切割
start = int(input('前切割n秒,不切割輸入0'))*1000
end = int(input('后切割n秒,不切割輸入0'))*1000
if start:
    audio = audio[start:-end]

# 計(jì)算合適的分割長(zhǎng)度
for i in range(1, 1000):
    if 3.3 >= (audio.duration_seconds / (60 * i)) >= 2.8:
        number = i
        break
chunks = audio[::int(audio.duration_seconds / number * 1000 + 1)] 
# 保存分割后的音頻
for i, chunk in enumerate(chunks):
    print('分割后的時(shí)長(zhǎng):', chunk.duration_seconds / 60)
    chunk.export("path/to/new/file{}.wav".format(i), format="wav")

以上就是pydub的主要知識(shí)點(diǎn)和一個(gè)完整的實(shí)例。通過(guò)pydub,我們可以方便地對(duì)音頻進(jìn)行處理和轉(zhuǎn)換,讓我們的音頻處理更加高效和便捷。
另外,下面還列舉了一些pydub的其他應(yīng)用案例。

應(yīng)用案例

1. 將音頻文件轉(zhuǎn)換為指定格式

from pydub import AudioSegment

# 讀取音頻文件
audio = AudioSegment.from_file("path/to/file")

# 轉(zhuǎn)換為mp3格式并保存
audio.export("path/to/new/file.mp3", format="mp3")

2. 將多個(gè)音頻文件合并為一個(gè)文件

from pydub import AudioSegment

# 讀取音頻文件
audio1 = AudioSegment.from_file("path/to/file1")
audio2 = AudioSegment.from_file("path/to/file2")

# 合并音頻文件并保存
combined_audio = audio1 + audio2
combined_audio.export("path/to/new/file", format="wav")

3. 制作鈴聲

from pydub import AudioSegment

# 讀取音頻文件
audio = AudioSegment.from_file("path/to/file")

# 切割并保存
start = 10000
end = 15000
ringtone = audio[start:end]
ringtone.export("path/to/new/file", format="mp3")

4. 調(diào)整音頻音量

from pydub import AudioSegment

# 讀取音頻文件
audio = AudioSegment.from_file("path/to/file")

# 增加10分貝
louder_audio = audio + 10

# 減小10分貝
quieter_audio = audio - 10

# 保存調(diào)整后的音頻
louder_audio.export("path/to/new/file", format="wav")
quieter_audio.export("path/to/new/file", format="wav")

案例:通過(guò)識(shí)別空白音,分割音頻中的歌曲

from pydub import AudioSegment
from pydub.silence import split_on_silence

# 讀取音頻文件
audio = AudioSegment.from_file("audio.mp3", format="mp3")

# 設(shè)置分割參數(shù)
min_silence_len = 700  # 最小靜音長(zhǎng)度
silence_thresh =-10  # 靜音閾值,越小越嚴(yán)格
keep_silence = 600  # 保留靜音長(zhǎng)度

# 計(jì)算分割數(shù)量
num_segments = int(audio.duration_seconds/60/3)  # 每首歌曲大概三分鐘,計(jì)算歌曲數(shù)量

# 分割音頻文件
for i in range(-10, 0):
    segments = split_on_silence(audio, min_silence_len=min_silence_len, silence_thresh=i, keep_silence=keep_silence)
    if len(segments) <= num_segments:
        print(f"分割成功,共分割出 {len(segments)} 段")
        break
    else:
        print(f"當(dāng)前閾值為 {i},分割出 {len(segments)} 段,繼續(xù)嘗試")

首先,我們使用AudioSegment.from_file()方法讀取音頻文件,并設(shè)置分割參數(shù)min_silence_len、silence_thresh和keep_silence分別表示最小靜音長(zhǎng)度、靜音閾值和保留靜音長(zhǎng)度。其中,靜音閾值越小,分割出的小段越多,但可能會(huì)出現(xiàn)誤分割的情況;反之,靜音閾值越大,分割出的小段越少,但可能會(huì)出現(xiàn)漏分割的情況。

然后,我們計(jì)算分割數(shù)量num_segments,即將音頻文件分割成多少段。這里我們假設(shè)每首歌曲大概三分鐘,計(jì)算出總共需要分割成多少段。

最后,我們使用split_on_silence()方法對(duì)音頻文件進(jìn)行分割,設(shè)置分割參數(shù),并通過(guò)循環(huán)來(lái)不斷調(diào)整靜音閾值,直到分割出的小段數(shù)量符合預(yù)期為止。如果分割成功,則跳出循環(huán);否則,繼續(xù)嘗試。

總而言之,pydub是一個(gè)非常實(shí)用的音頻處理庫(kù),可以方便地進(jìn)行音頻處理、轉(zhuǎn)換、合并等操作。同時(shí),pydub還有豐富的應(yīng)用場(chǎng)景,如制作鈴聲、調(diào)整音量等。值得注意的是,在使用pydub的過(guò)程中,需要注意音頻格式的兼容性問題。

此外,還可以通過(guò)pydub對(duì)音頻進(jìn)行編解碼、混音、重采樣等操作。下面是一些常見的操作示例。

編解碼、混音、重采樣

1. 編解碼

from pydub import AudioSegment

# 讀取音頻文件
audio = AudioSegment.from_file("path/to/file")

# 編碼
encoded_audio = audio.set_frame_rate(16000).set_sample_width(2).set_channels(1)

# 解碼
decoded_audio = encoded_audio.set_frame_rate(44100).set_sample_width(4).set_channels(2)

2. 混音

from pydub import AudioSegment

# 讀取音頻文件
audio1 = AudioSegment.from_file("path/to/file1")
audio2 = AudioSegment.from_file("path/to/file2")

# 混音
mixed_audio = audio1.overlay(audio2)

# 保存混音后的音頻
mixed_audio.export("path/to/new/file", format="wav")

3. 重采樣

from pydub import AudioSegment

# 讀取音頻文件
audio =AudioSegment.from_file("path/to/file")

# 重采樣為44100Hz
resampled_audio = audio.set_frame_rate(44100)

# 保存重采樣后的音頻
resampled_audio.export("path/to/new/file", format="wav")

通過(guò)pydub,我們可以方便地進(jìn)行音頻編解碼、混音、重采樣等操作,進(jìn)一步擴(kuò)展了pydub的應(yīng)用場(chǎng)景。需要注意的是,在進(jìn)行音頻混音操作時(shí),需要保證兩個(gè)音頻文件的采樣率、采樣位數(shù)和聲道數(shù)相同。

最后,總結(jié)一下pydub的優(yōu)點(diǎn)和缺點(diǎn)。

優(yōu)點(diǎn):

輕量級(jí):pydub是一個(gè)輕量級(jí)的音頻處理庫(kù),安裝方便,使用簡(jiǎn)單。

功能豐富:pydub提供了豐富的音頻處理功能,包括切割、合并、轉(zhuǎn)換、調(diào)整音量、編解碼、混音、重采樣等。

應(yīng)用廣泛:pydub的應(yīng)用場(chǎng)景非常廣泛,包括音頻處理、鈴聲制作、音頻格式轉(zhuǎn)換、語(yǔ)音識(shí)別等等。

缺點(diǎn):

對(duì)格式的兼容性有限:pydub對(duì)音頻格式的兼容性有限,不支持所有的音頻格式,需要先將音頻轉(zhuǎn)換為支持的格式后才能進(jìn)行處理。

性能一般:pydub在處理大文件時(shí),性能可能會(huì)比較一般,需要耗費(fèi)一定的時(shí)間和計(jì)算資源。

不支持流式處理:pydub不支持流式處理,需要將整個(gè)音頻文件讀取到內(nèi)存中,導(dǎo)致內(nèi)存占用較大。

綜上所述,pydub是一個(gè)功能豐富、應(yīng)用廣泛的音頻處理庫(kù)。在使用pydub時(shí),需要注意音頻格式的兼容性問題,并注意處理大文件時(shí)的性能和內(nèi)存占用。如果需要處理更復(fù)雜的音頻任務(wù),可以考慮使用其他更專業(yè)的音頻處理庫(kù)。

總結(jié)

博客介紹了如何使用Python的pydub庫(kù)將音頻文件分割成多個(gè)小段。我們首先讀取音頻文件,然后設(shè)置分割參數(shù),并計(jì)算分割數(shù)量。最后,通過(guò)循環(huán)來(lái)不斷調(diào)整靜音閾值,直到分割出的小段數(shù)量符合預(yù)期為止。這種方法可以用于對(duì)音頻進(jìn)行處理和分析,例如語(yǔ)音識(shí)別、音樂推薦等。

需要注意的是,音頻分割的效果受到分割參數(shù)的影響,需要根據(jù)具體情況進(jìn)行調(diào)整。另外,分割出的小段可能存在誤分割和漏分割的情況,需要進(jìn)行后續(xù)的檢查和處理。

以上就是Python音頻處理庫(kù)pydub的使用教程詳解的詳細(xì)內(nèi)容,更多關(guān)于Python音頻處理庫(kù)pydub的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python中Lambda表達(dá)式詳解

    python中Lambda表達(dá)式詳解

    在本篇文章里小編給大家整理的是關(guān)于python中Lambda表達(dá)式的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-11-11
  • Python super( )函數(shù)用法總結(jié)

    Python super( )函數(shù)用法總結(jié)

    今天給大家?guī)?lái)的知識(shí)是關(guān)于Python的相關(guān)知識(shí),文章圍繞著super( )函數(shù)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python大數(shù)據(jù)之網(wǎng)絡(luò)爬蟲的post請(qǐng)求、get請(qǐng)求區(qū)別實(shí)例分析

    Python大數(shù)據(jù)之網(wǎng)絡(luò)爬蟲的post請(qǐng)求、get請(qǐng)求區(qū)別實(shí)例分析

    這篇文章主要介紹了Python大數(shù)據(jù)之網(wǎng)絡(luò)爬蟲的post請(qǐng)求、get請(qǐng)求區(qū)別,結(jié)合具體實(shí)例形式分析了Python網(wǎng)頁(yè)爬蟲post請(qǐng)求與get請(qǐng)求相關(guān)使用技巧,需要的朋友可以參考下
    2019-11-11
  • python3 mmh3安裝及使用方法

    python3 mmh3安裝及使用方法

    這篇文章主要介紹了python3 mmh3安裝及使用方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Pycharm和Idea支持的vim插件的方法

    Pycharm和Idea支持的vim插件的方法

    這篇文章主要介紹了Pycharm和Idea支持的vim插件的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python的functools模塊使用及說(shuō)明

    Python的functools模塊使用及說(shuō)明

    這篇文章主要介紹了Python的functools模塊使用及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息

    python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)半自動(dòng)化發(fā)送微信信息,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python之yield和return的對(duì)比分析

    python之yield和return的對(duì)比分析

    這篇文章主要介紹了python之yield和return的對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • PyTorch中的train()、eval()和no_grad()的使用

    PyTorch中的train()、eval()和no_grad()的使用

    本文主要介紹了PyTorch中的train()、eval()和no_grad()的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Python編寫一個(gè)多線程的12306搶票程序的示例

    Python編寫一個(gè)多線程的12306搶票程序的示例

    對(duì)于很多人來(lái)說(shuō),搶購(gòu)火車票人們成了一個(gè)令人頭疼的問題,本文主要介紹了Python編寫一個(gè)多線程的12306搶票程序的示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-09-09

最新評(píng)論

桐梓县| 额敏县| 翁源县| 湘西| 泊头市| 阿克| 和硕县| 庆元县| 曲沃县| 九龙城区| 浙江省| 湘乡市| 远安县| 穆棱市| 和林格尔县| 大连市| 巴彦淖尔市| 昌邑市| 凉山| 清新县| 永靖县| 故城县| 隆尧县| 玛纳斯县| 错那县| 鄂托克旗| 集贤县| 辉县市| 辽阳市| 顺平县| 芜湖市| 津市市| 贵溪市| 葵青区| 紫金县| 车险| 潜山县| 开江县| 常德市| 重庆市| 宣汉县|