<pythonオーディオライブラリ:Windowsでのpydubインストール構成、プロセスで発生した問題、および共通API>

4479 ワード


背景
  • B駅から逆さまの挑戦を見たばかりで体験したいと思い、一晩で基本的な実現を果たしました.このうち、再生部分にはpydubというオーディオライブラリが使用されており、非常に迅速で便利ですが、完全な構成でいくつかの穴を踏んでいます.特にその構成過程をここに記録して、みんなに便利です.
  • Windows10システム
  • < Pydub in Github >

  • 取付Pydub
  • Anaconda:Anaconda promptactivateを開いて作業環境に切り替えるには、pip install pydub
  • と入力します.
  • Pycharm:settingprojectpydubpip環境
  • に取り付ける.
    取付FFmpeg(またはlibavを選択)
  • ダウンロードFFmpeg
  • :対応するシステムバージョンを見つけてダウンロードします.
  • 圧縮パッケージを任意のディレクトリに解凍します.
  • インストールディレクトリの下にあるbinフォルダをシステムのPath環境変数に追加します.
  • 環境変数の追加に成功したら、cmdを開き、ffmpeg -versionと入力すると、バージョン情報が表示されます.

  • ダウンロードFFmpegパッケージ
  • は、以上のようにダウンロードを完了するほか、pythonFFmpegパケット
  • を導入する必要がある.
  • 同上Pydubパッケージ導入-pip install FFmpeg
  • .

    取付Pyaudio
  • は、純Pydubのみを使用して、WAVファイルを開いたり保存したりすることができる.WAV以外のファイル、例えばMP3を開くか保存するには、ffmepgまたはlibavが必要です.オーディオを再生する必要がある場合は、次のパッケージをインストールする必要があります.
  • simpleaudio
  • pyaudio
  • ffplay(通常はffmpegに装着)
  • .
  • avplay(通常はlibavに装着)
  • .
  • 公式サイトはsimpleaudioのインストールを強くお勧めしていますが、私が選んだのはpyaudioで、その後プログラムの他の部分が必要なので、pyaudioを直接選択しました.
  • パッケージ同上Pydub-pip install pyaudio
  • これでインストール構成が完了し、以下のコードをテストして実行できるかどうかを確認できます.
  • from pydub import AudioSegment
    from pydub.playback import play
    
    sound = AudioSegment.from_file("0.mp3", "mp3")
    play(sound)

    質問:[Errno 13]Permission denied
  • にはpydubffmpegがインストールされていますが、オーディオを再生するパッケージが不足しており、インストール後は表示されません.

  • 問題[WinError 2]システムで指定されたファイルが見つかりません
  • にはffmpegのいずれかが取り付けられており、もう1つが欠けており、取り付け後は表示されません.

  • 共通API
    XXXタイプのファイルを開く:
    mp4_version = AudioSegment.from_file("never_gonna_give_you_up.mp3", "mp3")
    wma_version = AudioSegment.from_file("never_gonna_give_you_up.wav", "wav")
    aac_version = AudioSegment.from_file("never_gonna_give_you_up.mp4", "mp4")

    オーディオセグメントのスライス
    # pydub              
    ten_seconds = 10 * 1000
    
    first_10_seconds = song[:ten_seconds]
    last_5_seconds = song[-5000:]

    オーディオセグメントの接続
    without_the_middle = beginning + end

    始まりをもっと响かせ终わりを弱くする
    #     6dB
    beginning = first_10_seconds + 6
    
    #     3dB
    end = last_5_seconds - 3

    繰り返し
    #        
    do_it_over = with_style * 2

    逆さまに置く
    #            
    ted = AudioSegment.from_file("ted.mp3")
    #           backwards
    backwards = ted.reverse()

    結果/オーディオフォーマット変換の保存
    awesome.export("mashup.mp3", format="mp3")

    オーディオの一括処理
    from pydub import AudioSegment
    
    # i   0   9   
    for i in range(10):
        #       00i.m4a   
        temp = AudioSegment.from_file(f"00{i}.m4a")
        #   00i.m4a       00i.mp3
        temp.export(f"  00{i}.mp3")
        #      
        backplay = temp.reverse()
        #           00i.mp3
        backplay.export(f"  00{i}.mp3")
    #     done     
    print("done")

    例を挙げます.
    from glob import glob
    from pydub import AudioSegment
    
    playlist_songs = [AudioSegment.from_mp3(mp3_file) for mp3_file in glob("*.mp3")]
    
    first_song = playlist_songs.pop(0)
    
    #             30  (        )
    beginning_of_song = first_song[:30*1000]
    
    playlist = beginning_of_song
    for song in playlist_songs:
        #                 ,        10    
        playlist = playlist.append(song, crossfade=(10 * 1000))
    
    #                 
    playlist = playlist.fade_out(30)
    
    #  ……         ( len(audio_segment)            )
    playlist_length = len(playlist) / (1000*60)
    
    #       !
    out_f = open("%s_minute_playlist.mp3" % playlist_length, 'wb')
    
    playlist.export(out_f, format='mp3')