Mac で、Radiko.jp タイムフリーの録音をコマンドでやってみる

2018年1月6日

 2018 年 12 月 19 日から Radiko.jp の仕様が変わったらしい。
 それまで、radikoro で出来ていた Radiko.jp のタイムフリー機能のダウンロードができなくなった
(録音はできるようになってました、どうもすみません。https://coffee-moon.black/radikoro-radiko-timefree/
 通常の予約録音は大丈夫なんだけどね。
 とはいえ、タイムフリーで配信されている番組を手元に残しておきたい場合、どうするか。ダウンロードするのは難しそうだけど、QuickTime Player を使った録音なら出来そう。
 しかし、どうせならターミナルのコマンドでやりたいな、と思い試してみた。


スポンサード リンク

 手順としては、

  1. soundflower のインストール
  2. 複数出力装置の設定
  3. SoX のインストール
  4. SoX での録音

 という感じ。

1. soundflower のインストール

 そもそも、Mac が発する音を録音するにはどうするか。
 Soundflower というのをインストールするんである。
 インストール方法については下記のサイト様が詳しい。

[Sierra対応] Macで鳴っている音を録音するには? | ひよわ日記

 上記のブログで詳しく解説されている通り、この soundflower と QuickTime Player があれば、とりあえず Mac で再生される音声は録音できる。
 日常的に使うのでなければ、これで十分かと思う。
 Mac が発する音はすべて録音に入ってしまうので、ビープ音とか時報とかには注意が必要だ。ゴミ箱にファイルを捨てる、くらいの操作でさえ「ばすっ」とか音がする。

 この soundflower っていうのは、スピーカに出すはずの音をマイクに全振りするので、スピーカに音声がいっさい届かない。つまり録音中は無音なんである。どうせなら、番組を聞きながら録音もしたい、という場合はどうするか。
 複数出力装置の設定をすれば、録音しながら音声も出力できる。

2. 複数出力装置の設定

 macOS に標準でインストールされている「Audio MIDI設定」というソフトウェアを使う。自分で説明せず、よそさまに頼ってばかりだが、下記サイト様が詳しい。

でらうま倶楽部 : macOS High Sierra でアプリの音声を録音する

 この設定がうまくいくと、マイクのほうとスピーカのほう、両方に音声が届くことになって、より録音しやすくなる。
 QuickTime Player の録音ボタンを押してから、radiko.jp のタイムフリーで番組を再生して、番組が終わったら停止ボタンを押す、という流れになるかと思う。

 しかし、録音の開始はともかく、停止くらいは時間がきたら勝手に止まってくれねーかな、と思うのが人情だ。
 QuickTime Player の録音機能では、録音時間の指定はできないようだし(Apple script を使えば出来そうなんだけど、わからない)。

 そこで、SoX というコマンドを利用させてもらうことにする。

3. SoX のインストール

 macOS 用パッケージマネージャー Homebrew を導入していれば簡単だ。


brew install sox

 で、インストールが始まる。
 Homebrew を使用していない場合は、下記 URL から SoX をダウンロードする。

SoX – Sound eXchange – Browse /sox at SourceForge.net

 現時点での最新バージョンは 14.4.2 だった。
 ダウンロードした zip ファイルを展開して、中にある「sox」「rec」「soxi」「play」というファイルをパスの通ったフォルダに配置するだけでいい。

 だいたいは /usr/local/bin/ に置くらしい。ファイダーの「移動」メニューから「フォルダへ移動」を選択、「/usr/local/bin/」と指定して [移動] ボタンをクリックする。bin フォルダがない場合は「/usr/local/」へ移動して、bin というフォルダを作ってしまう。

 もしくは、パスの通ったディレクトリ、というものを作ってしまうのもいい。

 ファインダーでホームフォルダ(家のアイコンがついたやつ)へゆき、[Command] + [Shift] + [ . ]キーを押す。
 「 . 」で始まる不可視ファイルが見えるようになるはずだ。
 ここに、なんか適当なフォルダを作る。ここでは「test」という名前のフォルダを作り、パスを通してみる。

 次に、ホームフォルダに「.bash_profile」というファイルを作る。
 CotEditor かなんかで、プレーンテキストに以下のように書きこむ。


export PATH=$PATH:~/test/

「test」と書いてある部分は、先ほど作ったフォルダと同じ名前にする。
 これをホームフォルダに保存。改行コードは LF 、文字コードは UTF-8 でいいと思う。ファイルの名前は「.bash_profile」とする。CotEditor の場合、「ドットで始まる名前はシステム用に予約されています」というような警告のダイヤログが出てくるが、かまわずに保存する。
 あるいは、「てきとう.txt」などの名前で保存して、ファインダーで名前を変えてもいい。この場合も警告が出てくるが、かまわずに名前を変更する。

 ターミナルを開く。すでに開いている場合はターミナルを再起動する。


echo $PATH

 を実行する。「usr/bin/」とかと共に「/Users/ホームの名前/test」が表示されれば成功だ。
 ホームフォルダへ戻って、[Command] + [Shift] + [ . ] を押し、不可視ファイルの設定を元に戻す。
 あとは、test フォルダに先ほどダウンロードした「sox」「rec」「soxi」「play」というファイルを移動すればインストールできたことになるはず。ターミナルを再起動して、


which sox

 を実行し、「/Users/ホームの名前/test/sox」が出てくれば成功。
 パスの通し方については下記サイト様を参考にさせていただいた。

MacでPATHを通す – Qiita

 ここまで、くれぐれも自己責任でお願いします。

4. SoX での録音

SoXチートシート – コマンドラインで音声編集 – Qiita

 上記サイト様に、SoX の使い方が書いてある。
 録音するには「rec」というコマンドを使用するようだ。
 まずはサウンド環境設定の出力装置を「複数出力装置」か「soundflower(2ch)」に設定して(「システム環境設定」のサウンドの項目で「メニューバーに音量を表示」にチェックを入れておくと便利である)、適当な音声を再生する。
 ターミナルでテストするには、


rec -n

 を実行する。「 [ -====|==== ] 」みたいなやつが動いていれば OK だ。
 [control] + [ c ] キーで停止する。
 実際に録音するには以下のようなコマンドでいいみたい。


rec Desktop/input.wav trim 0 30

 実行すると、デスクトップに input.wav という 30 秒のファイルが生成される。
「 rec 保存する場所/ファイル名.wav trim 0 録音時間(秒) 」
 という感じだ。
 録音時間は秒で入力する。
 一時間だったら 3600 、二時間だったら 7200 という具合。

 これで、停止ボタンを押さなくてもいい録音が実現したわけなんだけど、ひとつ、大きな問題がある。出来上がった wav ファイルが異様に大きいのだ。
 試しに 30 分番組を録音してみたら、635MB にもなってしまった。
 二時間番組なら、2GB を越えそうである。
 幸い、wav ファイルを右クリックすると現れる「サービス」のなかに「選択したオーディオファイルをエンコード」というのがある。
 これを実行すれば適切なサイズの m4a ファイルにしてくれる。
 635MB のファイルは、28MB まで縮んだ。

 ビットレート的なものを下げるとか、なんか方法がありそうなんだけど、ファイルサイズの大きさについては、なにかわかったらまた書こうかと思う。
 それと、radiko.jp のタイムフリーで番組を再生してから、あわててターミナルをクリックして、リターンキーを押し、コマンドを実行する、というのがイマイチ、スマートなやり方じゃない気がするな。

スポンサードリンク