Cara menggunakan pydub pustaka pemprosesan audio Python

WBOY
Lepaskan: 2023-05-06 11:58:06
ke hadapan
1929 orang telah melayarinya

    1.Pemasangan

    Hanya gunakan pip untuk memasang (kebergantungan ffmpeg juga perlu dipasang, disyorkan untuk menggunakan arahan conda untuk memasang, anda tidak perlu mengkonfigurasi persekitaran):

    pip install pydub
    Salin selepas log masuk

    2 Import dan baca fail audio

    from pydub import AudioSegment
    audio = AudioSegment.from_file("path/to/file")
    Salin selepas log masuk

    3 Mainkan audio

    from pydub.playback import play
    play(audio)
    Salin selepas log masuk

    Tempoh audio

    rreee

    5. Pemotongan audio

    duration = audio.duration_seconds # 单位为秒
    Salin selepas log masuk

    6 Penggabungan audio

    # 前10秒
    audio = audio[:10000]
    
    # 后10秒
    audio = audio[-10000:]
    
    # 从第10秒开始到第20秒结束
    audio = audio[10000:20000]
    
    # 从第10秒开始到结尾
    audio = audio[10000:]
    
    # 从开始到第10秒audio = audio[:10000]
    Salin selepas log masuk

    7 Penukaran audio

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

    8 kepada bahagian yang sama

    audio.export("path/to/new/file", format="mp3")
    Salin selepas log masuk

    10. Kod lengkap

    Berikut ialah kod lengkap yang digunakan untuk memotong audio sebelum dan selepas, dan membahagikan audio kepada segmen kecil dengan panjang yang sesuai untuk disimpan.

    # 增加10分贝
    louder_audio = audio + 10
    
    # 减小10分贝
    quieter_audio = audio - 10
    Salin selepas log masuk

    Kes aplikasi

    1 Tukar fail audio kepada format yang ditentukan

    # 等分分割,按大概每三分钟进行分割
    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")
    Salin selepas log masuk

    2 Gabungkan berbilang fail audio ke dalam satu fail

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 输出视频时长
    print('视频时长:', audio.duration_seconds / 60)
    
    # 前后切割
    start = int(input('前切割n秒,不切割输入0'))*1000
    end = int(input('后切割n秒,不切割输入0'))*1000
    if start:
        audio = audio[start:-end]
    
    # 计算合适的分割长度
    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('分割后的时长:', chunk.duration_seconds / 60)
        chunk.export("path/to/new/file{}.wav".format(i), format="wav")
    Salin selepas log masuk

    3

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 转换为mp3格式并保存
    audio.export("path/to/new/file.mp3", format="mp3")
    Salin selepas log masuk

    4. Laraskan kelantangan audio

    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")
    Salin selepas log masuk

    Kes: Pisahkan lagu dalam audio dengan mengenal pasti bunyi kosong

    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")
    Salin selepas log masuk
    Pertama, kami Gunakan Segmen Audio. kaedah from_file() untuk membaca fail audio, dan tetapkan parameter pembahagian min_silence_len, silence_thresh dan keep_silence masing-masing untuk mewakili panjang senyap minimum, ambang senyap dan panjang senyap dikekalkan. Antaranya, semakin kecil ambang senyap, semakin banyak segmen kecil akan dibahagikan, tetapi pembahagian yang salah mungkin berlaku, sebaliknya, semakin besar ambang senyap, semakin sedikit segmen yang akan dibahagikan, tetapi pembahagian yang terlepas mungkin berlaku.

    Kemudian, kami mengira bilangan bahagian num_segmen, iaitu, berapa banyak segmen fail audio dibahagikan. Di sini kita mengandaikan bahawa setiap lagu adalah kira-kira tiga minit, dan mengira berapa banyak segmen yang perlu dibahagikan kepada.

    Akhir sekali, kami menggunakan kaedah split_on_silence() untuk membelah fail audio, menetapkan parameter pisah dan melaraskan ambang senyap secara berterusan melalui gelung sehingga bilangan segmen tersegmen memenuhi jangkaan. Jika perpecahan berjaya, lompat keluar dari gelung jika tidak, teruskan mencuba.

    Ringkasnya, pydub ialah perpustakaan pemprosesan audio yang sangat praktikal yang boleh melakukan pemprosesan audio, penukaran, penggabungan dan operasi lain dengan mudah. Pada masa yang sama, pydub juga mempunyai senario aplikasi yang kaya, seperti membuat nada dering, melaraskan kelantangan, dsb. Perlu diingat bahawa apabila menggunakan pydub, anda perlu memberi perhatian kepada isu keserasian format audio.

    Selain itu, anda juga boleh melakukan operasi seperti pengekodan, penyahkodan, pencampuran dan pensampelan semula audio melalui pydub. Di bawah adalah beberapa contoh biasa operasi.

    Pengekodan, Pencampuran, Pensampelan Semula

    1. Codec

    from pydub import AudioSegment
    
    # 读取音频文件
    audio = AudioSegment.from_file("path/to/file")
    
    # 增加10分贝
    louder_audio = audio + 10
    
    # 减小10分贝
    quieter_audio = audio - 10
    
    # 保存调整后的音频
    louder_audio.export("path/to/new/file", format="wav")
    quieter_audio.export("path/to/new/file", format="wav")
    Salin selepas log masuk

    2

    Melalui pydub, kami boleh melakukan pengekodan audio, penyahkodan, pencampuran, pensampelan semula dan operasi lain dengan mudah, seterusnya mengembangkan senario aplikasi pydub. Perlu diingat bahawa semasa menjalankan operasi pencampuran audio, adalah perlu untuk memastikan bahawa kadar pensampelan, bilangan bit pensampelan dan bilangan saluran bagi kedua-dua fail audio adalah sama.

    Akhir sekali, mari kita ringkaskan kelebihan dan kekurangan pydub.

    Kelebihan:

    Ringan: pydub ialah perpustakaan pemprosesan audio ringan yang mudah dipasang dan digunakan.

    Fungsi yang kaya: pydub menyediakan pelbagai fungsi pemprosesan audio, termasuk memotong, menggabungkan, menukar, melaraskan volum, pengekodan dan penyahkodan, pencampuran, pensampelan semula, dsb.

    Aplikasi luas: pydub mempunyai pelbagai senario aplikasi, termasuk pemprosesan audio, pengeluaran nada dering, penukaran format audio, pengecaman pertuturan, dsb.

    Kelemahan:

    Keserasian terhad dengan format: pydub mempunyai keserasian terhad dengan format audio dan tidak menyokong semua format audio Audio perlu ditukar kepada format yang disokong sebelum memproses .

    Prestasi biasa-biasa: Apabila pydub memproses fail besar, prestasinya mungkin purata, memerlukan masa dan sumber pengkomputeran tertentu.

    Tidak menyokong penstriman: pydub tidak menyokong penstriman, dan keseluruhan fail audio perlu dibaca ke dalam memori, menghasilkan jejak memori yang besar.

    Ringkasnya, pydub ialah perpustakaan pemprosesan audio yang kaya dengan ciri dan digunakan secara meluas. Apabila menggunakan pydub, anda perlu memberi perhatian kepada isu keserasian format audio, dan memberi perhatian kepada prestasi dan penggunaan memori semasa memproses fail besar. Jika anda perlu mengendalikan tugas audio yang lebih kompleks, anda boleh mempertimbangkan untuk menggunakan perpustakaan pemprosesan audio lain yang lebih profesional.

    Atas ialah kandungan terperinci Cara menggunakan pydub pustaka pemprosesan audio Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Label berkaitan:
    sumber:yisu.com
    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
    Tutorial Popular
    Lagi>
    Muat turun terkini
    Lagi>
    kesan web
    Kod sumber laman web
    Bahan laman web
    Templat hujung hadapan
    Tentang kita Penafian Sitemap
    Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!