語学学習に最適!RTL-SDR.COMを用いたAMラジオ予約録音ソフトの製作

Radio

NHKラジオの語学放送は、AM放送の他に「らじる・らじる」というネット配信もしており、語学学習に活用されている方もおられると思います。

しかし「らじる・らじる」は、録音が出来ない、聞き逃しは前週分しか配信されない、聞き逃しするとCDを買うしかない、という大きな不満があります。「らじる・らじる」を録音する方法はこちらの記事を参照。

さらに語学放送を行うNHK第2放送は、ワイドFM放送(90MHz~95MHz)で中継放送(一部地域除く)を行わない鬼仕様になっており、FM放送のきれいな音声で聴くことも許容されていません。

そこで汎用USBチューナーを使ったずっと無料で使えるAM放送の予約録音プログラムを作ることにしました。

注記)前回製作したFM放送の予約録音ソフトを改修して製作しています。本記事は一部重複する部分がありますので、あらかじめご了承願います。

FM放送版ソフトからの変更点

AM放送はきれいに復調するのが意外と難しいため、復調回路(GNURadioフローグラフ)は自作AMラジオ復調回路を実装することにしました。

また語学放送スケジュールは、月~金の5回分がワンセットとなりますので、予約スケジュールの繰り返し指定を語学放送に特化させた形に仕様調整を行っています。

  • AMラジオ受信ソフトを呼び出して現在の放送受信とアンテナチューニングを可能とした
  • 語学放送は毎日録音であるため、曜日選択を削除した
  • 録音回数の設定はシンプルに録音回数選択方式とした
  • USBチューナー選択(入力デバイス選択)のデフォルトをAM受信専用とした

必要とするUSBチューナーとPC動作環境

本ソフトウェアの動作環境は次の通りです。

  • Windows10 64bit (PC性能はそれほどいりません)
  • USBチューナのドライバーzadigがインストール済み(インストール要領はこちら
  • 動作確認チューナー:RTL-SDR.COM blog V3, HackRF one(firmware 2018.01)
  • アンテナは中波帯域用のループアンテナ(バリコン付き)がおすすめ

このソフトで受信に使うUSBチューナーはRTL-SDR.COMがオススメです。HackRF oneはファームウェアで機能動作をさせているため、安定受信できるまでに時間がかかり、最悪失敗することがあります。

機器の接続は、USBチューナー、アンテナをPCにつなげるだけです。詳細はこちらの記事を参照してください。

ソフトの入手とインストール

ソフトウェアは3つのプログラムで構成していますので、下部のリンクよりダウンロードしてください。exe化により容量が大きくなっていますのでネット環境に注意してください。

  • jam_rec_04:プログラム本体、予約受信・録音プログラム(69MB)2022.2.27 rev.up
  • jamradio_tuner01:現在のAM放送を受信するプログラム(83MB)

ダウンロードしたファイルは、録音データ保存に適したフォルダへ移動して、zipファイルを展開します。

本ソフトはPCのプログラムフォルダへインストールする必要はありませんが、3つとも同一フォルダにいれてください。展開先のフォルダを開いてファイルが以下の構成であれば大丈夫です。

録音データは未圧縮のWAVファイル(CD音質:90分で700MB程度)となりますので、長時間の録音をする場合はディスクの空容量に注意してください。

GNURadio(GPLv3)を使っている関係から、sourceフォルダにソースファイル(pyファイル)を添付していますが、削除しても動作に支障はありません。

本ソフトの使用方法

このソフトウェアで「AMラジオの受信」「予約録音」ができます。

予約は繰り返し回数の指定のみとし、曜日指定は出来ません。

AMラジオはモノラルのみの復調とし、チューナーソフトの周波数ステップは9kHzに設定しています。

USBチューナー、録音ソフトとも約2.5MHzでサンプリングしていますので、AM放送の帯域全部を出来ます。

ソフトを起動する

jam_rec_03をダブルクリックで起動すると、以下のGUIウィンドウ画面が出ます。

この画面でパラメータを決めて、サブプロセスに引数を渡して、受信や予約録音を実現しています。

非常にシンプルな構成ですので直感的に使うことが出来ます。

USBチューナーのデフォルトは、AM放送受信用の「rtl=0,direct_samp=2」としています。HackRF oneを使う場合は、USBチューナーを「hackrf=0」に設定してください。

周波数、開始時刻、録音時間の初期値は、お住まいの地域により任意に変更ができるように設計しましたが、その方法は後述します。

現在の放送を試聴する

まず総務省のHPなどで近隣の放送局を確認し、受信する周波数を調べます。※本記事は、大阪のNHK第2放送(828kHz)で設定しています。

AM周波数の欄に受信周波数を入れて、「AM放送を聴く」をクリックすると、チューナプログラムが起動され、すぐにAM放送を聴くことが出来ます。

チューナープログラムの受信周波数は「AM周波数」で設定した値で起動しますが、周波数は受信プログラムのウィンドウ内のスライダー操作で変更も可能です。

予約操作の前に電界強度が大きくなるようアンテナの向き・角度の調整をしておくことで、良い音質で録音することが出来ます。TECSUN AN-200のようにバリコンがついたループアンテナをお持ちの場合は、バリコンのダイヤル調整にで電解強度が最大になるよう調整します。

強電界地域は、電波の電界強度が強すぎて、RF回路のトランジスタが飽和することにより、バリバリというノイズ音になることがありますので、バリコン調節は綺麗に聴こえる位置に合わせます。

またAM放送帯の電波の伝搬は、大気(電離層)の状態によりかなり変動します。特に太陽の影響を受けやすい昼間は、受信状態が良くない場合があります。NHKの語学放送は、朝・昼・夜と3回で同じ放送をしていますので、録音は朝イチか、夜が良いと思います。

チューナーが動作すると、コマンドウィンドウに動作ログが表示されますので、エラーがないかも確認しておくと安心です。

828 rtl=0,direct_samp=2
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio v3.8.2.0-57-gd71cd177
built-in source types: file rtl rtl_tcp uhd hackrf bladerf airspy airspyhf soapy redpitaya
Using device #0 Realtek RTL2838UHIDIR SN: 00000001
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Enabled direct sampling mode, input 2
gr::pagesize: no info; setting pagesize = 4096

試聴が終わったら、閉じるボタンを押して、予約録音に進んでください。

予約録音をする

無事に受信できることが確認出来ましたら、GUI画面より開始時刻、録音回数(繰り返し回数)、録音時間を設定します。

入力した値の確認を確認して「AM放送を予約」をクリックすると、予約録音プログラムが起動し、録音待ちになります。

AM Radio Recorder Ver.0.4 Copyright 2022 falconblog.org. All rights reserved.
Recording schedule = Next Day(times=1) 11:31
Dulation Time = 1.0min

予約録音をキャンセルする場合は、起動時に表示されたコマンドプロンプト上からCtrl+cを入力し、jプログラム動作を強制停止してください。(✕のクリックでは終了できません)

録音開始時刻になるとコマンドプロンプトウィンドウ上にチューナーの動作状態が表示され、録音を始めます。

AM Radio Recorder Ver.0.4 Copyright 2022 falconblog.org. All rights reserved.
Recording schedule = Next Day(times=1) 11:31
Dulation Time = 1.0min
gr-osmosdr 0.2.0.0 (0.2.0) gnuradio v3.8.2.0-57-gd71cd177
built-in source types: file rtl rtl_tcp uhd hackrf bladerf airspy airspyhf soapy redpitaya
Using device #0 Realtek RTL2838UHIDIR SN: 00000001
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Enabled direct sampling mode, input 2
gr::pagesize: no info; setting pagesize = 4096
Now Recording... Dulation Time = 60
Finish to Recording.

「Finish to Recording.」が表示されると録音が終了です。

次の繰り返し予約がなければ、GUI画面とコマンドウィンドウが閉じて、予約録音プログラムが自動終了します。

録音後フォルダを確認すると、WAVファイル形式の録音データが生成されています。

ファイル名は周波数、日時、開始時刻が自動で割り振られて保存されますので、重複することは無いと思います。

  • wavファイル記録様式:am_(周波数)_(日時)_(開始時刻).wav

Wavファイルは容量が大きいため、VLC media playerなどのフリーソフトでmp3形式に圧縮変換しておくと容量を減らすことが出来ます。mp3データをSDカードに保存し、スマホやカーナビでも学習できるようになります。

Ver.0.4よりクラウド・ネットワークドライブ保存に対応しました。録音データをone driveやgoogle driveへ保存することにより、外出先のPCやスマホでも録音再生が出来るようになり利便性が飛躍的に向上しました。

起動時の初期値変更も可能

起動時の周波数、録音開始時刻、録音時間は、settings_am.iniの書き換えにより変更出来るようにしています。

Windowsのメモ帳などで開いて編集し、[SECTION1]の値をお住まいの地域や放送局に合わせて適宜変更すると、数値入力の手間が省けます。

[DEFAULT] ↓DEFAULTはそのまましてください(変更しても反映されません)
data1 = 828
data2 = 06:00
data3 = 16

[SECTION1] ↓SECTION1の値が反映されます
data1 = 828 →受信周波数 XXXXの形式で入力
data2 = 05:59 →録音開始時刻 YY:ZZの形式で入力、0時の場合は"00"と記載してください
data3 = 16 →録音時間 AA(分)の形式で入力
data4 = .\record\ →保存先の絶対パス、または、相対パスを入力 2バイト文字は使えません

注記)data4の設定値はすべて半角文字とする必要があります。one drive(Windows)やsamba(Linux)のクラウド・ネットワークドライブを使う場合は、保存フォルダ名を含む絶対パスをすべて半角文字にしてください

google driveを使う場合は、ルートフォルダ名が「マイドライブ」となっており保存先の設定ができませんので、data4をデフォルト値のままにしてプログラム本体をgoogle driveに配置して起動してください。

既知の制約と課題

現状、製作者本人が認識している制約や課題は以下の通りです。今後、いろいろ試行錯誤して、制約をできるだけ減らしていこうとは考えています。

  • 予約実行後は予約プログラムの終了待ちとしておりウィンドウ上で予約解除は出来ません。予約解除はコマンドプロンプトよりCtrl+Cを入力してプログラムを強制終了してください。
  • 予約待機中にUSBチューナ-を脱着すると正常に動作しないことがあります。USBチューナーを脱着した場合は、ソフトを終了、再起動して再度予約してください。
  • PCがスリープ動作するとプログラムが正常動作できません。予約を行うPCは「常にオン」に設定しておいてください。
  • AMステレオ放送での受信には対応していません。GNUradioにAMステレオ復調ブロックがないためですので、独自ブロックを作るスキルを身につけ次第、設計してみたいと思います。
  • 現在のプログラムは3本構成ですが、受信プログラムはGNUradioの生成コードを使っていることから、いまのところ1本化で動かせる目処は立っていません。
  • 保存形式がwavで未圧縮です。ファイルサイズは15分で60MBくらいになります。クラウド保存対応により通信容量が気になるレベルですのでmp3変換も組み込みたいと思います。

プログラム改定来歴

v.0.4 (2022.2.27)

  • 保存先フォルダをsettings_am.iniにて設定出来るようにしました。
  • pathに2バイト文字があるとエラーになりますのでpathは半角のみのサポートとなります。
  • 保存先に絶対パスを設定することでone driveなどのクラウド・ネットワークドライブにも対応します。(記載例:\\ROOM\share\documents\am_record\)
  • google driveは、ドライブパスに全角文字が含まれるので保存先に設定出来ません。google driveに録音データを保存する場合はプログラム本体をgoogle driveに配置して起動してください。

v.0.3

v.0.2→v.0.3における仕様変更は以下のとおりです。

  • FMラジオ受信ソフト(別途作成)を呼び出して現在の放送を視聴可能とした
  • 曜日選択をプルダウン方式に変更
  • 録音回数の設定を新設し、プルダウンによる選択方式とした
  • USBチューナー選択(入力デバイス選択)をプルダウンの選択方式とした

終わりに

この録音プログラムを約1ヶ月間を使ってみましたが、異常終了となるバグが概ね撲滅できましたので、リリースさせていただくことにしました。

本ソフトはpythonで作成していますので、pythonソースコードから起動するスキルを持っておられる方は、GNUradioが動作する環境(Windows, Linux)ならどれでも動かせると思います。

今後は、超小型で人気のラズパイ(ラズベリーパイ)でも動かしたりして、自宅内で録音専用サーバーとして構築してみようかと思っています。

この録音プログラムを使うことで、以前紹介していたNHKのらじる・らじるから聞き逃しを録音する方法も予約忘れや受信機材が不調のときにしか使わなくなりそうです。

本ソフトの機能についてバグやご要望などがあれば、本HPのお問い合わせページよりお知らせいただければ幸いです。

ダウンロードページにも掲載

ダウンロードページからもダウンロードすることが出来ますので、適宜ご利用ください。

NHK語学放送用テキストはkindle版がお得ですので紹介します。

紹介動画はこちら