bgm.xflから切り出したwavをそれっぽいoggに整える

必要になるたびメモを探すのでこっちにも残しておく。
oggSplitを使用するため、OSにUbuntuの入っている環境が必要になり、大抵の場合は準備に手間がかかると思われる。

うろ覚えだが、対象は中身のエンコードがoggでヘッダや曲情報?がwaveと同様なファイルになっていたはずなので、正常なoggにする加工が必要となるが変換ではないため「整える」と表記する。
昔はWindowsのエンコード変換ツールでヘッダを無視できるものを使ってたはずなのだが、何だったか思い出せなかった。

手順


切り出し

X-Ripperやスペシャルねこまんま57号などでWAVを指定して切り出し。

ヘッダをoggとして整える

以下の手順はUbuntu 16.04で確認済み

頭の66バイトを削除する

tail -c +67 sample.wav > sample_tmp

必要となるoggSplitがoggvideotoolsパッケージに含まれるためインストール

sudo apt-get install  oggvideotools

oggSplitでヘッダを綺麗にする

oggSplit sample_tmp

oggSplit実行後に出力される「vorbis_0.oga」というファイルが目的物なので、oggに拡張子を変更

mv vorbis_0.oga sample.ogg

以上で1ファイルの処理が完了だが、不要な中間ファイルなどは適当に削除すること。

複数ファイルを纏めて処理する場合


ヘッダを整える部分は以下を使うと、カレントディレクトリ内をまとめて処理できる。

for file in `\find . -maxdepth 1 -name "*.wav" -type f`; do
  tail -c +67 $file > "${file:0:-4}_tmp"
  oggSplit "${file:0:-4}_tmp"
  mv vorbis_0.oga "${file:0:-3}ogg"
done

Ubuntu 16.04でKVM仮想マシンからブリッジを通る通信のNetfilterをオフにする設定

全部Ubuntuマニュアルのsysctl.dディレクトリについてのページで書いてあることそのままだけど、sysctl.dの設定方法の一例として説明されているので気づくのに時間かかった。
試してはいませんが、マニュアルを見る限りubuntu 12.04以降で有効な設定みたい。

設定方法


以下2つの内容の設定ファイルを作成する。

/etc/udev/rules.d/99-bridge.rules

ACTION=="add", SUBSYSTEM=="module", KERNEL=="br_netfilter", \
RUN+="/lib/systemd/systemd-sysctl --prefix=/net/bridge"

/etc/sysctl.d/bridge.conf

net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

これでbr_netfilterモジュールが読み込まれたときにbridge.confの設定が適用されます。
設定を有効にするには再起動が必要になるので注意が必要です。

こちらでは紹介しませんが、マニュアルにはモジュールの強制読み込みと一緒に設定を適用する方法も書いてあります。

上記設定にたどり着いた理由とか


Netfilterをオフにしない場合どう見えるか

意識して制御していなければ、おそらく以下の図のようになります。

仮想ブリッジ上でtcpdumpを取ると、仮想マシン/端末の双方から送ったパケットが見えますが、その先には届きません。

/etc/sysctl.confまたは/etc/ufw/sysctl.confに設定を記述する方法

以下のファイルに設定を入れる方法も試しましたが、起動時に設定適用されなかった。

  • /etc/sysctl.conf
  • /etc/ufw/sysctl.conf

ついでに書くと、/etc/sysctl.d/以下にただ設定ファイルを作るだけというのもうまくいかなかった。

/etc/sysctl.confに設定を入れて起動時にsysctl -pする方法

inidやsystemctldで[sysctl -p]を実行するようにしても以下のエラーが出て適用できなかった。
このため、モジュールの読み込みタイミングより前に設定適用してしまっていると推測している。

Apr 23 00:12:29 server systemd-sysctl[397]: Couldn’t write ‘0’ to ‘net/bridge/bridge-nf-call-iptables’, ignoring: No such file or directory

Amazon EchoとGoogle Homeで手持ちの音楽を声で再生開始したい

  • 音声認識のソフトウェアや製品に興味があり、Amazon EchoとGoogle Homeも欲しくなってちょこちょこ調べた。
  • 製品を持っていないため、[どうすればできるか]を調べただけです。
  • スピーカーに向かって「~を再生して」みたいにできたらかっこよさそうだと思った。
  • 以下は2017年4月9日までに調べた内容であり、書いてる時点で既に古い情報となってる可能性もあります。

Amazon EchoとGoogle Homeについて


こんなとこ見る人は既に知ってると思うけど一応残しておく。

  • スマートスピーカーというカテゴライズの製品。
  • 話しかけると言葉を認識して答えてくれたり、アクションを起こしたりする。
  • まだ日本語には対応してない。
    • Echo は英語とドイツ語。
    • Home は英語のみ。
  • Amazon Echo/Google Homeのどちらも技適を取得していないため、国内で動作させると電波法違反になる可能性あり。

Amazon EchoでAmazon Musicにアップロードした曲を再生する場合


  • 現時点ではAmazon.comのアカウントで管理しないといけない。
    • そもそもAmazon.co.jpだとアップロードする機能無い。
  • アップロード可能曲数は、Amazon Music Storage Subscriptionsの有無で以下となる。
  • アップロード方法はここを参照。
    • WindowsかMACのアプリケーションでアップロードできる。

ボイスコマンド

  • ボイスコマンドはここの[Basic Music Commands]と[Advanced Music Commands]の項目を参照。
  • 曲名/アルバム名/アーティスト名/ジャンル名 を指定して再生できる。
    • 当然ながら現時点で指定できるのは英語の名前のみ。
  • また、プレイリストを作成し、プレイリスト名を指定することもできる。

Google HomeでGoogle Play Musicにアップロードした曲を再生する場合


ボイスコマンド

  • ボイスコマンドはここの[Basic voice commands for all content providers]と[Advanced voice commands for free and subscription services -> Google Play Music]の項目を参照。
  • 現時点で、アップロードした曲はプレイリストの指定でのみボイスコマンドから再生可能。