Blog

RTTY のデコードを試す(5)

June 18, 2021

前回はサンプリングレートや量子化ビット数を変更できるようにしましたが、 オリジナルのファイルから ffmpeg のデフォルト設定で wav に変換すると、 48kHz となり、実行時間が気になってきます。 そこで、高速化を試すことにしました。

真っ先に、リストに append したり pop したりするのは不安になってくるので、 array をリングバッファとして使いましょう。

その次はどこが遅いか調べます。cProfile なんかを使うとよさそうです。 調べてみると、一番遅いのは sum の呼び出しでしょうか。

windowsize で平滑化(?)していますが、毎回その全てを足し合わせるのは効率が悪いですね。 実質的にしなければいけないのは、windowsize 分だけ前の値を引いて、新しい値を足すことです。 別の class に切り出して、インデックスの管理もその中に任せましょう。

ファイルも分割したいですが、カレントディレクトリにある python ファイルを実行すると、 explicit relative import が使えないようなので、src ディレクトリ内にファイルを移動して、 python -m src.main のように呼び出すようにします。

** 演算子は、2乗とか決まっていたら乗算で書いた方が早いようですね。 値にあまり意味はなく (値に失礼)、大小を比較しているのみのため、sqrt も不要でしょう。 削除しましょう。

さて、ちまちまと高速化してきましたが、一番遅いのは多分 stdout です。ファイルに書くようにしましょう。 だいたい8倍くらいは高速になりました、多分。