Pythonでwavオーディオファイルをミックスする方法。2つの音声データを合成する。【Windows環境・pydubを使用】

wavオーディオファイルをPythonでミックスする方法です。2つの音声データの合成方法。

Pythonでオーディオミキシングをする方法あるのかな~と思っていたら、ありました。

pydubというPythonの音声処理用ライブラリを使います。

こちらが参考にした記事。

「How do I mix audio files using python?」
https://stackoverflow.com/questions/7629873/how-do-i-mix-audio-files-using-python

・やり方。まずは仮想環境を構築。

まず、僕の場合はpipenvで仮想環境を作成しました。
pipenv --python3.8

仮想環境を作成したら
.venv/Scripts/activate
でアクティベートさせましょう。

pipenvについては

Pythonのバージョン管理をPipenvにした話。Windows10ではPipenvがベストプラクティスな気がする。

こちらの記事をどうぞ。

・実際にオーディオをミックスするコードを書く。

お次はコードです。sing.pyというファイルを作り以下のように書きました。

from pydub import AudioSegment

sound1 = AudioSegment.from_file("piano.wav")
sound2 = AudioSegment.from_file("miku.wav")

output = sound1.overlay(sound2, position=0)

# save the result
output.export("mixed_sounds.wav", format="wav")

sing.py

同じフォルダの中に、
miku.wav
piano.wav
というファイルを置きます。

pydubというライブラリを入れる必要があるので
pipenv pydub
でインストール。
そして
python sing.py
というコマンドを打つと

mixed_sounds.wav

というファイルが生成されます。

聞いてみると2つのオーディオファイルが合成されてミキシングされているのが確認できるかと思います。

デモ:(「ミクはここだよ~」と急に流れるのでご注意下さい

今回は使いませんでしたが、ffmpegというものをパソコンに入れるとmp3も扱えるようになれるそうです。
mp3でもやろうとしたんですが、上手く動かなかったので、今回はwavファイルの方法のみになります。

以上です。何かの参考になれば幸いです!

参考:「pythonで音声処理」
https://qiita.com/nyancook/items/786cffd0b07bad8b4444

「PythonのPydubを利用して音声ファイルを処理する方法」
https://techacademy.jp/magazine/39369


なにか間違い等ございましたら @so_meru までご連絡いただけると幸いです。