英語などの語学用に倍速再生など再生速度を変えたファイルを一瞬で作成する方法

2018年7月9日Linux・Ubuntu Tips, Mac, Windowsffmpeg, 語学学習

語学用に使用するCDの多くが、正直「遅い」。従って、倍速ないし1.5倍速にしたくなるのが世の常なのであるが、コレが非常に面倒。

よく使用される方法は「Audacity」を用いる方法なのだが、ffmpegを使用すればピッチ(音の高さ)を変えることなくこれらを作成することが出来る。

ffmpegを用いた基本的なコマンド

非常に簡単で、次のようにしてあげれば良い。

ffmpeg -i [ファイル名] -af atempo=[倍速の設定] [アウトプットファイル名]

例えば二倍速の音源が作りたければ、次のようになる。

ffmpeg -i [ファイル名] -af atempo=2.0 [アウトプットファイル名]

atempoというパラメータをいじくってあげることで、ピッチを変更せずに倍速の音源を作成することが出来る。

CDのファイルを一括して二倍速に変更する

簡単なシェルスクリプトではあるが、次のようなスクリプトを組むと、CDに入っているファイルすべてを倍速に変更することが出来る。

#!/bin/bash

#####変更する場所######
OUTPUTDIR="./2xspeed/" ##出力先のフォルダ
TEMPO="2.0" ##変更する速度(2.0=倍速)
#####################

if [ ! -d ${OUTPUTDIR} ]
then
    mkdir ${OUTPUTDIR}
fi

(
    IFS=$'\n'
    for FILE in $@
    do

        BASENAME=${FILE##*/}     ##拡張子付きのファイル名

        if [[ "${BASENAME}" = "*" ]]
        then
           continue
        fi

       ffmpeg -i ${BASENAME} -af atempo=${TEMPO} ${OUTPUTDIR}${BASENAME}

    done
)

例えば上記を「speed.sh」というファイルに保存しよう。OUTPUTDIRとTEMPOは自由に変更していただいて構わない。上記の場合は、実行フォルダの直下に./2xspeed/というフォルダを作成し、TEMPOは2.0(=2倍速)とするようにしている。

このファイルを音源が入っているフォルダに入れ、下記の通り実行する。

./speed.sh *

そうすると、先ほど指定したフォルダのなかに、倍速となったファイルが出てくるはず。

元のメタデータは保存される

以下の通り、元のメタデータは保存される。

今回は中国語の教材で行ってみた。

元のファイル

Metadata:
major_brand : M4A
minor_version : 0
compatible_brands: M4A mp42isom
creation_time : 2016-10-30T09:27:10.000000Z
title : 第二十一课 句子
artist : 北京語言大学
composer : 康玉华 来思平 编著
album : 中国語会話301下
genre : Other
track : 1/38
disc : 1/3
date : 2006
compilation : 0
gapless_playback: 0
encoder : iTunes 12.5.2.35
album_artist : 北京語言大学
Duration: 00:01:45.56, start: 0.047891, bitrate: 173 kb/s
Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 171 kb/s (default)
Metadata:
creation_time : 2016-10-30T09:27:10.000000Z

作成したファイル

Metadata:
major_brand : M4A
minor_version : 512
compatible_brands: isomiso2
title : 第二十一课 句子
artist : 北京語言大学
album_artist : 北京語言大学
composer : 康玉华 来思平 编著
album : 中国語会話301下
date : 2006
encoder : Lavf57.61.100
genre : Other
gapless_playback: 0
compilation : 0
track : 1/38
disc : 1/3
Duration: 00:00:52.73, start: 0.000000, bitrate: 81 kb/s
Stream #0:0(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 80 kb/s (default)
Metadata:
handler_name : SoundHandler

倍速音源のメタデータを変更する

もしメタデータの名称を変更したい(例えばアルバムの名称に【二倍】と頭に付けるなど)場合は、次のようなオプションを加えてメタデータを変更してあげると良い。
なお、ffmpegのメタデータについては、以下のページが詳しい。

ffmpeg でメタデータを加える
特徴 メタデータは直接コマンドに書き込むと、メタデータを書き込んだファイルを読み込む2種類の方法がある メタデータファイルは UTF-8 でエンコードされた INI 形式のテキストファイルで構成される ファイル読み込みの場合にはヘッダに識別番号を付けてコマンドに...
-metadata "album"="中国語会話301下(2倍)"

ちなみに、二つ以上のメタデータを変更する場合、その都度「-metadata」を付与する必要がある。例えば、アルバムとアルバムアーティストを変更する場合には、つぎのような形となる。

-metadata "album"="あああああ" -metadata "album_artist"="いいいいい"

私もこれまでAudacityを使って二倍速の音源を作成していたのだが、この方法を試してみたところ音質も非常に良く、またピッチの変更も全くされていない状態であったので、すぐにこの方法に切り替えた。

語学の学習をしている場合には、「1.5倍速のファイル」「2倍速のファイル」などを用意して、シャドーイングなどをすることが非常に多い。その際にファイルをいちいち作っていくのは非常に手間であったのだが、これを用いれば一瞬で作業が完了する。

上記ではシェルスクリプトを使用しているが、Windows環境用のバッチファイルも簡単に作成できると思う(所詮、for文で回してあげるだけだ)。
是非お試しを。

執筆者紹介

Thir

最新のガジェットを購入してはレビューする、を繰り返しています。このブログでは、ガジェットの紹介のほか、各種サーバーやスマートホームの構築などを提供しています。最近はYouTubeでもレビュー動画やVlogをあげています。(プロフィール