daimac64's blog

50代からのWEBアプリ開発とその他もろもろの備忘録

老眼:技術書は電子書籍がオススメ

私は、中学生ぐらいから近視が始まり、乱視もきつい方らしいです。

40代中頃から老眼が始まり、基板のシルクを読むのが難しくなりました。

50歳前後で、PCのモニタを見ると頭痛がするようになり、メガネショップに相談すると メガネの度数を落とすことを勧められ、矯正後の視力を1.0から0.7に落とし、快適になりました。 それでもメガネをしたまま、スマホや読書は辛い。

ある日、スマホや読書は裸眼にすると快適であるとこに気づきました。読書の快適度は人生で一番かもしれません。

ここまでは、使い分けすれば問題ありませんでした。遠近両用なども不要。

しかし、技術書を読みながらコーディングしようとすると、これがやっかい。 メガネをつけたり、外したりの繰り返しです。

そこで、電子書籍

今までマンガやビジネス書などは電子書籍で購入し、iPad mini 等で読んでいました。

そこで、技術書を電子書籍にしてみました。電子書籍に変えてよかった点を挙げてみます。

電子書籍は、PCで読める

Kindleをはじめ、BookLive!、hontoなど電子書籍サイトの多くは、タブレットスマホだけでなく、PC用のReaderが提供されています。 PC上でこのReaderとIDE(開発環境)を並べて使用すると、当たり前ですが、メガネのON/OFFは、不要。Reader側の拡縮も可能。快適です。

技術書は分厚い!

技術書の多くは、雑誌を含めて大判であり、かつ分厚い。分厚いと読んでいるときに開いておくのも不便。 当然、持ち運びも大変。電子書籍にするとそれらが解決される。

技術書は高い!

技術書はとにかく高価である。名著と呼ばれるものは、中古であっても価格が下がらない。 絶版になっていたりすると、プレミアがついていたりする。 プレミアがついている場合でも、電子書籍の場合はまず定価以下で購入できる。さらにキャンペーンやクーポンを利用できれば、半額で購入できる機会もある。

田舎なので売っていない場合も多い

良い技術書でも、県内の書店に問い合わせても入荷されないケースや在庫がなくなると補充されないケースがしばしばあります。 Amazonなどで購入すればよいのですが、電子書籍の場合は、在庫切れもなく、クリックしてすぐに読めるのも利点でしょう。

当たり前のことばかりでしたが、今後、技術書は電子書籍で購入しようと思い至ったので書いてみました。

音声ファイルを分割

録音した音声ファイルを無音部分で分割したので適当なフリーソフトがないか検索しているとAnacondaで簡単に実現できることが分かった。

VS Codeの統合ターミナル(Windows/macOSを意識しなくてよくなる)で環境を整える。

動画・音声処理用のライブラリ FFMPEG をインストー

$ conda install -c menpo ffmpeg

音声データ処理用のライブラリ Pydub をインストー

$ pip install pydub

Windows版で、エラーが発生!

Unknown or unsupported command ‘install’

$ where pip

でpipのインストール状況を確認するとAnacondaの他にPerlのpipがインストールされていることがわかる

  • C:\Dwimperl\perl\bin\pip
  • C:\Dwimperl\perl\bin\pip.bat
  • C:\ProgramData\Anaconda3\Scripts\pip.exe

以下のいづれかの方法で対処できると思います。お好みで。

  • PerlをUninstallする
  • 環境変数Pathを再定義する
  • フルパスでAnacondaのpipを指定して使用する
  • Anacondaのpipのpathをカレントディレクトリにして実行

Mac版では、別のエラーが発生!

RuntimeWarning: Couldn’t find ffmpeg or avconv - defaulting to ffmpeg, but may not work

ffmpegがうまく認識できないいないようだ。 インストールのミス?

ffmpegへのパスは通っている。 ffmpegコマンドを実行するとPermission Denied。確かに実行権がない。

$ conda uninstall -c menpo ffmpeg

FFMPEGを一旦アンインストール。

アンインストール後、念のため、以下のフォルダを削除

Users/user/anaconda/pkgs/ffmpeg-x.x.x-0 (xは、バージョン番号)

その後、再インストールで正常に動作するようになりました。

$ conda install -c menpo ffmpeg

音声ファイルの分割方法は、以下の通りです。

"""
コマンドライン引数で指定されたカレントディレクトリのwavファイルを
無音部分で分割します。
分割されたwavファイルは、splitフォルダに保存されます。
"""

import sys          # モジュール属性 argv を取得するため
import datetime
from pydub import AudioSegment
from pydub.silence import split_on_silence

ARGVS = sys.argv  # コマンドライン引数を格納したリストの取得

ARGC = len(ARGVS) # 引数の個数

if ARGC != 2:   # 引数が足りない場合は、その旨を表示
    print("Usage: # python " + ARGVS[0] + " wavfilename")
    quit()         # プログラムの終了

NAME = ARGVS[1]

START = datetime.datetime.now()
print("-- 解析開始 -- ", START)

SOUND = AudioSegment.from_file("./" + NAME + ".wav", format="wav")

CHUNKS = split_on_silence(

    SOUND,

    # ms以上の無音がある箇所で分割
    min_silence_len=5000,

    # dBFS以下で無音とみなす
    silence_thresh=-16,

    # 分割後500msだけ、無音を残す
    keep_silence=500
)
END = datetime.datetime.now()
print("-- 解析終了 -- ", END, " elapsed_time:", (END - START))
# 分割数の表示
print("分割数:{0}".format(len(CHUNKS)))

for i, chunk in enumerate(CHUNKS):
    chunk.export("./split/"+ NAME + "_{0}.wav".format(i), format="wav")

実装速度はかなり遅いです。

45分のwavファイルを分割するのに10分程度かかりました。

マシンスペックは、以下の通りです。

インタプリタだからか?だったら、コンパイルしてみよう!

$ python -m compileall [ファイル名]
$ python __pycache__/[ファイル名].[Pythonのバージョン].pyc

処理時間同じだった。なんでだろう?

そうか単に難読化してるだけだったかぁ。

速度的には、こちらがよいかも? stabucky.com

Audacityのパラメータを同様に設定したが、同じように分割されない。なぜ?

Pythonに挑戦・環境を整える。

スクレイピング・機械化学習・音声ファイル編集とやりたいことがあるので Pythonの環境を準備することにしました。

本家からインストールするのかと思いきや すぐにPythonの実行環境の他に、NumpyやIPythonといったライブラリが必要になってくるので ANACONDAを利用するのがいいらしい。

Python3系で64ビットWindows版とmacOS版を用意した。

エディタは、Win/MacともVisual Studio Codeを使うことにしました。

VS Codeで Intellisense(コード補完)Linting(厳密な文法チェック)Debug等が行えるように、機能拡張をインストールします。 code.visualstudio.com

Web Application その2

ずいぶん前に下書きして公開してなかった!

CSSで装飾
  • プロジェクトに新しいフォルダ「Contents」を追加
  • このフォルダにスタイルシートを追加
  • ビューのhtmlの<head>要素にスタイルシートファイルをドロップして参照の追加
ここまでの話
MVC なのでデータバインディング

データバインドには、フレームワークKnockout.jsを使用するそうな。
あっ、以下の本に従って学習中です。

はじめてのASP.NET SPA開発入門 (マイクロソフト関連書)

はじめてのASP.NET SPA開発入門 (マイクロソフト関連書)

車の中でもBluetooth

クルマでも無線でiPhoneと接続できるFMトランスミッタを 2016年秋に購入しました。 先に購入していたBuletoothイヤホンとの連携が抜群で、 Bluetoothイヤホンをしようしたまま、乗車してエンジンをかけると FMトランスミッタに移行します。快適です。 マイクもついているので、そのまま通話やSiriも可能です。 USBも二個ついているのでiPhoneやBuletoothイヤホンの充電のこれ一台でOK!

お気に入りのBluetoothイヤホン

iPhone7 からイヤホンジャックがなくなると噂されていた2016夏に タイムセールで防汗機能付のBluetooth イヤホンを衝動買いしました。 ジムでPodcastを聞くのがメインだったので十分でした。 でも、しばらくしてこのイヤホンで音楽を聴いてみると全然ダメでした。

ある日、TT-BH10をなくした思い、TT-BH16を購入。 小型化、軽量化が進み、音質は格段に良くなり、 運動しながらmp3を聞くには十分でした。 マグネットが非常に便利で失くしにくいです。 TT-BH16が到着してすぐにTT-BH10は見つかりました。

有線のイヤホンは、CKM55を愛用しています。 BaseBoostが苦手で、ClubJazzやEDMを好んで聞いています。 CKM55は空間の広がり方が好きです。

株式会社オーディオテクニカ|一般製品|ATH-CKM55

写真で年齢判定

この冬に

BuriKaigi2017 in Toyama - connpass

Microsoft寺田@yoshioteradaさんがFace APIを紹介されていて遊んでみたいなぁと思っていたが、まだWEBアプリというものがピンと来ていなかった。日経ソフトウェア6月号に特集があったのでとりあえず写経。 今までWEBアプリには、サーバーが必要と勝手に追い込んでいた事が判明。 やはり、欧米人のデータで学習している為か日本人特に女性は若く判定される。

ちょまどの結果にも驚きでしたが、

40代半ばの義姉は、20代をたたき出していました。 FaceAPIを直接たたくのと、How-old.netで結果が異なるのが不思議でした。