Rubyから複数の音声ファイルを繋げる

Rubyから複数の音声ファイルを繋げる方法をまとめます。

soxを使用する

CUI上で音声ファイルを扱う時に便利なツールとして、soxがあります。

このsoxを使用します。

インストール

soxをMacにインストールします。

brew install flac sox chromaprint

Rubyからsoxを操作する

Rubyからsoxを操作するために、下記のライブラリを使用しました。

https://github.com/TMXCredit/ruby-sox

インストール

gemでインストールしました。

gem 'ruby-sox', github: 'TMXCredit/ruby-sox'

実装してみる

# 音声ファイルのパスの配列を定義
audio = ['/path/to/audio1.mp3',  '/path/to/audio2.mp3']
combiner = Sox::Combiner.new(audio, :combine => :concatenate)
combiner.write('/path/to/result.mp3')

これだけで、audio1.mp3とaudio2.mp3が繋がったファイルとして、result.mp3が書き出されます。

まとめ

soxはファイルと繋げるだけでなく、音声をフェードインさせたり、Mixさせたりと、いろいろな事ができるそうなので、いろいろ調べてみると楽しそうです。